4.2. 安裝軟體的各種方式介紹
前一頁 | 章 4. 軟體套件管理篇：Packages 及 Ports 機制 | 下一頁

## 4.2. 安裝軟體的各種方式介紹

通常要在 UNIX® 系統上安裝軟體時，有幾個步驟要作：

1. 先下載該軟體壓縮檔(tarball)，有可能是原始碼或是 binary 執行檔。

2. 解開該壓縮檔。(通常是以 compress(1) , gzip(1) 或 bzip2(1) 壓縮的)

3. 閱讀相關文件檔，以了解如何安裝。(通常檔名是 `INSTALL` 或 `README` ，或在 `doc/` 目錄下的一些文件)

4. 如果所下載的是原始碼，可能要先修改 `Makefile` 或是執行 `./configure` 之類的 script ，接著再編譯該軟體。

5. 最後測試再測試與安裝。

如果一切順利的話，就這麼簡單。 如果在安裝非專門設計(移植)給 FreeBSD 的軟體時出問題， 那可能需要修改一下它的程式碼，才能正常使用。

當然，我們可以在 FreeBSD 上使用上述的傳統方式來安裝軟體， 但是，我們還有更簡單的選擇。 FreeBSD 提供了兩種省事的軟體管理機制： packages 和 ports。 就在寫這篇文章的時候， 已經有超過 24,000 個 port 軟體可以使用。

所謂的 FreeBSD package 就是別人把該應用程式編譯、打包完畢。 該 package 會包括該應用程式的所有執行檔、設定檔、文件等。 而下載到硬碟上的 package 都可透過 FreeBSD 套件管理指令來進行管理，比如： pkg_add(1)、pkg_delete(1)、pkg_info(1) 等指令。 所以，只需簡單打個指令就可輕鬆安裝新的應用程式了。

而 FreeBSD port 則是用一些檔案，來自動處理應用程式的安裝流程。

請記住：如果打算自己來編譯的話，需要執行很多操作步驟 (下載、解壓、patch、編譯、安裝)。 而 port 呢，則是涵蓋所有需要完成這些工作的必備步驟， 所以只需打一些簡單的指令，那些原始程式碼就會自動下載、解壓、 patch、編譯，直至安裝完畢。

事實上，ports 機制還可以用來產生 packages，以便他人可以用 `pkg_add` 來安裝， 或是稍後會介紹到的其他套件管理指令。

而 packages 以及 ports 它們都是一樣會認 dependencies(軟體相依關係)。 假設：您想安裝某程式，但它有相依另一個已裝的函式庫(library)， 而在 FreeBSD 的 port 以及 package 都有這程式以及該函式庫了。 所以無論是用 `pkg_add` 指令或者 port 方式來裝該程式， 這兩者(package、port)都會先檢查有沒有裝該函式庫， 若沒有就會自動先裝該函式庫了。

這兩種技術都很相似，您可能會好奇為什麼 FreeBSD 會弄出這兩種技術來呢。 其實，packages 和 ports 都有它們各自的長處， 使用哪一種完全取決於您自己的喜好。

Package 好處在於：

- 同樣是壓縮過的 package 與原始碼 tarball 相比， 前者通常會比後者小多了。

- package 並不需再進行編譯。 對大型應用程式如 Mozilla、 KDE、 GNOME 而言，這點顯得相當重要， 尤其是使用速度緩慢的機器。

- 不需要瞭解如何在 FreeBSD 上編譯軟體的相關細節過程， 即可使用 package。

Ports 好處在於：

- 為了讓 package 能在大多數系統上順利執行， 通常在編譯時會使用比較保守的選項。 然而， 透過 port 安裝的話，則可針對特定環境(比如： Pentium 4 或 Athlon CPU) 來調整選項，以符合需求。

- 有些程式在編譯時，會有一些選項可以選擇。 舉例來說，Apache 可以設定一大堆的編譯選項。 若透過 port 來安裝的話， 會比較彈性多了，可以自己選而不必使用預設的編譯選項。

  在某些情況，同樣的程式但不同編譯選項，則會分成不同的 package。 比如： Ghostscript 會因為是否要裝 X11 server， 而劃分為 `ghostscript` 以及 `ghostscript-nox11` 這兩種 package。 如此的調整對 package 算是可成立的， 但若該程式有一個以上或兩種不同的編譯選項時， 這對 package 就沒辦法了。

- 某些軟體的禁止以 binary 方式散佈， 或者說必須以原始碼方式散佈才可。

- 有些人並不信任 binary 套件機制，因為他們覺得至少有原始碼， (理論上)就可以自己檢閱，並尋找是否有潛在的問題。

- 若要對軟體加上自己改過的 patch， 那麼就必須要先有原始碼才能去上相關 patch 修正。

- 有些人喜歡有原始碼在手邊， 所以他們無聊時就可以自己閱讀、鑽研、借用 (當然要符合原始碼本身的授權規定)原始碼等等。

若想注意 port 更新動態的話，可以訂閱 FreeBSD ports 郵遞論壇 以及 FreeBSD ports bugs 郵遞論壇。

### 警告:

在安裝軟體前，最好先看 http://vuxml.freebsd.org/ 內是否有該軟體的安全漏洞通報。

此外，也可以裝 `ports-mgmt/portaudit`，它會自動檢查所有已裝的 的軟體是否有已知的安全漏洞，另外，它還會在裝軟體的編譯過程前先行檢查。 也可以在裝了某些軟體之後，用 `portaudit -F -a` 來作全面強制安檢。

本章接下來將介紹如何在 FreeBSD 使用 package 及 port 來安裝、管理 third-party 軟體。

前一頁 | 上一層 | 下一頁
章 4. 軟體套件管理篇：Packages 及 Ports 機制 | 起始頁 | 4.3. 尋找想裝的軟體

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。