Difference between revisions of "Arch User Repository (正體中文)"

From ArchWiki
Jump to: navigation, search
Line 52: Line 52:
 
== 歷史 ==
 
== 歷史 ==
  
The following items are listed for historical purposes only. They have since been superseded by the AUR and are no longer available.
+
以下提到的項目已經成為過去式。它們已被 AUR 取代並不再使用。
  
At the beginning, there was {{ic|<nowiki>ftp://ftp.archlinux.org/incoming</nowiki>}}, and people contributed by simply uploading the PKGBUILD, the needed supplementary files, and the built package itself to the server. The package and associated files remained there until a [[Package Maintainer]] saw the program and adopted it.
+
一開始有個站點 {{ic|<nowiki>ftp://ftp.archlinux.org/incoming</nowiki>}},貢獻的使用者將他們的 PKGBUILD、需要的補充檔案以及組建出來的軟體包上傳至伺服器。軟體包和相關檔案會留在伺服器上,直到有[[Package Maintainer|軟體包維護者]]願意認養它為止。
  
Then the Trusted User Repositories were born. Certain individuals in the community were allowed to host their own repositories for anyone to use. The AUR expanded on this basis, with the aim of making it both more flexible and more usable. In fact, the AUR maintainers are still referred to as TUs (Trusted Users).
+
之後,受信任使用者軟體庫 (Trusted User Repositories) 誕生了。社群中只有特定的成員可以放上自己的軟體庫供大家使用。AUR 就是這種基礎的延伸,目的是讓它變得更有彈性、更易於使用。事實上,AUR 維護者仍然被稱作是 TU (Trusted Users;受信任使用者)
  
 
== 搜尋 ==
 
== 搜尋 ==
  
AUR 網頁介面請到[https://aur.archlinux.org/ 這裡], and an interface suitable for accessing the AUR from a script (for example) can be found [https://aur.archlinux.org/rpc.php here].
+
AUR 網頁介面請到[https://aur.archlinux.org/ 這裡], 一個適合透過腳本檔存取 AUR 的介面 (範例) 可參考[https://aur.archlinux.org/rpc.php 這裡]
  
Queries search package names and descriptions via a MySQL LIKE comparison. This allows for more flexible search criteria (e.g. try searching for {{ic|tool%like%grep}} instead of {{ic|tool like grep}}). If you need to search for a description that contains {{ic|%}}, escape it with {{ic|\%}}.
+
查詢功能透過 MySQL LIKE 比較來搜尋軟體包名稱和描述。這可以讓搜尋規則更有彈性 (例如,嘗試搜尋 {{ic|tool%like%grep}},而非 {{ic|tool like grep}})。如果您需要搜尋包含 {{ic|%}} 的描述,記得加上逃脫字元,像這樣:{{ic|\%}}
  
 
== 軟體包安裝 ==
 
== 軟體包安裝 ==
  
Installing packages from the AUR is a relatively simple process. Essentially:
+
AUR 安裝軟體包相對而言容易。基本上:
  
 
# Acquire the tarball which contains the [[PKGBUILD]] and possibly other required files, like systemd-units and patches (but often not the actual code).
 
# Acquire the tarball which contains the [[PKGBUILD]] and possibly other required files, like systemd-units and patches (but often not the actual code).
Line 82: Line 82:
 
=== 預備條件 ===
 
=== 預備條件 ===
  
First ensure that the necessary tools are installed. The package group {{grp|base-devel}} should be sufficient; it includes {{pkg|make}} and other tools needed for compiling from source.
+
First ensure that the necessary tools are installed. The package group {{grp|base-devel}} should be sufficient; it includes {{pkg|make}} and other tools needed for compilcritiqued,ing from source.
  
 
{{警告|Packages in the AUR assume the {{grp|base-devel}} group is installed, and AUR packages will not list members of this group as dependencies even if the package cannot be built without them. Please ensure this group is installed before complaining about failed builds.}}
 
{{警告|Packages in the AUR assume the {{grp|base-devel}} group is installed, and AUR packages will not list members of this group as dependencies even if the package cannot be built without them. Please ensure this group is installed before complaining about failed builds.}}
Line 118: Line 118:
 
This should create a new directory called "foo" in the build directory.
 
This should create a new directory called "foo" in the build directory.
  
{{Warning|'''Carefully check all files.''' {{ic|cd}} to the newly created directory and carefully check the {{ic|PKGBUILD}} and any {{ic|.install}} file for malicious commands. {{ic|PKGBUILD}}s are bash scripts containing functions to be executed by {{ic|makepkg}}: these functions can contain ''any'' valid commands or Bash syntax, so it is totally possible for a {{ic|PKGBUILD}} to contain dangerous commands through malice or ignorance on the part of the author. Since {{ic|makepkg}} uses fakeroot (and should never be run as root), there is some level of protection but you should never count on it. If in doubt, do not build the package and seek advice on the forums or mailing list.}}
+
{{警告|'''Carefully check all files.''' {{ic|cd}} to the newly created directory and carefully check the {{ic|PKGBUILD}} and any {{ic|.install}} file for malicious commands. {{ic|PKGBUILD}}s are bash scripts containing functions to be executed by {{ic|makepkg}}: these functions can contain ''any'' valid commands or Bash syntax, so it is totally possible for a {{ic|PKGBUILD}} to contain dangerous commands through malice or ignorance on the part of the author. Since {{ic|makepkg}} uses fakeroot (and should never be run as root), there is some level of protection but you should never count on it. If in doubt, do not build the package and seek advice on the forums or mailing list.}}
  
 
  $ cd foo
 
  $ cd foo
Line 267: Line 267:
 
{{FAQ
 
{{FAQ
 
|question=我打算提交一份 PKGBUILD,有沒有好心人可以幫忙檢查有沒有錯誤?
 
|question=我打算提交一份 PKGBUILD,有沒有好心人可以幫忙檢查有沒有錯誤?
|answer=If you would like to have your PKGBUILD critiqued, post it on the aur-general mailing list to get feedback from the TUs and fellow AUR members. You could also get help from the [[ArchChannel|IRC channel]], #archlinux on irc.freenode.net. You can also
+
|answer=如果您想讓大家評論您的 PKGBUILD,把它貼到 aur-general 郵件清單,讓 TU 和 AUR 的成員可以發表他們的看法。也可以從 [[ArchChannel|IRC 頻道]],位於 irc.freenode.net 的 #archlinux 獲得幫助。您也可以使用 [[namcap]] 檢查 PKGBUILD 和產生的軟體包是否有任何錯誤。}}
use [[namcap]] to check your PKGBUILD and the resulting package for errors.}}
+
  
 
{{FAQ
 
{{FAQ
 
|question=我從 AUR 下載某個軟體,執行 makepkg 卻無法編譯;我該怎麼做?
 
|question=我從 AUR 下載某個軟體,執行 makepkg 卻無法編譯;我該怎麼做?
|answer=You are probably missing something trivial.
+
|answer=您可能是少了某些基本的東西。
  
# Run {{ic|pacman -Syyu}} before compiling anything with {{ic|makepkg}} as the problem may be that your system is not up-to-date.
+
# {{ic|makepkg}} 編譯任何東西之前,先執行 {{ic|pacman -Syyu}};很有可能是您的系統尚未完全更新。
# Ensure you have both "base" and "base-devel" groups installed.
+
# 確定您已經安裝 "base" "base-devel" 群組下的軟體包。
# Try using the "{{ic|-s}}" option with {{ic|makepkg}} to check and install all the dependencies needed before starting the build process.
+
# 嘗試在 {{ic|makepkg}} 後加上 "{{ic|-s}}" 選項,在開始組建以前檢查並安裝所有需要的相依軟體包。
  
Be sure to first read the PKGBUILD and the comments on the AUR page of the package in question.
+
確認先閱讀過 PKGBUILD,以及 AUR 該軟體包頁面的留言。
The reason might not be trivial after all. Custom CFLAGS, LDFLAGS and MAKEFLAGS can cause failures. It is also possible that the PKGBUILD is broken for everyone. If you cannot figure it out on your own, just report it to the maintainer e.g. by posting the errors you are getting in the comments on the AUR page.}}
+
問題的根源有時不那麼明顯。自訂的 CFLAGS, LDFLAGS MAKEFLAGS 可能會導致編譯失敗。也有可能是 PKGBUILD 本身的問題。如果您無法自行推敲出問題所在,直接向負責的維護者回報:例如在 AUR 頁面上留言,貼上錯誤訊息。}}
  
 
{{FAQ
 
{{FAQ
 
|question=重復性的組建過程有什麼方法可以加速?
 
|question=重復性的組建過程有什麼方法可以加速?
|answer=If you frequently compile code that uses gcc - say, a git or SVN package - you may find [[ccache]], short for "compiler cache", useful.}}
+
|answer=如果您經常使用 gcc 編譯程式碼 - 比如說 git SVN 軟體包 - [[ccache]] (compiler cache 的簡寫) 或許會對您有用處。}}
  
 
{{FAQ
 
{{FAQ
Line 291: Line 290:
 
{{FAQ
 
{{FAQ
 
|question=如何在不使用網頁介面的情況下上傳資料至 AUR?
 
|question=如何在不使用網頁介面的情況下上傳資料至 AUR?
|answer=You can use {{pkg|burp}}, {{AUR|aurploader}} or {{AUR|aurup}} &mdash; these are command-line programs.}}
+
|answer=您可以使用 {{pkg|burp}}, {{AUR|aurploader}} {{AUR|aurup}} &mdash; 它們是命令列下的程式。}}
  
 
== 另請參閱 ==
 
== 另請參閱 ==
 
* [https://aur.archlinux.org AUR 網頁介面]
 
* [https://aur.archlinux.org AUR 網頁介面]
 
* [https://www.archlinux.org/mailman/listinfo/aur-general AUR 郵件清單]
 
* [https://www.archlinux.org/mailman/listinfo/aur-general AUR 郵件清單]

Revision as of 04:56, 29 January 2014

Arch 使用者軟體倉庫 (AUR) 是由社群推動的使用者軟體庫。它包含了軟體包描述單 (PKGBUILD),可以用 makepkg 從原始碼編譯軟體包,並透過 Pacman 安裝。 透過 AUR 可以在社群間分享、組織新進軟體包,熱門的軟體包有機會被收錄進 community 軟體庫。這份文件將解釋如何存取、使用 AUR。

官方軟體庫中有不少發跡於 AUR 的新軟體包。在 AUR 下,使用者可以貢獻自己的軟體包組建資料 (PKGBUILD 與相關檔案)。AUR 社群可以投票支持/反對 AUR 的軟體包。若一個軟體包變得熱門 — 加上授權相容和優良的打包技術 — 就有機會被收錄進 community 軟體庫 (可直接透過 PacmanABS 存取)。

入門知識

使用者可以從 AUR 網路介面搜尋並下載各種軟體的 PKGBUILD。使用 makepkg 可以將這些 PKGBUILD 組建成軟體包,並使用 pacman 安裝。

  • 確定已經安裝 base-devel 群組的軟體包 (pacman -S --needed base-devel)。
  • 本文後面的章節有更多相關資訊,以及安裝 AUR 軟體包的簡短教學。
  • 有關 AUR 軟體的升級與相關事件,請至 AUR 網頁介面。您可以在那裡找到統計數據和 AUR 可用軟體包的最新清單。
  • 常見問題請參考 #FAQ
  • 在組建 AUR 軟體包之前,可以考慮調整 /etc/makepkg.conf,讓編譯器能針對您的處理器作效能優化。多核處理器的系統可以調整 MAKEFLAGS 變數,這樣編譯效率可以獲得明顯提升。使用者也可以透過 CFLAGS 變數來啟用 GCC 對特定硬體的優化。更多資訊請參閱 makepkg.conf

歷史

以下提到的項目已經成為過去式。它們已被 AUR 取代並不再使用。

一開始有個站點 ftp://ftp.archlinux.org/incoming,貢獻的使用者將他們的 PKGBUILD、需要的補充檔案以及組建出來的軟體包上傳至伺服器。軟體包和相關檔案會留在伺服器上,直到有軟體包維護者願意認養它為止。

之後,受信任使用者軟體庫 (Trusted User Repositories) 誕生了。社群中只有特定的成員可以放上自己的軟體庫供大家使用。AUR 就是這種基礎的延伸,目的是讓它變得更有彈性、更易於使用。事實上,AUR 維護者仍然被稱作是 TU (Trusted Users;受信任使用者)。

搜尋

AUR 網頁介面請到這裡, 一個適合透過腳本檔存取 AUR 的介面 (範例) 可參考這裡

查詢功能透過 MySQL LIKE 比較來搜尋軟體包名稱和描述。這可以讓搜尋規則更有彈性 (例如,嘗試搜尋 tool%like%grep,而非 tool like grep)。如果您需要搜尋包含 % 的描述,記得加上逃脫字元,像這樣:\%

軟體包安裝

從 AUR 安裝軟體包相對而言容易。基本上:

  1. Acquire the tarball which contains the PKGBUILD and possibly other required files, like systemd-units and patches (but often not the actual code).
  2. Extract the tarball (preferably in a folder set aside just for builds from the AUR) with tar -xzf foo.tar.gz.
  3. Run makepkg in the directory where the files are saved (makepkg -s will automatically resolve dependencies with pacman). This will download the code, compile it and pack it.
  4. Look for a README file in src/, as it might contain information needed later on.
  5. Install the resulting package with pacman:
# pacman -U /path/to/pkg.tar.xz

AUR Helpers add seamless access to the AUR. They vary in their features but can ease in searching, fetching, building, and installing from PKGBUILDs found in the AUR. All of these scripts can be found in the AUR.

警告: There is not and will never be an official mechanism for installing build material from the AUR. All AUR users should be familiar with the build process.

預備條件

First ensure that the necessary tools are installed. The package group base-devel should be sufficient; it includes make and other tools needed for compilcritiqued,ing from source.

警告: Packages in the AUR assume the base-devel group is installed, and AUR packages will not list members of this group as dependencies even if the package cannot be built without them. Please ensure this group is installed before complaining about failed builds.
# pacman -S --needed base-devel

Next choose an appropriate build directory. A build directory is simply a directory where the package will be made or "built" and can be any directory. Examples of commonly used directories are:

~/builds

or if using ABS (the Arch Build System):

/var/abs/local

For more information on ABS read the Arch Build System article. The example will use ~/builds as the build directory.

獲取組建檔案

Locate the package in the AUR. This is done using the search feature (text field at the top of the AUR home page). Clicking the application's name in the search list brings up an information page on the package. Read through the description to confirm that this is the desired package, note when the package was last updated, and read any comments.

Download the necessary build files by clicking on the "Download tarball" link under "Package actions" on the right hand side. This file should be saved to the build directory or otherwise copied to the directory after downloading. In this example, the file is called "foo.tar.gz" (standard format is pkgname.tar.gz, if it has been properly submitted).

Alternatively you can download the tarball from the terminal, changing directories to the build directory first:

$ cd ~/builds
$ curl -O https://aur.archlinux.org/packages/fo/foo/foo.tar.gz

組建軟體包

Change directories to the build directory if not already there, then extract the previously downloaded package:

$ cd ~/builds
$ tar -xvzf foo.tar.gz

This should create a new directory called "foo" in the build directory.

警告: Carefully check all files. cd to the newly created directory and carefully check the PKGBUILD and any .install file for malicious commands. PKGBUILDs are bash scripts containing functions to be executed by makepkg: these functions can contain any valid commands or Bash syntax, so it is totally possible for a PKGBUILD to contain dangerous commands through malice or ignorance on the part of the author. Since makepkg uses fakeroot (and should never be run as root), there is some level of protection but you should never count on it. If in doubt, do not build the package and seek advice on the forums or mailing list.
$ cd foo
$ nano PKGBUILD
$ nano foo.install

Make the package. After manually confirming the integrity of the files, run makepkg as a normal user.

$ makepkg -s

The -s switch will use sudo to install any needed dependencies. If the use of sudo is undesirable, manually install required dependencies beforehand and exclude the -s in the above command.

安裝軟體包

使用 pacman 安裝軟體包。A tarball should have been created named:

<application name>-<application version number>-<package revision number>-<architecture>.pkg.tar.xz

This package can be installed using pacman's "upgrade" command:

# pacman -U foo-0.1-1-i686.pkg.tar.xz   

These manually installed packages are called foreign packages — packages which have not originated from any repository known to pacman. To list all foreign packages:

$ pacman -Qm 
Note: The above example is only a brief summary of the package building process. A visit to the makepkg and ABS pages will provide more detail and is highly recommended, especially for first-time users.

回饋

The AUR Web Interface has a comments facility that allows users to provide suggestions and feedback on improvements to the PKGBUILD contributor. Avoid pasting patches or PKGBUILDs into the comments section: they quickly become obsolete and just end up needlessly taking up lots of space. Instead email those files to the maintainer, or even use a pastebin.

One of the easiest activities for all Arch users is to browse the AUR and vote for their favourite packages using the online interface. All packages are eligible for adoption by a TU for inclusion in community repository, and the vote count is one of the considerations in that process; it is in everyone's interest to vote!

軟體包分享與維護

Users can share PKGBUILDs using the Arch User Repository. It does not contain any binary packages but allows users to upload PKGBUILDs that can be downloaded by others. These PKGBUILDs are completely unofficial and have not been thoroughly vetted, so they should be used at your own risk.

提交軟體包

警告: Before attempting to submit a package you are expected to familiarize yourself with Arch Packaging Standards and all articles, mentioned at the bottom of it.

After logging in to the AUR web interface, a user can submit a gzipped tarball (.tar.gz) of a directory containing build files for a package. The directory inside the tarball should contain a PKGBUILD, .AURINFO, any .install files, patches, etc. (absolutely no binaries). Examples of what such a directory should look like can be seen inside /var/abs if the Arch Build System was installed.

The tarball can be created with the following command:

$ makepkg --source

Note that this is a gzipped tarball; assuming you are uploading a package called libfoo, when you create the file it should look similar to this:

$ tar tf libfoo-0.1-1.src.tar.gz
libfoo/
libfoo/PKGBUILD
libfoo/libfoo.install

When submitting a package, observe the following rules:

  • Check the official package database for the package. If any version of it exists, do not submit the package. If the official package is out-of-date, flag it as such. If the official package is broken or is lacking a feature, then please file a bug report.
  • Check the AUR for the package. If it is currently maintained, changes can be submitted in a comment for the maintainer's attention. If it is unmaintained, the package can be adopted and updated as required. Do not create duplicate packages.
  • Verify carefully that what you are uploading is correct. All contributors must read and adhere to the Arch Packaging Standards when writing PKGBUILDs. This is essential to the smooth running and general success of the AUR. Remember that you are not going to earn any credit or respect from your peers by wasting their time with a bad PKGBUILD.
  • Packages that contain binaries or that are very poorly written may be deleted without warning.
  • If you are unsure about the package (or the build/submission process) in any way, submit the PKGBUILD to the AUR mailing list or the AUR forum on the Arch forums for public review before adding it to the AUR.
  • Make sure the package is useful. Will anyone else want to use this package? Is it extremely specialized? If more than a few people would find this package useful, it is appropriate for submission.
  • The AUR and official repositories are intended for packages which install generally software and software-related content, including one or more of the following: executable(s); config file(s); online or offline documentation for specific software or the Arch Linux distribution as a whole; media intended to be used directly by software.
  • Gain some experience before submitting packages. Build a few packages to learn the process and then submit.
  • If you submit a package.tar.gz with a file named package in it you will get an error: "Could not change to directory /home/aur/unsupported/package/package". To resolve this, rename the file named package to something else; for example, package.rc. When it is installed in the pkg directory, you may rename it back to package.

維護軟體包

  • If you maintain a package and want to update the PKGBUILD for your package just resubmit it.
  • Check for feedback and comments from other users and try to incorporate any improvements they suggest; consider it a learning process!
  • Please do not just submit and forget about packages! It is the maintainer's job to maintain the package by checking for updates and improving the PKGBUILD.
  • If you do not want to continue to maintain the package for some reason, disown the package using the AUR web interface and/or post a message to the AUR Mailing List.

其他要求

  • Disownment requests and removal requests go to the aur-general mailing list for Trusted Users and other users to decide upon.
  • Include package name and URL to AUR page, preferably with a footnote [1].
  • Disownment requests will be granted two weeks after the current maintainer has been contacted by email and did not react.
  • Package merging has been implemented, users still have to resubmit a package under a new name and may request merging of the old version's comments and votes on the mailing list.
  • Removal requests require the following information:
    • Package name and URL to AUR page
    • Reason for deletion, at least a short note
      Notice: A package's comments does not sufficiently point out the reasons why a package is up for deletion. Because as soon as a TU takes action, the only place where such information can be obtained is the aur-general mailing list.
    • Include supporting details, like when a package is provided by another package, if you are the maintainer yourself, it is renamed and the original owner agreed, etc.

Removal requests can be disapproved, in which case you will likely be advised to disown the package for a future packager's reference.

community 庫

The community repository, maintained by Trusted Users, contains the most popular packages from the AUR. It is enabled by default in /etc/pacman.conf. If community has been disabled or removed, it can be enabled by uncommenting or adding these two lines:

/etc/pacman.conf
...
[community]
Include = /etc/pacman.d/mirrorlist
...

This repository, unlike the AUR, contains binary packages that can be installed directly with pacman and the build files can also be accessed with the ABS. Some of these packages may eventually make the transition to the core or extra repositories as the developers consider them crucial to the distribution.

Users can also access the community build files by editing /etc/abs.conf and enabling the community repository in the REPOS array.

Git 庫

A Git Repo of the AUR is maintained by Thomas Dziedzic providing package history among other things. It is updated at least once a day. To clone the repository (several hundred MB):

$ git clone git://pkgbuild.com/aur-mirror.git

More informations: Web interface, forum thread.

FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

另請參閱