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

From ArchWiki
Jump to: navigation, search
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 compilcritiqued,ing from source.
+
首先,確認已經安裝所需工具。有軟體包群組 {{grp|base-devel}} 應該就足夠了;它提供了 {{pkg|make}} 和其他編譯原始碼所需要的工具。
  
{{警告|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.}}
+
{{警告|AUR 的軟體包會假設 {{grp|base-devel}} 群組已經安裝,且 AUR 軟體包不會將這個群組下的軟體包列進相依性,即使沒有這些軟體包就無法組建。在報告組建失敗之前,請確認這個群組已經安裝。}}
  
 
  # pacman -S --needed base-devel
 
  # pacman -S --needed base-devel
Line 100: Line 100:
 
=== 獲取組建檔案 ===
 
=== 獲取組建檔案 ===
  
Locate the package in the AUR. This is done using the search feature (text field at the top of the [https://aur.archlinux.org/ 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.
+
AUR 透過搜尋功能 ([https://aur.archlinux.org/ AUR 首頁]頂端的文字欄位) 找到軟體包。點擊搜尋清單上的應用程式名稱,會出現該軟體包的資訊頁面。閱讀描述以確認這是您需要的軟體包,檢查該軟體包版本是否為最新,並閱讀留言。
  
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).
+
點擊右手邊 "Package actions" 的 "Download tarball" 連結下載所需組建檔案。這個檔案應該要存在組建目錄,或是下載後複製到組建目錄。在這個範例,檔案的名稱為 "foo.tar.gz" (若該軟體包有被正常提交,標準格式為 「'''軟體包名稱'''.tar.gz」)
  
Alternatively you can download the tarball from the terminal, changing directories to the build directory first:
+
或者您可以從終端機直接下載壓縮包,首先更換目錄到組建目錄:
  
 
  $ cd ~/builds
 
  $ cd ~/builds
Line 111: Line 111:
 
=== 組建軟體包 ===
 
=== 組建軟體包 ===
  
Change directories to the build directory if not already there, then extract the previously downloaded package:
+
將目錄換到組建目錄,並解壓縮先前下載的軟體包:
  
 
  $ cd ~/builds
 
  $ cd ~/builds
 
  $ tar -xvzf foo.tar.gz
 
  $ tar -xvzf foo.tar.gz
  
This should create a new directory called "foo" in the build directory.
+
這樣就會在組建目錄下建立一個名為 "foo" 的目錄。
  
{{警告|'''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.}}
+
{{警告|'''謹慎檢查所有檔案。''' {{ic|cd}} 進入新建目錄,並謹慎檢查 {{ic|PKGBUILD}} 以及任何 {{ic|.install}} 檔案,看有沒有任何有害指令。{{ic|PKGBUILD}} bash 腳本檔,包含要給 {{ic|makepkg}} 執行的函式:這些函式可包含「任何」符合 Bash 語法的有效指令,因此 {{ic|PKGBUILD}} 因惡意或過失行為而包含危險指令是絕對有可能的事。{{ic|makepkg}} 使用 fakeroot (絕對不會以 root 執行) 而有相當的保護,但您不應該一直靠它來保障安全性。若對某軟體包有任何疑問,先不要進行組建,到論壇或郵件清單尋求建議。}}
  
 
  $ cd foo
 
  $ cd foo
Line 124: Line 124:
 
  $ nano foo.install
 
  $ nano foo.install
  
Make the package. After manually confirming the integrity of the files, run [[makepkg]] as a normal user.
+
建立軟體包。手動確認檔案的完整性後,以一般使用者身分執行 [[makepkg]]
  
 
  $ makepkg -s
 
  $ makepkg -s
  
The {{ic|-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 {{ic|-s}} in the above command.
+
加上 {{ic|-s}} 將以 [[sudo]] 安裝所需相依性。如果不想使用 sudo,事前手動安裝所需相性,並拿掉上面指令的 {{ic|-s}}
  
 
=== 安裝軟體包 ===
 
=== 安裝軟體包 ===
  
使用 pacman 安裝軟體包。A tarball should have been created named:
+
使用 pacman 安裝軟體包。現在應該已建立一份壓縮檔:
  
  <''application name''>-<''application version number''>-<''package revision number''>-<''architecture''>.pkg.tar.xz
+
  <程式名稱>-<程式版本號>-<程式修訂版號>-<架構>.pkg.tar.xz
  
This package can be installed using pacman's "upgrade" command:
+
pacman 的「升級」(upgrade) 指令安裝此軟體包:
  
 
  # pacman -U foo-0.1-1-i686.pkg.tar.xz   
 
  # pacman -U foo-0.1-1-i686.pkg.tar.xz   
  
These manually installed packages are called foreign packages &mdash; packages which have not originated from any repository known to pacman. To list all foreign packages:
+
這些手動安裝的軟體包被稱為外來軟體包 &mdash; 就是來自非任何 pacman 所知軟體庫的軟體包。列舉所有外來軟體包:
 
  $ pacman -Qm  
 
  $ pacman -Qm  
  
{{Note|The above example is only a brief summary of the package building process. A visit to the [[makepkg]] and [[Arch Build System|ABS]] pages will provide more detail and is highly recommended, especially for first-time users.}}
+
{{註記|以上的範例只提供軟體包組建過程的簡略摘要。[[makepkg]] [[Arch Build System (正體中文)|ABS]] 頁面會提供更詳盡的資訊,相當建議新進 Arch 的使用者參閱。}}
  
 
== 回饋 ==
 
== 回饋 ==
  
The [https://aur.archlinux.org 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 Clients|pastebin]].
+
[https://aur.archlinux.org AUR 網頁介面]有留言功能,是使用者向 PKGBUILD 貢獻者提供建議、回饋或改進的平台。避免直接在留言區貼上修補程式碼或 PKGBUILD:它們很快就會過期,並佔用太多版面。可以將這些檔案放在 email 寄給維護者,或是使用 [[pastebin Clients|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|community]] repository, and the vote count is one of the considerations in that process; it is in everyone's interest to vote!
+
'''所有''' Arch 使用者來說,一個最簡單的參與就是瀏覽 AUR,透過線上介面'''投票'''給喜歡的軟體包。所有軟體包都有機會被 TU 認養,收錄進 [[#community|community]] 軟體庫,而得票數就是其中一項考量;每個人的投票都是有用的!
  
 
== 軟體包分享與維護 ==
 
== 軟體包分享與維護 ==
  
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.
+
使用者可以透過 Arch 使用者軟體庫 (AUR) '''分享''' PKGBUILD。它不包含任何二進位軟體包,但允許使用者上傳 PKGBUILD 供其他人下載。這些 PKGBUILD 不受官方支援,且尚未完全審核,若要使用必須先考慮相關風險。
  
 
=== 提交軟體包 ===
 
=== 提交軟體包 ===
Line 224: Line 224:
 
  $ git clone <nowiki>git://pkgbuild.com/aur-mirror.git</nowiki>
 
  $ git clone <nowiki>git://pkgbuild.com/aur-mirror.git</nowiki>
  
More informations: [http://pkgbuild.com/git/aur-mirror.git/ Web interface], [https://bbs.archlinux.org/viewtopic.php?id=113099 forum thread].
+
更多資訊:[http://pkgbuild.com/git/aur-mirror.git/ 網頁介面][https://bbs.archlinux.org/viewtopic.php?id=113099 論壇貼文]
  
 
== FAQ ==
 
== FAQ ==

Revision as of 10:01, 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 的使用者應該要對組建過程相當熟悉。

預備條件

首先,確認已經安裝所需工具。有軟體包群組 base-devel 應該就足夠了;它提供了 make 和其他編譯原始碼所需要的工具。

警告: AUR 的軟體包會假設 base-devel 群組已經安裝,且 AUR 軟體包不會將這個群組下的軟體包列進相依性,即使沒有這些軟體包就無法組建。在報告組建失敗之前,請確認這個群組已經安裝。
# pacman -S --needed base-devel

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

~/builds

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

/var/abs/local

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

獲取組建檔案

在 AUR 透過搜尋功能 (AUR 首頁頂端的文字欄位) 找到軟體包。點擊搜尋清單上的應用程式名稱,會出現該軟體包的資訊頁面。閱讀描述以確認這是您需要的軟體包,檢查該軟體包版本是否為最新,並閱讀留言。

點擊右手邊 "Package actions" 的 "Download tarball" 連結下載所需組建檔案。這個檔案應該要存在組建目錄,或是下載後複製到組建目錄。在這個範例,檔案的名稱為 "foo.tar.gz" (若該軟體包有被正常提交,標準格式為 「軟體包名稱.tar.gz」)。

或者您可以從終端機直接下載壓縮包,首先更換目錄到組建目錄:

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

組建軟體包

將目錄換到組建目錄,並解壓縮先前下載的軟體包:

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

這樣就會在組建目錄下建立一個名為 "foo" 的目錄。

警告: 謹慎檢查所有檔案。 cd 進入新建目錄,並謹慎檢查 PKGBUILD 以及任何 .install 檔案,看有沒有任何有害指令。PKGBUILD 為 bash 腳本檔,包含要給 makepkg 執行的函式:這些函式可包含「任何」符合 Bash 語法的有效指令,因此 PKGBUILD 因惡意或過失行為而包含危險指令是絕對有可能的事。makepkg 使用 fakeroot (絕對不會以 root 執行) 而有相當的保護,但您不應該一直靠它來保障安全性。若對某軟體包有任何疑問,先不要進行組建,到論壇或郵件清單尋求建議。
$ cd foo
$ nano PKGBUILD
$ nano foo.install

建立軟體包。手動確認檔案的完整性後,以一般使用者身分執行 makepkg

$ makepkg -s

加上 -s 將以 sudo 安裝所需相依性。如果不想使用 sudo,事前手動安裝所需相性,並拿掉上面指令的 -s

安裝軟體包

使用 pacman 安裝軟體包。現在應該已建立一份壓縮檔:

<程式名稱>-<程式版本號>-<程式修訂版號>-<架構>.pkg.tar.xz

用 pacman 的「升級」(upgrade) 指令安裝此軟體包:

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

這些手動安裝的軟體包被稱為外來軟體包 — 就是來自非任何 pacman 所知軟體庫的軟體包。列舉所有外來軟體包:

$ pacman -Qm 
註記: 以上的範例只提供軟體包組建過程的簡略摘要。makepkgABS 頁面會提供更詳盡的資訊,相當建議新進 Arch 的使用者參閱。

回饋

AUR 網頁介面有留言功能,是使用者向 PKGBUILD 貢獻者提供建議、回饋或改進的平台。避免直接在留言區貼上修補程式碼或 PKGBUILD:它們很快就會過期,並佔用太多版面。可以將這些檔案放在 email 寄給維護者,或是使用 pastebin

所有 Arch 使用者來說,一個最簡單的參與就是瀏覽 AUR,透過線上介面投票給喜歡的軟體包。所有軟體包都有機會被 TU 認養,收錄進 community 軟體庫,而得票數就是其中一項考量;每個人的投票都是有用的!

軟體包分享與維護

使用者可以透過 Arch 使用者軟體庫 (AUR) 分享 PKGBUILD。它不包含任何二進位軟體包,但允許使用者上傳 PKGBUILD 供其他人下載。這些 PKGBUILD 不受官方支援,且尚未完全審核,若要使用必須先考慮相關風險。

提交軟體包

警告: 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

更多資訊:網頁介面論壇貼文

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

另請參閱