[Power by FreeBSD]
顏國雄 2001/02 初
利用 packages 來安裝軟體
2004/06/22 修改 
在 MS Windows 中安裝軟體時,通常是執行叫 setup.exe 或 install.exe 的安裝程式來安裝已經預先編譯好並打包過的程式, 安裝過程中還會幫順便幫使用做一些系統設定,要移除已安裝的東西則是用 uninstall 來刪除檔案。

Linux 中的 rpm , dpkg , portage , apt-get 也是用來安裝或移除預先編譯好的 binary 軟體套件。

FreeBSD 設計了 ports、packages 兩種方式讓我們來安裝軟體,如果懶得花時間自行編譯軟體,或是沒有調整軟體編譯選項的需求,則可以採用類似前述 MS Windows 或是 Linux rpm 機置的 packages ,packages 其實是別人預先利用 ports 將軟體編譯好,最後再把程式及其相關的資料壓縮打包好後,以 Binary 方式發行的軟體,FreeBSD 已經打包了上萬個軟體置於網站上,我們只要執行一道指令即可輕鬆地安裝好各種軟體。

在 FreeBSD 中有一些 pkg_ 開頭的系統工具可以用來安裝/移除/查詢/產生 packages。

你可以執行 ls /usr/sbin/pkg_* 看到下面的工具:

  • /usr/sbin/pkg_info
  • /usr/sbin/pkg_add
  • /usr/sbin/pkg_delete
  • /usr/sbin/pkg_update
  • /usr/sbin/pkg_version
  • /usr/sbin/pkg_create
  • /usr/sbin/pkg_check
  • /usr/sbin/pkg_sign

 

查詢已安裝的軟體

利用 pkg_info 這個工具,我們可以查詢目前安裝了哪些套件及其相關資訊, 例如:查看 package 到底包裝了哪些東西、執行什麼程序、和其它軟體的相依性......等。

pkg_info 列出目前系統中已經安裝了哪些 packages,
如果後面有加上 pacakge 的名稱則顯示該 package 附的說明
pkg_info -D 後面接要查詢的 pacakge 名稱,可顯示安裝軟體時的重要訊息
pkg_info -a 列出目前系統中已經安裝了哪些 packages及其詳細的說明
pkg_info -L 後面接要查詢的 pacakge 名稱,可列出該 package 的檔案清單
pkg_info -s 後面接要查詢的 pacakge 名稱,可列出該 package 所需的磁碟空間

其它詳細的用法可以 man pkg_info

 

安裝軟體

安裝 FreeBSD 的 pacakges 很容易,只要用執行 pkg_add -v package存放路徑 即可開始安裝,後面接的 packages 檔案則可以由我們自己先行下載並存放在本機上,或是直接安裝放在遠端主機上的檔案 (給檔案的 URL)。

例如:想要安裝 zh-joe 這個軟體

方法一:已預先將軟體存放在 /tmp 目錄中

# pkg_add -v /tmp/zh-joe-2.8_5.tgz

方法二:給軟體所在的 URL

# pkg_add -v ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/zh-joe.tgz

方法三:多加 -r 參數,讓 FreeBSD 自動至預設的遠端網站下載、安裝

# pkg_add -vr zh-joe

說明:

方法三 利用 -r 的參數,預設的遠端主機是 ftp.freebsd.org , 我們可以利用 PACKAGESITE 這個環境變數來改為離我們較近的 FTP 站

例如,FreeBSD stable 版,先執行下面這行指令後再開始安裝:

setenv PACKAGESITE ftp://ftp.tku.edu.tw/OS/FreeBSD/packages/packages-stable/Latest/

如果 root 是使用 csh ,可以將上述指令加入 /root/.cshrc 中。

其它詳細的說明可以 man pkg_add

 

有什麼 packages 可用

因為 FreeBSD 的 packages 其實是經由 ports 打包而來的,ports/packages 已經很有系統分門別類放在各資料夾,我們可以在 FreeBSD 的網站中先利用關鍵字取得自己所要的 packages 名稱及其相關說明,所以當我們需要什麼軟體前可以先到下列網址挖寶:

  • http://freebsd.csie.nctu.edu.tw/www.freebsd.org/data/ports/index.html
  • http://www.freebsd.org/ports/index.html

 

