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 @@ -1,1234 +1,1301 @@ 軟體套件管理篇:Packages 及 Ports 機制 概述 ports packages 儘管 FreeBSD 在 base system 已加了很多系統工具。 - 然而,在實務運用上,您可能仍需要安裝額外的軟體。 - FreeBSD 提供了 2 種安裝應用程式的套件管理系統︰Ports Collection(以 soucre 來編譯、安裝) 和 - package(預先編譯好的 binary 檔)。上述的方式,無論要用哪一種,都可以由像是 CDROM - 等或網路上來安裝想裝的最新版軟體。 + 然而,在實務運用上,您可能仍需要安裝額外的軟體。 + FreeBSD 提供了 2 種安裝應用程式的套件管理系統︰Ports Collection + (以 soucre 來編譯、安裝) 和 package(預先編譯好的 binary 檔)。 + 上述的方式,無論要用哪一種,都可以由像是 CDROM + 等或網路上來安裝想裝的最新版軟體。 讀完這章,您將了解: 如何以 packages 來安裝軟體。 如何以 ports 來安裝軟體。 已安裝的 packages 或 ports 要如何移除。 如何更改(override) ports collection 所使用的預設值。 如何在套件管理系統中,找出想裝的軟體。 如何升級已安裝的軟體。 安裝軟體的各種方式介紹 通常要在 &unix; 系統上安裝軟體時,有幾個步驟要作: - 先下載該軟體壓縮檔(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 + ,接著再編譯該軟體。 最後測試再測試與安裝。 - 如果一切順利的話,就這麼簡單。如果在安裝非專門設計(移植)給 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。 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. - - 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. + 有些程式在編譯時,會有一些選項可以選擇。 + 舉例來說,Apache + 可以設定一大堆的編譯選項。 若透過 port 來安裝的話, + 會比較彈性多了,可以自己選而不必使用預設的編譯選項。 + + 在某些情況,同樣的程式但不同編譯選項,則會分成不同的 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 上可裝的軟體清單不斷在增加中, 不過,我們很慶幸有幾種方式可以來找你想裝的軟體: FreeBSD 網站上有更新頻繁的軟體清單,在 http://www.FreeBSD.org/ports/。 - 各 ports 皆依其性質而分門別類,既可以透過軟體名稱來搜尋(如果知道名字的話), + url="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/ + 。 + 各 ports 皆依其性質而分門別類,既可以透過軟體名稱來搜尋 + (如果知道名字的話), 也可以在分類中列出所有可用的軟體。 FreshPorts 由 Dan Langille 所維護 FreshPorts 網站,網址在 。 FreshPorts 會不斷追蹤 port tree 中的各種變化, 也可以針對某些 port 以列入 追蹤名單(watch) 內, 當有任何軟體升級時,就會發 email 提醒。 FreshMeat 如果不知道想裝的軟體名稱,那麼可透過像是 FreshMeat () 這類的網站來找, - 如果找到了,可以回 FreeBSD 網站去看一下這個應用程式是否已經被 port 進去了。 + 如果找到了,可以回 FreeBSD 網站去看一下這個應用程式是否已經被 + port 進去了。 若知道該 port 的正確名稱,但不知道放在哪個分類目錄, 可以用 &man.whereis.1; 指令來找出來。 只要打 whereis file 即可,而 file 的地方請改為想裝的軟體名稱。 若找到該軟體,就會告訴你,就像下面這樣: &prompt.root; whereis lsof lsof: /usr/ports/sysutils/lsof 如此一來,就會知道 lsof (系統工具程式) 是放在 /usr/ports/sysutils/lsof 目錄。 還有另一招,就是用 Ports Collection 本身內建的搜尋機制。 要用的時候,請先切換到 /usr/ports 目錄。 然後,打 make search name=program-name,其中 program-name 請改為想找的軟體名稱。 舉例來說,若要找的是 lsof 的話,那麼就是: &prompt.root; cd /usr/ports &prompt.root; make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps: 這些搜尋結果中,要注意的是 Path: 這行, 因為這行會告訴你可以在哪邊找到該 port。 而搜尋結果的其他部分,因為與 port 安裝較無關係,所以這裡就不講了。 若要更徹底的搜尋,那麼可以改用 make search key=string,其中 string 請改為想搜尋的關鍵字。 如此一來會找 port 名稱、軟體簡介(comments)、軟體敘述檔(descriptions) 以及軟體相依關係(dependencies)裡面是否有符合關鍵字, 此外,不清楚軟體名稱的話,也可以拿來找有符合關鍵字主題的 port。 剛講的這兩種方式,搜尋字眼都是 case-insensitive(不必區分大小寫)。 - 比如,搜尋 LSOFlsof 兩者結果都會是一樣的。 + 比如,搜尋 LSOFlsof + 兩者結果都會是一樣的。 Chern Lee Contributed by 使用 Packages 管理機制 Package 的安裝方式 packages installing 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. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit &prompt.root; pkg_add lsof-4.56.4.tgz 若手邊沒有 package 來源(像是 FreeBSD 光碟)的話, 那麼建議使用 &man.pkg.add.1; 時,加上 選項來更輕鬆安裝 package。如此一來,就會自動判斷正確的 package 格式、 以及所搭配的作業系統 release 版本, 然後會自己從 FTP 站抓回、安裝相對應的 package。 pkg_add &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 + 系統機制。 管理 Packages packages managing &man.pkg.info.1; 可用來列出所有已安裝的軟體、軟體簡介。 pkg_info &prompt.root; pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ... &man.pkg.version.1; 則是列出所有已安裝的軟體版本。 它會顯示已裝版本以及目前機器上 port tree 的版本差異。 pkg_version &prompt.root; pkg_version cvsup = docbook = ... - 第二欄的符號表示:已安裝的軟體版本與目前機器上 port tree 的版本差異。 + 第二欄的符號表示:已安裝的軟體版本與目前機器上 port tree + 的版本差異。 符號 代表意義 - = 已裝的版本與目前機器上 port tree 的版本是同一版的。 + = 已裝的版本與目前機器上 port tree + 的版本是同一版的。 < 與目前機器上 port tree 版本相比起來,已裝的版本較舊。 >與目前機器上 port tree 版本相比起來, 已裝的版本較新。(可能是目前機器上 port tree 尚未更新。) ?已裝的軟體在 ports 索引內找無相關資料。 - (通常可能是,舉例來說:已安裝的該 port 已從 Ports Collection 中移除或改名了。) + (通常可能是,舉例來說:已安裝的該 port 已從 Ports Collection + 中移除或改名了。) *該軟體同時有許多版本。 移除已安裝的 Package pkg_delete packages deleting 若要移除已裝的軟體,那麼請多利用 &man.pkg.delete.1; 工具,比如: &prompt.root; pkg_delete xchat-1.7.1 其他細節部份 - 所有已裝的 package 資訊都會存到 /var/db/pkg 目錄內, - 在該目錄下可以找到記載已裝的軟體檔案清單及該軟體簡介的檔案。 + 所有已裝的 package 資訊都會存到 /var/db/pkg + 目錄內,在該目錄下可以找到記載已裝的軟體檔案清單及該軟體簡介的檔案。 使用 Ports 管理機制 下面我們會介紹如何使用 Ports Collection 來安裝、移除軟體的基本用法。 - 至於其他可用的 make 詳細用法與環境設定,可參閱 &man.ports.7;。 + 至於其他可用的 make 詳細用法與環境設定,可參閱 + &man.ports.7;。 記得安裝 Ports Collection 在安裝任一 ports 之前,必須先裝上 Ports Collection —— 它主要是由 /usr/ports 內一堆 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 細節用法請參閱 安裝 CVSup()。 執行 cvsup &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 主機。 這種情況下,請以 root 權限把 /usr/share/examples/cvsup/ports-supfile 複製到其他位置,比如 /root 或者自己帳號的家目錄。 修改新的 ports-supfile 檔。 CHANGE_THIS.FreeBSD.org 改為離你比較近(快)的 CVSup 主機。 這部分可以參閱完整的 CVSup Mirrors () 站列表 - 然後就開始以類似下列指令跑 cvsup + 然後就開始以類似下列指令跑 cvsup: + &prompt.root; cvsup -L 2 /root/ports-supfile 執行 &man.cvsup.1; 之後,就會開始更新 Ports Collection。 不過這動作只是『更新』並不是『升級』,不會把已裝的軟體重新編譯、升級。 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 Portsnap 細節功能,請參閱 Portsnap 使用篇。 /usr/ports 目錄不存在的話,就建立一下吧: + role="directory">/usr/ports 目錄不存在的話, + 就建立一下吧: &prompt.root; mkdir /usr/ports 接下來,下載壓縮的 Ports Collection 定期更新檔到 /var/db/portsnap 目錄。 完成下載後,要斷線與否都可以。 &prompt.root; portsnap fetch - 若是第一次跑 Portsnap 的話,則需要先解壓到 /usr/ports: + 若是第一次跑 Portsnap 的話, + 則需要先解壓到 /usr/ports &prompt.root; portsnap extract 若已有 /usr/ports 而且只是想更新而已,那麼就照下面作: + role="directory">/usr/ports 而且只是想更新而已, + 那麼就照下面作: &prompt.root; portsnap update 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 鍵。 選擇 Distributions,然後按 Enter 鍵。 選擇 ports,然後按 Space 鍵。 Exit,然後按 Enter 鍵。 選擇要用的安裝來源,比如:CDROM(光碟)、FTP 等方式。 Exit,然後按 Enter 鍵。 按下 X 鍵就可離開 sysinstall 程式。 Ports 的安裝方式 ports installing - 提到 Ports Collection,首先要先說明的是:何謂 skeleton。 - 簡單來講,port skeleton 就是讓軟體如何在 FreeBSD 順利編譯、安裝的最基本檔案組合。 + 提到 Ports Collection,首先要先說明的是:何謂 + skeleton。 + 簡單來講,port skeleton 就是讓軟體如何在 FreeBSD + 順利編譯、安裝的最基本檔案組合。 每份 port skeleton 基本上會有: Makefile 檔。 這個 Makefile 內容有分許多部分, 是用來指定要如何編譯,以及該裝在系統的何處。 distinfo 檔。 編譯該軟體所需下載的檔案、checksum(檢驗檔案用)都會記錄在這檔, 並會用 &man.md5.1; 相關工具來確保所下載的檔案是正確無誤的。 - 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; 程式所產生的。 此外,本目錄也可能會放一些協助編譯該 port 的檔案。 - pkg-descr 檔,內容是比較詳細的軟體介紹,通常會寫得比較多行。 + pkg-descr 檔,內容是比較詳細的軟體介紹, + 通常會寫得比較多行。 - pkg-plist 檔,該 port 會安裝的所有檔案清單。 + pkg-plist 檔,該 port + 會安裝的所有檔案清單。 也是告訴系統在移除該 port 時,需要刪除哪些檔案。 有些 port 還會有其他檔案,像是 pkg-message 檔。 port 系統在一些情況時,會用這些檔案。 如果想知道這些檔案的更多細節用途,以及 port 一般用法,請參閱 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 身份。 + 在安裝任何 port 之前,請務必確認有更新 Ports Collection 到最新版, 此外請檢閱 來檢查所要裝的 port 是否有相關安全漏洞議題需要注意的。 portaudit 會在安裝任何 port 之前, 先自動檢查是否有相關已知的安全漏洞。這個工具在 Ports Collection 內有 - (security/portaudit)。 + (ports-mgmt/portaudit)。 在安裝 port 之前,可以先跑 portaudit -F 指令, 如此一來就會抓最新的資安漏洞資料庫回來核對。 每天的系統定期安檢會自動更新資料庫,並作安全稽核。 詳情請參閱 &man.portaudit.1; 以及 &man.periodic.8; 的線上說明。 Ports Collection 會假設你的網路是可正常連線的。 如果沒有的話,那麼需手動把所需的 distfile 檔複製到 /usr/ports/distfiles 才行。 開始操作之前,要先進入打算安裝的 port 目錄內: &prompt.root; cd /usr/ports/sysutils/lsof - 一旦進入 lsof 目錄後,就可以看到這個 port 的 skeleton 結構。 + 一旦進入 lsof 目錄後,就可以看到這個 port + 的 skeleton 結構。 接下來,就是編譯,也就是 build 這個 port。 只需簡單輸入 make 指令,就可輕鬆完成編譯。 完成後,應該可以看到類似下面訊息: &prompt.root; make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ... &prompt.root; - 請注意:編譯完成後,就會回到提示列(prompt)。接下來就是安裝該 port 了, - 要裝的話,只需在原本的 make 指令後面再加上一個字即可, + 請注意:編譯完成後,就會回到提示列(prompt)。接下來就是安裝該 + port 了,要裝的話,只需在原本的 make + 指令後面再加上一個字即可, 那個字就是 install &prompt.root; make install ===> Installing for lsof-4.57 ... [installation output snipped] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; 一旦回到提示列(prompt),就可以執行剛裝的程式了。 另外,因為 lsof 這程式執行時會有額外權限, 所以會出現安全警告。在編譯、安裝 port 的時候, 請留意任何出現的警告。 此外,建議刪除編譯用的工作目錄(預設是 work), 這目錄內為在編譯過程中所用到的一些臨時檔案, 這些檔案不只佔硬碟空間,而且也可能會在該 port 升級新版時, 造成不必要的困擾。 &prompt.root; make clean ===> Cleaning for lsof-4.57 &prompt.root; make install clean 就可以一口氣完成剛所說 makemake installmake clean 這三個步驟了。 有些 shell 會依據 PATH 環境變數的路徑, 把那些路徑的執行檔 cache 起來,來加速搜尋執行檔。 如果你用的是這類的 shell,那麼在裝完 port 後需要打 rehash 指令,才能執行新裝的執行檔,而 rehash 指令可以在 tcsh 之類的 shell 上使用,若是 sh 的話,則是 hash -r。 詳情請參閱你所使用的 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. - - 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. - - 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. - - 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: + ports 系統採用 &man.fetch.1; 來下載檔案, + 它有許多可調整的環境變數,包括: + FTP_PASSIVE_MODEFTP_PROXY、 + FTP_PASSWORD。 如果是處於有防火牆的環境, + 或者需要使用 FTP/HTTP proxy,那麼就需要設定這些變數。 + 使用細節請參閱 &man.fetch.3; 說明。 + + 若無法隨時一直上網的話,那麼可以利用 + make fetch。 + 只要在 port 的最上層路徑(/usr/ports) + 打這指令,那麼所有需要用到的檔案都會下載。 + 這指令也可以在下層目錄使用,例如: + /usr/ports/net。 + 請注意,若該 port 有相依的 library 或者其他 port 的話, + 那麼它並不會跟著一起下載其他所相依的檔案。 + 若想一次下載所有相依的 port 所有檔案,那麼指令參數請改用 + fetch-recursive 而非 + fetch + + 可以在某類別或最上層路徑打 make + 指令來編譯所有的 port,或者以上述的 make + fetch 指令來下載所有檔案。 + 然而,這樣是相當危險,因為有些 port 不能並存。 + 也有另一種情況,有些 port 可能會以相同檔名, + 但是實際上卻是不同內容的檔案。 + + 在某些罕見情況,可能需加上 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 是相當困難,甚至是不可能的事。 移除已安裝的 Ports 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 升級已安裝的 Ports ports upgrading - 首先,用 &man.pkg.version.1; 指令來列出目前 Ports Collection 中提供了那些可升級的 port 版本: + 首先,用 &man.pkg.version.1; 指令來列出目前 Ports Collection + 中提供了那些可升級的 port 版本: &prompt.root; pkg_version -v <filename>/usr/ports/UPDATING</filename> 每次更新完 Ports Collection 之後,請務必記得在升級 port 前, 先看看 /usr/ports/UPDATING, - 這裡會寫升級方面的各式問題,比如:檔案格式改變、變更設定檔位置、與舊版不相容的問題等, - 以及怎麼解決的完整步驟。 + 這裡會寫升級方面的各式問題,比如:檔案格式改變、變更設定檔位置、 + 與舊版不相容的問題等,以及怎麼解決的完整步驟。 - UPDATING 內容與你看到的其他文件有些不同、相衝的話, - 那麼以 UPDATING 為主。 + UPDATING 內容與你看到的其他文件有些不同 + 、相衝的話, + 那麼請以 UPDATING 為準。 以 Portupgrade 來升級已安裝的 Ports portupgrade 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; 的說明。 以 Portmanager 來升級已安裝的 Ports portmanager 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 所有已裝的軟體,都可以輕鬆用類似下列指令來升級: &prompt.root; portmanager -u 此外,使用參數可以改為 ,如此一來 Portmanager 在升級一些有特殊選項的軟體時,就會詢問該如何升級。 Portmanager 也可以用來裝新 port。與以往常用的 make install clean 指令不同之處在於:它會先升級你要裝的 port 所相依的所有 ports, 然後才開始編譯、安裝要裝的 port。 &prompt.root; portmanager x11/gnome2 若要裝的 port 之軟體相依關係有問題時,也可以用 Portmanager 使它們重歸正軌。而 Portmanager 解決相依問題完畢之後,該 port 也會重新編譯,以因應正確的相依關係。 &prompt.root; portmanager graphics/gimp -f 其他運用方式,請參閱 Portmanager 的線上手冊。 Ports 與硬碟空間 ports 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,正是可自動完成這功能的好工具。 安裝之後,有什麼後續注意事項嗎? 通常,安裝完軟體後,我們可以閱讀所附的一些文件,或需要編輯設定檔, - 來確保這個軟體能順利運作,或在機器開機的時候啟動(如果是 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。 + 如何處理爛掉(Broken)的 Ports? 如果發現某個 port 無法順利安裝、運作, 有幾種方法可以試試看: Problem Report 資料庫 中挖寶看看,說不定已經有人送可用的 patch 上去囉, 那麼或許就可以順利解決問題哩。 向該 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; 來提交問題報告 PR。(請參閱 Writing FreeBSD Problem Reports)。 試試看修正它吧! Porter's Handbook 包括了 Ports - 架構的細節部份,這些書中內容有助您修好有問題的 port 甚至提交自己的 port﹗ + 架構的細節部份,這些書中內容有助您修好有問題的 port + 甚至提交自己的 port﹗ 從較近的 FTP 站點下載編譯好的 package。 package collection 的最上游站是在 ftp.FreeBSD.org 上的 packages 目錄內,但請記得先檢查是否已有 local mirror - 站! 通常情況下這些 package 都可以直接使用,而且應該比自行編譯快一些。 + 站! 通常情況下這些 package 都可以直接使用, + 而且應該比自行編譯快一些。 用 &man.pkg.add.1; 即可順利安裝 package 。