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

From ArchWiki
Jump to: navigation, search
Line 68: Line 68:
 
從 AUR 安裝軟體包相對而言容易。基本上:
 
從 AUR 安裝軟體包相對而言容易。基本上:
  
# Acquire the tarball which contains the [[PKGBUILD]] and possibly other required files, like systemd-units and patches (but often not the actual code).
+
# 獲取壓縮包,其中包含 [[PKGBUILD]] 和其他所需檔案,像是 systemd-units 和修補程式 (但通常不會有原始碼)
# Extract the tarball (preferably in a folder set aside just for builds from the AUR) with {{ic|tar -xzf foo.tar.gz}}.
+
# {{ic|tar -xzf foo.tar.gz}} 將壓縮包解壓縮 (放在專門用來組建 AUR 的資料夾會比較好)。
# Run {{ic|makepkg}} in the directory where the files are saved ({{ic|makepkg -s}} will automatically resolve dependencies with pacman). This will download the code, compile it and pack it.
+
# 在存放這些檔案的目錄下執行 {{ic|makepkg}} ({{ic|makepkg -s}} 會自動以 pacman 解決相依性問題)。原始碼將會被下載、編譯並打包。
# Look for a README file in {{ic|src/}}, as it might contain information needed later on.
+
# {{ic|src/}} 找尋 README 檔,上面可能有之後需要的資訊。
# Install the resulting package with [[pacman]]:
+
# [[pacman (正體中文)|pacman]] 安裝產生的軟體包:
  
 
: {{bc|# pacman -U /path/to/pkg.tar.xz}}
 
: {{bc|# 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.
+
[[AUR Helpers|AUR 幫手程式]]提供對 AUR 的無縫存取。它們的功能種類眾多,但都能夠輕易搜尋、抓取 AUR 上的 PKGBUILD,並組建、安裝軟體。這些腳本檔案都可以在 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.'''}}
+
{{警告|在安裝來自 AUR 的組建材料這方面,從來沒有、且將來也不會有一個「官方」機制。'''所有 AUR 的使用者應該要對組建過程相當熟悉。'''}}
  
 
=== 預備條件 ===
 
=== 預備條件 ===
Line 88: Line 88:
 
  # pacman -S --needed base-devel
 
  # 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
 
  ~/builds
  
or if using ABS (the [[Arch Build System]]):
+
或者若使用 ABS ([[Arch Build System (正體中文)|Arch 組建系統]])
  
 
  /var/abs/local
 
  /var/abs/local
  
For more information on ABS read the [[Arch Build System]] article. The example will use {{ic|~/builds}} as the build directory.
+
更多 ABS 的相關資訊請閱讀 [[Arch Build System (正體中文)|Arch 組建系統]]一文。範例將會使用 {{ic|~/builds}} 作為組建目錄。
  
 
=== 獲取組建檔案 ===
 
=== 獲取組建檔案 ===

Revision as of 09:14, 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. 獲取壓縮包,其中包含 PKGBUILD 和其他所需檔案,像是 systemd-units 和修補程式 (但通常不會有原始碼)。
  2. tar -xzf foo.tar.gz 將壓縮包解壓縮 (放在專門用來組建 AUR 的資料夾會比較好)。
  3. 在存放這些檔案的目錄下執行 makepkg (makepkg -s 會自動以 pacman 解決相依性問題)。原始碼將會被下載、編譯並打包。
  4. src/ 找尋 README 檔,上面可能有之後需要的資訊。
  5. pacman 安裝產生的軟體包:
# pacman -U /path/to/pkg.tar.xz

AUR 幫手程式提供對 AUR 的無縫存取。它們的功能種類眾多,但都能夠輕易搜尋、抓取 AUR 上的 PKGBUILD,並組建、安裝軟體。這些腳本檔案都可以在 AUR 下找到。

警告: 在安裝來自 AUR 的組建材料這方面,從來沒有、且將來也不會有一個「官方」機制。所有 AUR 的使用者應該要對組建過程相當熟悉。

預備條件

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

接著選擇適當的組建目錄。組建目錄只是軟體包被建立、「組建」的所在目錄,它可以是任何一個目錄。常用目錄的範例:

~/builds

或者若使用 ABS (Arch 組建系統):

/var/abs/local

更多 ABS 的相關資訊請閱讀 Arch 組建系統一文。範例將會使用 ~/builds 作為組建目錄。

獲取組建檔案

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

另請參閱