刪除軟體

要刪除已安裝的 packages 則執行 pkg_delete -v package名稱

我們可以先用 pkg_info 查一下 package 的名稱,然後再用 pkg_delete 來刪除。

下面為刪除 zh-joe-2.8 的步驟:

# pkg_info | grep joe

zh-joe-2.8 Joe's own editor

# pkg_delete -v zh-joe-2.8

說明:

前例先用 pkg_info 列出所有已安裝的軟體,經由 grep joe 可以過濾出含有 joe 這個關鍵字眼的那行,查出 zh-joe 的 packages 名稱為 zh-joe-2.8

再用 pkg_delete 來刪除該 package 。

 

打包已安裝的軟體

利用 prots 辛苦編譯好的 ports 可以利用 make package 把相關的程式、資料及訊息壓縮打包成 package ,而已安裝在系統的 packages 檔案,可以利用 pkg_create 將分散到各目錄的檔案再集結成 package 與人分享。

不管是 packages 安裝的,或是用 ports 安裝的, FreeBSD 都會留安裝記錄到 /var/db/pkg 中, 利用裡面的資料檔即可將檔案包裝成 package 。

在 /var/db/pkg 的每個目錄中會有一些以加號+ 開頭大寫檔名的檔案

+COMMENT package的簡訊 用參數 -c
+CONTENTS package的內容:檔案清單,目錄架構... 用參數 -f
+DESC package的說明 用參數 -d
+INSTALL 安裝時需執行的命令(script) 用參數 -i
+DEINSTALL 移除時需執行的命令(script) 用參數 -k

例如:要包裝 zh-joe-2.8 ,我們可以執行

cd /var/db/pkg/zh-joe-2.8

pkg_create -c +COMMENT -d +DESC -f +CONTENTS zh-joe-2.8

這樣就會在目前的目錄中產生一個叫 zh-joe-2.8.tgz

也可以用

pkg_create -c +COMMENT -d +DESC -f +CONTENTS /tmp/zh-joe-2.8

讓 zh-joe-2.8.tgz 輸出到 /tmp 下。

最簡單的方式是利用 -b 的參數:(如果確認 packages 的名稱為 zj-joe-2.8)

pkg_create -b zh-joe-2.8

這樣就會在目前的目錄中產生該 package ,相關的設定檔會自動到 /var/db/pkg/zh-joe-2.8 中抓取,就不用加一大堆參數了!

 

系統必備的外加軟體

  • 一般工具類
    • rc_subr
    • cvsup-without-gui
    • ncftp3
    • wget
    • lynx
    • portupgrade
  • 編譯工具類
    • bison (expat , gettext , libiconv , m4)
    • libtool (13 14 15 三個版本)
    • autoconf257 (expat , gettext , gmake , help2man , libiconv , m4 )
    • autoconf213 (m4)
    • gmake (expat,gettext,libiconv)
      • expat
      • gettext
      • libiconv
      • m4
  • 網路服務類
    • HTTP
      • apache / apache2
      • mod_php4
    • FTP
      • pure-ftpd
    • Mail
      • qpopper (autoconf213 m4)
      • imap-uw (cclient)
    • 其它
      • smaba / samba3
      • isc-dhcp3-server
      • mysql40-server (mysql40-client)

 


 基礎: 書籤 - 簡介 - 安裝 - Slices - Unix基礎 - 基本指令 - 首次登入 - 目錄架構
 系統: 核心編譯 - 系統升級 - Packages - Ports - PicoBSD - Quota
 網路: 服務管理 - WWW - FTP - MAIL - DNS - Samba - NFS - DHCP - webmin - IMP - OpenWebmail
 其它: Backup - UPS - 系統安全 - ipfw&natd - 撥接服務 - 計時制ADSL - 雜記 - FAQ

北市文山區力行國小顏國雄