From 9375bdbcfe87fc9127f4cd1b8369e3597ddc620f Mon Sep 17 00:00:00 2001 From: Chin-San Huang Date: Sat, 2 Jun 2007 00:34:26 +0000 Subject: [PATCH] MFen 1.259 -> 1.263. Obtained from: The FreeBSD Traditional Chinese Project Approved by: delphij (mentor) --- zh_TW.Big5/books/handbook/ports/chapter.sgml | 707 ++++++++++--------- 1 file changed, 387 insertions(+), 320 deletions(-) diff --git a/zh_TW.Big5/books/handbook/ports/chapter.sgml b/zh_TW.Big5/books/handbook/ports/chapter.sgml index eaf18dfc85..3b40732bd5 100644 --- a/zh_TW.Big5/books/handbook/ports/chapter.sgml +++ b/zh_TW.Big5/books/handbook/ports/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project $FreeBSD$ - Original revision: 1.259 + Original revision: 1.263 --> @@ -14,10 +14,11 @@ ports packages 儘管 FreeBSD 在 base system 已加了很多系統工具。 - 然而,在實務運用上,您可能仍需要安裝額外的軟體。 - FreeBSD 提供了 2 種安裝應用程式的套件管理系統︰Ports Collection(以 soucre 來編譯、安裝) 和 - package(預先編譯好的 binary 檔)。上述的方式,無論要用哪一種,都可以由像是 CDROM - 等或網路上來安裝想裝的最新版軟體。 + 然而,在實務運用上,您可能仍需要安裝額外的軟體。 + FreeBSD 提供了 2 種安裝應用程式的套件管理系統︰Ports Collection + (以 soucre 來編譯、安裝) 和 package(預先編譯好的 binary 檔)。 + 上述的方式,無論要用哪一種,都可以由像是 CDROM + 等或網路上來安裝想裝的最新版軟體。 讀完這章,您將了解: @@ -50,21 +51,26 @@ - 先下載該軟體壓縮檔(tarball),有可能是原始碼或是 binary 執行檔。 + 先下載該軟體壓縮檔(tarball),有可能是原始碼或是 binary 執行檔。 + - 解開該壓縮檔。(通常是以 &man.compress.1; , &man.gzip.1; 或 &man.bzip2.1; 壓縮的) + 解開該壓縮檔。(通常是以 + &man.compress.1; , &man.gzip.1; 或 &man.bzip2.1; 壓縮的) - 閱讀相關文件檔,以了解如何安裝。(通常檔名是 INSTALL 或 - README, 或在 doc/ 目錄下的一些文件) + 閱讀相關文件檔,以了解如何安裝。(通常檔名是 + INSTALLREADME + ,或在 doc/ 目錄下的一些文件) - 如果所下載的是原始碼,可能要先修改 Makefile 或是執行 - ./configure 之類的 script ,接著再編譯該軟體。 + 如果所下載的是原始碼,可能要先修改 + Makefile 或是執行 + ./configure 之類的 script + ,接著再編譯該軟體。 @@ -72,58 +78,65 @@ - 如果一切順利的話,就這麼簡單。如果在安裝非專門設計(移植)給 FreeBSD 的軟體時出問題, - 那可能需要修改一下它的程式碼,才能正常使用。 + 如果一切順利的話,就這麼簡單。 + 如果在安裝非專門設計(移植)給 FreeBSD 的軟體時出問題, + 那可能需要修改一下它的程式碼,才能正常使用。 - 當然,我們可以在 FreeBSD 上使用上述的傳統方式來安裝軟體,但是,我們還有更簡單的選擇。 - FreeBSD 提供了兩種省事的軟體管理機制: packages 和 ports。就在寫這篇文章的時候, - 已經有超過 &os.numports; 個 port 軟體可以使用。 + 當然,我們可以在 FreeBSD 上使用上述的傳統方式來安裝軟體, + 但是,我們還有更簡單的選擇。 + FreeBSD 提供了兩種省事的軟體管理機制: packages 和 ports。 + 就在寫這篇文章的時候, + 已經有超過 &os.numports; 個 port 軟體可以使用。 所謂的 FreeBSD package 就是別人把該應用程式編譯、打包完畢。 該 package 會包括該應用程式的所有執行檔、設定檔、文件等。 而下載到硬碟上的 package 都可透過 FreeBSD 套件管理指令來進行管理,比如: - &man.pkg.add.1;、&man.pkg.delete.1;、&man.pkg.info.1;等指令。 + &man.pkg.add.1;、&man.pkg.delete.1;、&man.pkg.info.1; 等指令。 所以,只需簡單打個指令就可輕鬆安裝新的應用程式了。 而 FreeBSD port 則是用一些檔案,來自動處理應用程式的安裝流程。 - 請記住:如果打算自己來編譯的話,需要執行很多操作步驟(下載、解壓、patch、編譯、安裝)。 + 請記住:如果打算自己來編譯的話,需要執行很多操作步驟 + (下載、解壓、patch、編譯、安裝)。 而 port 呢,則是涵蓋所有需要完成這些工作的必備步驟, - 所以只需打一些簡單的指令,那些原始程式碼就會自動下載、解壓、patch、編譯,直至安裝完畢。 + 所以只需打一些簡單的指令,那些原始程式碼就會自動下載、解壓、 + patch、編譯,直至安裝完畢。 事實上,ports 機制還可以用來產生 packages,以便他人可以用 - pkg_add 來安裝,或是稍後會介紹到的其他套件管理指令。 + pkg_add 來安裝, + 或是稍後會介紹到的其他套件管理指令。 - 而 packages 以及 ports 它們都是一樣會認 dependencies(軟體相依關係)。 + 而 packages 以及 ports 它們都是一樣會認 + dependencies(軟體相依關係)。 假設:您想安裝某程式,但它有相依另一個已裝的函式庫(library), 而在 FreeBSD 的 port 以及 package 都有這程式以及該函式庫了。 所以無論是用 pkg_add 指令或者 port 方式來裝該程式, - 這兩者(package、port)都會先檢查有沒有裝該函式庫,若沒有就會自動先裝該函式庫了。 + 這兩者(package、port)都會先檢查有沒有裝該函式庫, + 若沒有就會自動先裝該函式庫了。 這兩種技術都很相似,您可能會好奇為什麼 FreeBSD 會弄出這兩種技術來呢。 - 其實,packages 和 ports 都有它們各自的長處,使用哪一種完全取決於您自己的喜好。 + 其實,packages 和 ports 都有它們各自的長處, + 使用哪一種完全取決於您自己的喜好。 Package 好處在於: - A compressed package tarball is typically smaller than - the compressed tarball containing the source code for the - application. + 同樣是壓縮過的 package 與原始碼 tarball 相比, + 前者通常會比後者小多了。 - Packages do not require any additional compilation. For - large applications, such as - Mozilla, - KDE, or - GNOME this can be important, - particularly if you are on a slow system. + package 並不需再進行編譯。 + 對大型應用程式如 Mozilla、 + KDE、 + GNOME 而言,這點顯得相當重要, + 尤其是使用速度緩慢的機器。 - Packages do not require any understanding of the process - involved in compiling software on FreeBSD. + 不需要瞭解如何在 FreeBSD 上編譯軟體的相關細節過程, + 即可使用 package。 @@ -131,58 +144,52 @@ Ports 好處在於: - Packages are normally compiled with conservative options, - because they have to run on the maximum number of systems. By - installing from the port, you can tweak the compilation options to - (for example) generate code that is specific to a Pentium - IV or Athlon processor. + 為了讓 package 能在大多數系統上順利執行, + 通常在編譯時會使用比較保守的選項。 然而, + 透過 port 安裝的話,則可針對特定環境(比如: Pentium IV 或 Athlon CPU) + 來調整選項,以符合需求。 - Some applications have compile time options relating to - what they can and cannot do. For example, - Apache can be configured with a - wide variety of different built-in options. By building - from the port you do not have to accept the default options, - and can set them yourself. + 有些程式在編譯時,會有一些選項可以選擇。 + 舉例來說,Apache + 可以設定一大堆的編譯選項。 若透過 port 來安裝的話, + 會比較彈性多了,可以自己選而不必使用預設的編譯選項。 - In some cases, multiple packages will exist for the same - application to specify certain settings. For example, - Ghostscript is available as a - ghostscript package and a - ghostscript-nox11 package, depending on - whether or not you have installed an X11 server. This sort - of rough tweaking is possible with packages, but rapidly - becomes impossible if an application has more than one or - two different compile time options. + 在某些情況,同樣的程式但不同編譯選項,則會分成不同的 package。 + 比如: + Ghostscript 會因為是否要裝 X11 server, + 而劃分為 ghostscript 以及 + ghostscript-nox11 這兩種 package。 + 如此的調整對 package 算是可成立的, + 但若該程式有一個以上或兩種不同的編譯選項時, + 這對 package 就沒辦法了。 - The licensing conditions of some software distributions forbid - binary distribution. They must be distributed as source - code. + 某些軟體的禁止以 binary 方式散佈, + 或者說必須以原始碼方式散佈才可。 - Some people do not trust binary distributions. At least - with source code, you can (in theory) read through it and - look for potential problems yourself. + 有些人並不信任 binary 套件機制,因為他們覺得至少有原始碼, + (理論上)就可以自己檢閱,並尋找是否有潛在的問題。 - If you have local patches, you will need the source in order to - apply them. + 若要對軟體加上自己改過的 patch, + 那麼就必須要先有原始碼才能去上相關 patch 修正。 - Some people like having code around, so they can read it - if they get bored, hack it, borrow from it (license - permitting, of course), and so on. + 有些人喜歡有原始碼在手邊, + 所以他們無聊時就可以自己閱讀、鑽研、借用 + (當然要符合原始碼本身的授權規定)原始碼等等。 - To keep track of updated ports, subscribe to the - &a.ports; and the &a.ports-bugs;. + 若想注意 port 更新動態的話,可以訂閱 + &a.ports; 以及 &a.ports-bugs;。 在安裝軟體前,最好先看 此外,也可以裝 security/portaudit,它會自動檢查所有已裝的 + role="package">ports-mgmt/portaudit,它會自動檢查所有已裝的 的軟體是否有已知的安全漏洞,另外,它還會在裝軟體的編譯過程前先行檢查。 也可以在裝了某些軟體之後,用 portaudit -F -a 來作全面強制安檢。 - The remainder of this chapter will explain how to use - packages and ports to install and manage third party software on - FreeBSD. + 本章接下來將介紹如何在 FreeBSD 使用 package 及 port 來安裝、管理 + third party 軟體。 尋找想裝的軟體 - 在安裝任何軟體之前,你必須先了解你想要什麼的軟體,以及該軟體叫做什麼名稱。 + 在安裝任何軟體之前,你必須先了解你想要什麼的軟體, + 以及該軟體叫做什麼名稱。 FreeBSD 上可裝的軟體清單不斷在增加中, 不過,我們很慶幸有幾種方式可以來找你想裝的軟體: @@ -213,8 +220,10 @@ FreeBSD 網站上有更新頻繁的軟體清單,在 http://www.FreeBSD.org/ports/。 - 各 ports 皆依其性質而分門別類,既可以透過軟體名稱來搜尋(如果知道名字的話), + url="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/ + 。 + 各 ports 皆依其性質而分門別類,既可以透過軟體名稱來搜尋 + (如果知道名字的話), 也可以在分類中列出所有可用的軟體。 @@ -233,7 +242,8 @@ 如果不知道想裝的軟體名稱,那麼可透過像是 FreshMeat () 這類的網站來找, - 如果找到了,可以回 FreeBSD 網站去看一下這個應用程式是否已經被 port 進去了。 + 如果找到了,可以回 FreeBSD 網站去看一下這個應用程式是否已經被 + port 進去了。 @@ -280,7 +290,8 @@ R-deps: 此外,不清楚軟體名稱的話,也可以拿來找有符合關鍵字主題的 port。 剛講的這兩種方式,搜尋字眼都是 case-insensitive(不必區分大小寫)。 - 比如,搜尋 LSOFlsof 兩者結果都會是一樣的。 + 比如,搜尋 LSOFlsof + 兩者結果都會是一樣的。 @@ -310,10 +321,11 @@ R-deps: pkg_add - 可以用 &man.pkg.add.1; 從本機上或者透過網路來安裝任一 FreeBSD package。 + 可以用 &man.pkg.add.1; 從本機上或者透過網路來安裝任一 + FreeBSD package。 - 手動下載、安裝 Package (譯者chinsan: 這方法比較不便,建議改用 pkg_add -r ) + 手動下載、安裝 Package &prompt.root; ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. @@ -352,40 +364,51 @@ local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz &prompt.root; pkg_add -r lsof 上面這例子會自動下載正確的 package 並安裝。 - 若想改換用其他 &os; Packages Mirror 站,那麼就要設定 PACKAGESITE 環境變數, + 若想改換用其他 &os; Packages Mirror 站,那麼就要設定 + PACKAGESITE 環境變數, 如此一來才會取代預設設定。 &man.pkg.add.1; - 會用 &man.fetch.3; 指令來下載檔案,而 &man.fetch.3; 本身則會使用相關環境變數的設定, + 會用 &man.fetch.3; 指令來下載檔案,而 &man.fetch.3; + 本身則會使用相關環境變數的設定, 像是: FTP_PASSIVE_MODEFTP_PROXY 以及 - FTP_PASSWORD。 如果你網路環境處於 firewall 後面,或者需要用 - FTP/HTTP proxy 的話,那麼就需要設定。 設定細節請參閱 &man.fetch.3;。 + FTP_PASSWORD。 如果你網路環境處於 firewall + 後面,或者需要用 FTP/HTTP proxy 的話,那麼就需要設定。 + 設定細節請參閱 &man.fetch.3;。 請注意:上面所說的例子是寫 lsof 而非 - lsof-4.56.4。 當使用遠端抓取功能時,該 package 版號就不必加上去了。 + lsof-4.56.4。 當使用遠端抓取功能時,該 + package 版號就不必加上去了。 &man.pkg.add.1; 會自動下載該軟體的最新版回來安裝。 若用的是 &os.current; 或 &os.stable; 的話,&man.pkg.add.1; 會自動下載該軟體最新版回來。 - 若用的是屬於 -RELEASE 版本,那麼他會抓回屬於該 release 上所編譯的 package。 + 若用的是屬於 -RELEASE 版本,那麼他會抓回屬於該 release 上所編譯的 + package。 也可以更改 PACKAGESITE 環境變數,以改變下載方式。 - 舉例來說,如果是 &os; 5.4-RELEASE 的話,那麼 &man.pkg.add.1; 預設會從 + 舉例來說,如果是 &os; 5.4-RELEASE 的話,那麼 &man.pkg.add.1; + 預設會從 ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/ - 來抓 package。若要強制 &man.pkg.add.1; 下載 &os; 5-STABLE 所用的 package - ,那麼就把 PACKAGESITE 改設為 - ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/即可。 + 來抓 package。若要強制 &man.pkg.add.1; 下載 &os; 5-STABLE + 所用的 package,那麼就把 PACKAGESITE 改設為 + ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/ + 即可。 - Package 檔有 .tgz 以及 .tbz 兩種格式。 - 這些都可透過 ,或者 FreeBSd 光碟內取得。 - Every CD on the - FreeBSD 4 光碟套件內以及 PowerPak(威力包) 等等..每一片光碟都會在 /packages - 目錄內放 package。裡面的目錄架構類似 /usr/ports 的目錄架構。 - 每個分類都各自有專屬目錄,且每份 package 都會放在 All 目錄內。 + Package 檔有 .tgz 以及 + .tbz 兩種格式。 + 這些都可透過 + ,或者 FreeBSD 光碟內取得。 + 每張 4 片裝的 FreeBSD 光碟(以及 PowerPak 包等等)內都會在 + /packages 目錄內放 package。 + 裡面的目錄架構類似 /usr/ports 的目錄架構。 + 每個分類都各自有專屬目錄,且每份 package 都會放在 + All 目錄內。 - package 目錄架構與 port 的都一致;它們共同構成整個 package/port 系統機制。 + package 目錄架構與 port 的都一致;它們共同構成整個 package/port + 系統機制。 @@ -416,7 +439,8 @@ cvsup = docbook = ... - 第二欄的符號表示:已安裝的軟體版本與目前機器上 port tree 的版本差異。 + 第二欄的符號表示:已安裝的軟體版本與目前機器上 port tree + 的版本差異。 @@ -429,7 +453,8 @@ docbook = - = 已裝的版本與目前機器上 port tree 的版本是同一版的。 + = 已裝的版本與目前機器上 port tree + 的版本是同一版的。 @@ -441,7 +466,8 @@ docbook = 已裝的版本較新。(可能是目前機器上 port tree 尚未更新。) ?已裝的軟體在 ports 索引內找無相關資料。 - (通常可能是,舉例來說:已安裝的該 port 已從 Ports Collection 中移除或改名了。) + (通常可能是,舉例來說:已安裝的該 port 已從 Ports Collection + 中移除或改名了。) *該軟體同時有許多版本。 @@ -468,8 +494,8 @@ docbook = 其他細節部份 - 所有已裝的 package 資訊都會存到 /var/db/pkg 目錄內, - 在該目錄下可以找到記載已裝的軟體檔案清單及該軟體簡介的檔案。 + 所有已裝的 package 資訊都會存到 /var/db/pkg + 目錄內,在該目錄下可以找到記載已裝的軟體檔案清單及該軟體簡介的檔案。 @@ -478,7 +504,8 @@ docbook = 使用 Ports 管理機制 下面我們會介紹如何使用 Ports Collection 來安裝、移除軟體的基本用法。 - 至於其他可用的 make 詳細用法與環境設定,可參閱 &man.ports.7;。 + 至於其他可用的 make 詳細用法與環境設定,可參閱 + &man.ports.7;。 記得安裝 Ports Collection @@ -488,21 +515,39 @@ docbook = Makefiles, patches 以及一些軟體簡介檔所組成的。 - 在裝 FreeBSD 時,若忘了在 sysinstall 內勾選要裝 Ports Collection 的話, + 在裝 FreeBSD 時,若忘了在 sysinstall + 內勾選要裝 Ports Collection 的話, 沒關係,可以照下列方式來安裝 ports collection: CVSup 方式 - 使用 CVSup 是安裝、更新 Ports Collection 的快速方法之一。 - 若想更瞭解 CVSup 用法的話,請參閱 使用 CVSup。 + 使用 CVSup 是安裝、更新 Ports + Collection 的快速方法之一。 + 若想更瞭解 CVSup 用法的話,請參閱 使用 CVSup。 - 第一次跑 CVSup 之前,請先確認 /usr/ports - 是空的! 若你已經裝了 Ports Collection ,但又自行加上其他 patch 檔,那麼 CVSup - 並不會刪除你自行加上的 patch 檔,這樣可能會導致要安裝某些軟體時,發生 patch 失敗或編譯失敗。 + + csup 是以 C 語言對 + CVSup 軟體的重寫,在 &os; 6.2 + 及之後版本即有附在系統內。 可以直接用系統所附的 + csup 即可跳過步驟一的動作, + 並將本文相關提到 cvsup 之處, + 都改為 csup 即可。 此外, &os; 6.2 + 之前的版本,則可裝 net/csup + 或者 package 來使用 csup + + + 第一次跑 CVSup 之前,請先確認 + /usr/ports + 是空的! 若你已經裝了 Ports Collection ,但又自行加上其他 patch + 檔,那麼 CVSup + 並不會刪除你自行加上的 patch 檔,這樣可能會導致要安裝某些軟體時, + 發生 patch 失敗或編譯失敗。 - 安裝 net/cvsup-without-gui package: + 安裝 net/cvsup-without-gui + package: &prompt.root; pkg_add -r cvsup-without-gui @@ -516,14 +561,15 @@ docbook = &prompt.root; cvsup -L 2 -h cvsup.tw.FreeBSD.org /usr/share/examples/cvsup/ports-supfile 請把 - cvsup.tw.FreeBSD.org 請改成離你比較近(快)的 - CVSup 主機。 - 這部分可以參閱完整的 CVSup mirror 站列表()。 + cvsup.tw.FreeBSD.org 請改成離你比較近 + (快)的 CVSup 主機。 + 這部分可以參閱完整的 CVSup mirror + 站列表()。 若想改用自己設的 - ports-supfile,比如說,不想每次都得打指令來指定所使用的 + ports-supfile,比如說, + 不想每次都得打指令來指定所使用的 CVSup 主機。 @@ -547,7 +593,8 @@ docbook = - 然後就開始以類似下列指令跑 cvsup + 然後就開始以類似下列指令跑 cvsup: + &prompt.root; cvsup -L 2 /root/ports-supfile @@ -565,8 +612,9 @@ docbook = Portsnap 方式 &man.portsnap.8; 也是更新 Ports Collection 的方式之一。 - &os; 6.0 起開始內建 Portsnap 機制,而較舊的系統,則可透過 sysutils/portsnap port 來安裝: + &os; 6.0 起開始內建 Portsnap 機制,而較舊的系統,則可透過 + sysutils/portsnap port 來安裝: + &prompt.root; pkg_add -r portsnap @@ -575,7 +623,8 @@ docbook = /usr/ports 目錄不存在的話,就建立一下吧: + role="directory">/usr/ports 目錄不存在的話, + 就建立一下吧: &prompt.root; mkdir /usr/ports @@ -589,14 +638,15 @@ docbook = - 若是第一次跑 Portsnap 的話,則需要先解壓到 /usr/ports: + 若是第一次跑 Portsnap 的話, + 則需要先解壓到 /usr/ports &prompt.root; portsnap extract 若已有 /usr/ports 而且只是想更新而已,那麼就照下面作: + role="directory">/usr/ports 而且只是想更新而已, + 那麼就照下面作: &prompt.root; portsnap update @@ -606,20 +656,24 @@ docbook = Sysinstall 方式 - 這方式要用 sysinstall 透過安裝來源來裝 Ports Collection。 - 請注意:所安裝的 Ports Collection 版本只是該 release 發佈時的版本而已,而非最新。 + 這方式要用 sysinstall + 透過安裝來源來裝 Ports Collection。 + 請注意:所安裝的 Ports Collection 版本只是該 release + 發佈時的版本而已,而非最新。 若能上網(Internet)的話,請使用上述方式之一會比較好。 root 權限執行 sysinstall - (在 &os; 5.2 之前版本則是 /stand/sysinstall),方式如下: + (在 &os; 5.2 之前版本則是 /stand/sysinstall) + ,方式如下: &prompt.root; sysinstall - 請以方向鍵移動選擇項目,選擇 Configure,然後按 + 請以方向鍵移動選擇項目,選擇 + Configure,然後按 Enter 鍵。 @@ -662,8 +716,10 @@ docbook = ports installing - 提到 Ports Collection,首先要先說明的是:何謂 skeleton。 - 簡單來講,port skeleton 就是讓軟體如何在 FreeBSD 順利編譯、安裝的最基本檔案組合。 + 提到 Ports Collection,首先要先說明的是:何謂 + skeleton。 + 簡單來講,port skeleton 就是讓軟體如何在 FreeBSD + 順利編譯、安裝的最基本檔案組合。 每份 port skeleton 基本上會有: @@ -680,10 +736,14 @@ docbook = - files 目錄。 這目錄放的是讓軟體正常編譯、安裝的 patch 檔。 - Patches 檔基本上是一些小檔案,並針對特定檔案來做修改,且是純文字檔格式, - 基本上內容通常會像是 Remove line 10(刪除第 10 行) 或 - Change line 26 to this ...(把第 26 行改為...) 之類的。 + files 目錄。 這目錄放的是讓軟體正常編譯、 + 安裝的 patch 檔。 + Patches 檔基本上是一些小檔案,並針對特定檔案來做修改, + 而且是純文字檔格式, + 基本上內容通常會像是 Remove line 10(刪除第 10 行) + 或 + Change line 26 to this ...(把第 26 行改為...) + 之類的。 這些 Patches 通常也稱為 diffs ,因為都是由 &man.diff.1; 程式所產生的。 @@ -691,11 +751,13 @@ docbook = - pkg-descr 檔,內容是比較詳細的軟體介紹,通常會寫得比較多行。 + pkg-descr 檔,內容是比較詳細的軟體介紹, + 通常會寫得比較多行。 - pkg-plist 檔,該 port 會安裝的所有檔案清單。 + pkg-plist 檔,該 port + 會安裝的所有檔案清單。 也是告訴系統在移除該 port 時,需要刪除哪些檔案。 @@ -706,15 +768,19 @@ docbook = url="&url.books.porters-handbook;/index.html">FreeBSD Porter's Handbook。 - port 內寫的是告訴系統如何編譯 source code 的相關指令,但並不是真正的 source code。 + port 內寫的是告訴系統如何編譯 source code 的相關指令, + 但並不是真正的 source code。 而 source code 可以從光碟或網路(Internet)來取得, 該軟體開發者可能會把 source code 以各種格式來發佈。 - 通常是以 tar 以及 gzip 這兩者工具一起壓縮的檔案,也有可能是以其他工具壓縮,或根本沒壓縮。 - 而軟體的 source code 無論是以哪一種壓縮檔型態,我們都稱之為 distfile。 + 通常是以 tar 以及 gzip 這兩者工具一起壓縮的檔案, + 也有可能是以其他工具壓縮,或根本沒壓縮。 + 而軟體的 source code 無論是以哪一種壓縮檔型態,我們都稱之為 + distfile。 下面將介紹兩種安裝 &os; port 的方式。 - 要安裝 port 的話,請務必切為 root 身份。 + 要安裝 port 的話,請務必切為 root 身份。 + @@ -725,7 +791,7 @@ docbook = portaudit 會在安裝任何 port 之前, 先自動檢查是否有相關已知的安全漏洞。這個工具在 Ports Collection 內有 - (security/portaudit)。 + (ports-mgmt/portaudit)。 在安裝 port 之前,可以先跑 portaudit -F 指令, 如此一來就會抓最新的資安漏洞資料庫回來核對。 每天的系統定期安檢會自動更新資料庫,並作安全稽核。 @@ -740,7 +806,8 @@ docbook = &prompt.root; cd /usr/ports/sysutils/lsof - 一旦進入 lsof 目錄後,就可以看到這個 port 的 skeleton 結構。 + 一旦進入 lsof 目錄後,就可以看到這個 port + 的 skeleton 結構。 接下來,就是編譯,也就是 build 這個 port。 只需簡單輸入 make 指令,就可輕鬆完成編譯。 完成後,應該可以看到類似下面訊息: @@ -765,8 +832,9 @@ docbook = ... &prompt.root; - 請注意:編譯完成後,就會回到提示列(prompt)。接下來就是安裝該 port 了, - 要裝的話,只需在原本的 make 指令後面再加上一個字即可, + 請注意:編譯完成後,就會回到提示列(prompt)。接下來就是安裝該 + port 了,要裝的話,只需在原本的 make + 指令後面再加上一個字即可, 那個字就是 install &prompt.root; make install @@ -813,123 +881,110 @@ docbook = 詳情請參閱你所使用的 shell 相關文件。 - Some third party DVD-ROM products such as the FreeBSD Toolkit - from the FreeBSD - Mall contain distfiles. They can be used with the Ports - Collection. Mount the DVD-ROM on /cdrom. If - you use a different mount point, set CD_MOUNTPTS - make variable. The needed distfiles will be automatically used - if they are present on the disk. + 有些由所謂 third party 所發行的 DVD-ROM 產品,像是 + FreeBSD + Mall 所發行的 FreeBSD Toolkit 會包括 distfiles 檔案, + 這些檔案可用來搭配 Ports Collection。 + 把 DVD-ROM 掛載在 /cdrom。 + 若使用其他掛載點的話,要記得設定 CD_MOUNTPTS + 環境變數為相對應的掛載點。 如此一來,光碟上若有所需的 distfiles + 就會自動使用光碟的檔案。 - Please be aware that the licenses of a few ports do - not allow for inclusion on the CD-ROM. This could be - because a registration form needs to be filled out before - downloading or redistribution is not allowed, or for - another reason. If you wish to install a port not - included on the CD-ROM, you will need to be online in - order to do so. + 請注意,有少數 port 並不允許透過光碟來發佈檔案。 + 可能的原因有:需先填註冊單才能下載或散佈檔案,或其他原因。 + 如果想安裝在光碟上沒附上的 port,就需連上網路才能繼續進行安裝。 + - The ports system uses &man.fetch.1; to download the - files, which honors various environment variables, including - FTP_PASSIVE_MODE, FTP_PROXY, - and FTP_PASSWORD. You may need to set one or - more of these if you are behind a firewall, or need to use - an FTP/HTTP proxy. See &man.fetch.3; for the complete - list. + ports 系統採用 &man.fetch.1; 來下載檔案, + 它有許多可調整的環境變數,包括: + FTP_PASSIVE_MODEFTP_PROXY、 + FTP_PASSWORD。 如果是處於有防火牆的環境, + 或者需要使用 FTP/HTTP proxy,那麼就需要設定這些變數。 + 使用細節請參閱 &man.fetch.3; 說明。 - For users which cannot be connected all the time, the - make fetch option is - provided. Just run this command at the top level directory - (/usr/ports) and the required files - will be downloaded for you. This command will also work in - the lower level categories, for example: - /usr/ports/net. - Note that if a port depends on libraries or other ports this will - not fetch the distfiles of those ports too. - Replace fetch with - fetch-recursive - if you want to fetch all the dependencies of a port too. + 若無法隨時一直上網的話,那麼可以利用 + make fetch。 + 只要在 port 的最上層路徑(/usr/ports) + 打這指令,那麼所有需要用到的檔案都會下載。 + 這指令也可以在下層目錄使用,例如: + /usr/ports/net。 + 請注意,若該 port 有相依的 library 或者其他 port 的話, + 那麼它並不會跟著一起下載其他所相依的檔案。 + 若想一次下載所有相依的 port 所有檔案,那麼指令參數請改用 + fetch-recursive 而非 + fetch - You can build all the ports in a category or as a - whole by running make in the top level - directory, just like the aforementioned make - fetch method. This is - dangerous, however, as some ports cannot co-exist. In other - cases, some ports can install two different files with the - same filename. + 可以在某類別或最上層路徑打 make + 指令來編譯所有的 port,或者以上述的 make + fetch 指令來下載所有檔案。 + 然而,這樣是相當危險,因為有些 port 不能並存。 + 也有另一種情況,有些 port 可能會以相同檔名, + 但是實際上卻是不同內容的檔案。 - In some rare cases, users may need to acquire the - tarballs from a site other than the - MASTER_SITES (the location where files - are downloaded from). You can override the - MASTER_SITES option with the following - command: + 在某些罕見情況,可能需加上 MASTER_SITES + (檔案的原始下載處)之外的下載點,以下載所需的檔案。 + 可以用下列指令,來更改預設的 MASTER_SITES + 下載點: &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch - In this example we change the - MASTER_SITES option to ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. + 上面這例子,是把 MASTER_SITES 改設 + ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ + 為下載點。 - Some ports allow (or even require) you to provide - build options which can enable/disable parts of the - application which are unneeded, certain security options, - and other customizations. A few which come to mind are - www/mozilla, security/gpgme, and mail/sylpheed-claws. A message - will be displayed when options such as these are - available. + 有些 port 允許(或要求)您得指定編譯選項, + 以啟用、停用該軟體中非必須的功能、安全選項以及其他可自訂的選項。 + 具有代表性的包括了 + www/mozillasecurity/gpgmemail/sylpheed-claws。 + 若有這類選項時,通常在編譯時會出現相關提示訊息。 更改(Override)預設的 Ports 目錄 - Sometimes it is useful (or mandatory) to use a different - distfiles and ports directory. The - PORTSDIR and PREFIX - variables can override the default directories. For - example: + 有時候,會發現到使用其他目錄作為 port、distfiles + 目錄可能相當有用(甚至是必須),可以設定 + PORTSDIRPREFIX + 環境變數以修改預設的 port 目錄。舉例: &prompt.root; make PORTSDIR=/usr/home/example/ports install - will compile the port in - /usr/home/example/ports and install - everything under /usr/local. + 以上這會在will compile the port in + /usr/home/example/ports 內進行編譯, + 並把所有檔案安裝到 /usr/local 內。 &prompt.root; make PREFIX=/usr/home/example/local install - will compile it in /usr/ports and - install it in - /usr/home/example/local. + 則會在 /usr/ports 目錄內編譯, + 並把所有檔案安裝到 + /usr/home/example/local 內。 - And of course, + 當然囉, &prompt.root; make PORTSDIR=../ports PREFIX=../local install - will combine the two (it is too long to completely write - on this page, but it should give you the general - idea). + 則會同時包含兩種設定(還有很多變化以致無法在本頁全部都有寫到, + 但您應該已經有抓到大概概念了吧)。 - Alternatively, these variables can also be set as part - of your environment. Read the manual page for your shell - for instructions on doing so. + 此外,這些變數也以作為環境變數來設定。 + 請依您所使用的 shell 去參閱相關說明,以瞭解如何設定。 - Dealing with <command>imake</command> + 處理 <command>imake</command> - Some ports that use imake (a part of - the X Window System) do not work well with - PREFIX, and will insist on installing - under /usr/X11R6. Similarly, some Perl - ports ignore PREFIX and install in the - Perl tree. Making these ports respect - PREFIX is a difficult or impossible - job. + 有些 port 會使用 imake(X Window 系統的一部份) + 無法正常運用 PREFIX 變數, + 它們會堅持把檔案都安裝到 /usr/X11R6 目錄。 + 同樣地,也有一些 Perl port 會忽略 PREFIX + 並把檔案安裝到 Perl 目錄架構內。 讓這些 ports respect + PREFIX 是相當困難,甚至是不可能的事。 @@ -941,15 +996,13 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch ports removing - Now that you know how to install ports, you are probably - wondering how to remove them, just in case you install one and - later on decide that you installed the wrong port. - We will remove our previous example (which was - lsof for - those of you not paying attention). Ports are being removed exactly - the same as the packages (discussed in the Packages section), using the - &man.pkg.delete.1; command: + 現在您已經知道如何安裝 port,而開始想瞭解如何移除。 + 比如裝了一個 port 後才意識到裝錯 port 了。 + 在此,我們將移除前面例子所裝的那個 port + (沒仔細注意的話,我們再提醒一下就是 lsof)。 + 跟移除 package 時相當類似(在 Packages section 有介紹),都是使用 + &man.pkg.delete.1; 指令: &prompt.root; pkg_delete lsof-4.57 @@ -962,7 +1015,8 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch ports upgrading - 首先,用 &man.pkg.version.1; 指令來列出目前 Ports Collection 中提供了那些可升級的 port 版本: + 首先,用 &man.pkg.version.1; 指令來列出目前 Ports Collection + 中提供了那些可升級的 port 版本: &prompt.root; pkg_version -v @@ -971,11 +1025,12 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 每次更新完 Ports Collection 之後,請務必記得在升級 port 前, 先看看 /usr/ports/UPDATING, - 這裡會寫升級方面的各式問題,比如:檔案格式改變、變更設定檔位置、與舊版不相容的問題等, - 以及怎麼解決的完整步驟。 + 這裡會寫升級方面的各式問題,比如:檔案格式改變、變更設定檔位置、 + 與舊版不相容的問題等,以及怎麼解決的完整步驟。 - UPDATING 內容與你看到的其他文件有些不同、相衝的話, - 那麼以 UPDATING 為主。 + UPDATING 內容與你看到的其他文件有些不同 + 、相衝的話, + 那麼請以 UPDATING 為準。 @@ -986,47 +1041,49 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch portupgrade 可以輕鬆升級已裝的軟體。 - 該工具可從 sysutils/portupgrade port 安裝, - 安裝方式就如同其他 port 一樣,用 make install clean 指令就可以了: + 該工具可從 ports-mgmt/portupgrade + port 安裝, + 安裝方式就如同其他 port 一樣,用 make install clean + 指令就可以了: - &prompt.root; cd /usr/ports/sysutils/portupgrade + &prompt.root; cd /usr/ports/ports-mgmt/portupgrade &prompt.root; make install clean - 首先最好先以 pkgdb -F 來掃瞄已裝的 ports 資料庫是否有誤,並修正有問題的地方。 - 在每次做升級之前,最好定期做一下 pkgdb -F 動作會較為妥當。 + 首先最好先以 pkgdb -F 來掃瞄已裝的 ports + 資料庫是否有誤,並修正有問題的地方。 + 在每次做升級之前,最好定期做一下 pkgdb -F + 動作會較為妥當。 - When you run portupgrade -a, - portupgrade will begin to upgrade all the - outdated ports installed on your system. Use the - flag if you want to be asked for confirmation of every individual - upgrade. + portupgrade -a 的話, + portupgrade 會升級系統上所有已裝的過舊 + ports。 若用 則在升級每個 port 過程當中, + 會要求確認相關動作是否符合所需。 &prompt.root; portupgrade -ai - If you want to upgrade only a - certain application, not all available ports, use portupgrade - pkgname. Include the - flag if portupgrade - should first upgrade all the ports required by the given - application. + 若只想升級某特定程式而非全部,那麼可以用 + portupgrade pkgname + 來做指定。 若想要 portupgrade + 優先升級某 port 所相依的相關套件,則請用 + 參數即可。 &prompt.root; portupgrade -R firefox - To use packages instead of ports for installation, provide - flag. With this option - portupgrade searches - the local directories listed in PKG_PATH, or - fetches packages from remote site if it is not found locally. - If packages can not be found locally or fetched remotely, - portupgrade will use ports. - To avoid using ports, specify . + 若要用 package 而非 port 來安裝,則需指定 + 才可以。 若有指定這選項,則 + portupgrade 會搜尋 + PKG_PATH 變數所指定的本機目錄, + 若找不到則透過網路來下載安裝。 + 若本機跟網路都沒有可用的 package 的話,則 + portupgrade 會使用 port 方式安裝。 + 若不想如此又變成使用 port 方式安裝,則用 + 即可強制避免使用 port 方式安裝。 &prompt.root; portupgrade -PR gnome2 - To just fetch distfiles (or packages, if - is specified) without building or - installing anything, use . - For further information see &man.portupgrade.1;. + 若只想下載 distfiles(或者若指定 的話,則是 + package)而不想編譯或安裝檔案,可以使用 。 + 詳情請參閱 &man.portupgrade.1; 的說明。 @@ -1037,9 +1094,9 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch Portmanager 也可以用來輕鬆升級已裝的軟體。 - 該工具可從 sysutils/portmanager port 安裝: + 該工具可從 ports-mgmt/portmanager port 安裝: - &prompt.root; cd /usr/ports/sysutils/portmanager + &prompt.root; cd /usr/ports/ports-mgmt/portmanager &prompt.root; make install clean 所有已裝的軟體,都可以輕鬆用類似下列指令來升級: @@ -1073,28 +1130,32 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch disk-space 因為使用 Ports Collection 遲早可能會用光硬碟空間, - 所以在裝完軟體後,記得要以 make clean - 指令來清除臨時的 work 目錄。 + 所以在裝完軟體後,記得要以 make clean + 指令來清除臨時的 work + 目錄。 此外,可以用下列指令來清除整個 Ports Collection 內的臨時目錄: &prompt.root; portsclean -C - You will accumulate a lot of old source distribution files in the - distfiles directory over time. - You can remove them by hand, or you can use the following command to - delete all the distfiles that are no longer referenced by any - ports: + ports 用久了,您可能會在 + distfiles + 目錄內會累積著許多的原始碼檔案。 可以手動刪除這些檔案, + 或者用下列指令來清除所有 port 都不使用的舊檔: &prompt.root; portsclean -D + 或者要清除所有已裝的 port 都不再使用的舊檔: + + &prompt.root; portsclean -DD + - The portsclean utility is part of the - portupgrade suite. + portsclean 這工具乃是 + portupgrade 套件的一部分。 - Do not forget to remove the installed ports once you no longer need - them. A nice tool to help automate this task is available from the - sysutils/pkg_cutleaves port. + 不要忘了移除那些已經安裝,但不再需要用到的 ports。 + 有個 ports-mgmt/pkg_cutleaves + port,正是可自動完成這功能的好工具。 @@ -1103,62 +1164,59 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 安裝之後,有什麼後續注意事項嗎? 通常,安裝完軟體後,我們可以閱讀所附的一些文件,或需要編輯設定檔, - 來確保這個軟體能順利運作,或在機器開機的時候啟動(如果是 daemon 的話)等等。 + 來確保這個軟體能順利運作,或在機器開機的時候啟動(如果是 daemon 的話) + 等等。 不同的軟體會有不同的設定步驟。不管怎樣,如果裝好了軟體, 但是不知道下一步怎麼辦的時候, 可以試試看這些小技巧: - 善用 &man.pkg.info.1; ,這指令可以顯示:透過套件管理系統(Packages/Ports)裝了哪些軟體、檔案裝在哪邊。舉例來說,若剛裝了 FooPackage (版本 1.0.0),那麼下面這指令: + 善用 &man.pkg.info.1; ,這指令可以顯示:透過套件管理系統 + (Packages/Ports)裝了哪些軟體、檔案裝在哪邊。舉例來說,若剛裝了 + FooPackage (版本 1.0.0),那麼下面這指令: &prompt.root; pkg_info -L foopackage-1.0.0 | less - 就會顯示這軟體所安裝的檔案清單。 Pay - special attention to files in man/ - directories, which will be manual pages, - etc/ directories, which will be - configuration files, and doc/, which - will be more comprehensive documentation. + 就會顯示這軟體所安裝的檔案清單。 請特別注意在 + man/ 目錄內是說明檔、 + etc/ 目錄內是設定檔、 + doc/ 目錄內是完整文件。 - If you are not sure which version of the application was - just installed, a command like this + 若不確定已裝的套件版本為何,可以用類似下列指令來查: &prompt.root; pkg_info | grep -i foopackage - will find all the installed packages that have - foopackage in the package name. - Replace foopackage in your - command line as necessary. + 以上將會搜尋所有已裝的套件,列出有符合 + foopackage 的套件名稱。 + 請自行依需求,修改 foopackage + 為想找的套件名稱。 - Once you have identified where the application's manual - pages have been installed, review them using &man.man.1;. - Similarly, look over the sample configuration files, and any - additional documentation that may have been provided. + 一旦確認該程式的線上說明有安裝,就可以用 &man.man.1; 來翻閱。 + 同樣地,若該程式有提供的話,也可以參考設定檔樣本,以及其他文件。 + - If the application has a web site, check it for - additional documentation, frequently asked questions, and so - forth. If you are not sure of the web site address it may - be listed in the output from + 若該程式有官網的話,還可以透過網站來找文件、常見問答集(FAQ)等。 + 若不知道網址,請用下列指令: &prompt.root; pkg_info foopackage-1.0.0 - A WWW: line, if present, should provide a URL - for the application's web site. + 若該程式有官網的話,則會有一行 WWW: + 開頭的出現,這行會列出該程式的官網網址(URL)。 - Ports that should start at boot (such as Internet - servers) will usually install a sample script in - /usr/local/etc/rc.d. You should - review this script for correctness and edit or rename it if - needed. See Starting - Services for more information. + Port 若須在開機時就會啟動(就像 Internet + 主機),通常都會安裝 script 到 + /usr/local/etc/rc.d 目錄。 + 您可以檢閱這 script 的正確與否,或若有需要,也可以修改、改名。 + 詳情請參閱 啟動 Services。 + @@ -1179,19 +1237,26 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 向該 port 的 maintainer 尋求協助:請打 make maintainer 或翻閱 Makefile 以查詢 maintainer 的 - email address。記得寄信給 maintainer 時,要附註該 port 的名稱、版本(或是把 Makefile 內的 $FreeBSD: 那一整行附上) 以及相關錯誤訊息。 + email address。記得寄信給 maintainer 時,要附註該 port + 的名稱、版本(或是把 Makefile 內的 + $FreeBSD: 那一整行附上) + 以及相關錯誤訊息。 有些 port 不是由專門的單一 maintainer 負責,而是透過 mailing list 的專題討論。許多(但非全部)的聯絡 email 格式通常是 - freebsd-list名稱@FreeBSD.org。發問時,請記得把『freebsd-list名稱』改為相關討論的 mailing list 名稱。 + freebsd-list名稱@FreeBSD.org + 。發問時,請記得把『freebsd-list名稱』改為相關討論的 + mailing list 名稱。 尤其當 port 的 maintainer 欄位是 - freebsd-ports@FreeBSD.org + freebsd-ports@FreeBSD.org 時,事實上已經沒人當該 port maintainer 了。 - 因此若該 port 仍有修正或其他技術支援的話,相關討論都會在 freebsd-ports 郵遞論壇上出現。 - 喔,對了,如果有熟悉該軟體者,志願當該 port maintainer 的話,我們也都很歡迎您的加入喔。 + 因此若該 port 仍有修正或其他技術支援的話,相關討論都會在 + freebsd-ports 郵遞論壇上出現。 + 喔,對了,如果有熟悉該軟體者,志願當該 port maintainer + 的話,我們也都很歡迎您的加入喔。 若 port maintainer 沒有回覆您的信件, 則可以用 &man.send-pr.1; @@ -1204,7 +1269,8 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch 試試看修正它吧! Porter's Handbook 包括了 Ports - 架構的細節部份,這些書中內容有助您修好有問題的 port 甚至提交自己的 port﹗ + 架構的細節部份,這些書中內容有助您修好有問題的 port + 甚至提交自己的 port﹗ @@ -1214,7 +1280,8 @@ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">packages 目錄內,但請記得先檢查是否已有 local mirror - 站! 通常情況下這些 package 都可以直接使用,而且應該比自行編譯快一些。 + 站! 通常情況下這些 package 都可以直接使用, + 而且應該比自行編譯快一些。 用 &man.pkg.add.1; 即可順利安裝 package 。