利用pkg系列工具管理套件

不論是任何系統,管理者總是為了管理好一堆程式套件而大傷腦筋。

Windows 可以用 setup.exe/install.exe 來安裝已經編譯好的程式,
過程中還會做一些系統設定,要移除則用 uninstall 來刪除檔案。

linux 可以用 rpm 來安裝/移除已經編譯好的 binary

FreeBSD 則把以 binary 方式發行的軟體叫做 packages。

它有一些 pkg_ 開頭的系統工具就是用來安裝/移除/查詢/製作套件用的
你可以用 ls /usr/sbin/pkg_* 看到下面的工具:

pkg_add
pkg_create
pkg_check
pkg_delete
pkg_info
pkg_sign
pkg_update
pkg_version

*pkg_info
列出目前系統中已經安裝了哪些 packages,如果後面有加上 pacakge 的名稱則顯示該 package 附的說明

-a 列出目前系統中已經安裝了哪些 packages及其詳細的說明
-L 後面接要查詢的 pacakge 名稱,可列出該 package 的檔案清單
-s 後面接要查詢的 pacakge 名稱,可列出該 package 所需的磁碟空間

*pkg_add
安裝 FreeBSD 的 pacakges 很容易,只要用 pkg_add -v 檔名 即可開始安裝
如果要安裝的 packages 是放在遠端的主機,只要給它檔案的 URL 也可以安裝

1.pkg_add -v zh-joe-2.8_5.tgz(檔案必須已經放在目錄所在的目錄中)
2.pkg_add -v [遠端檔案的URL]

*pkg_delete
要刪除已安裝的 packages 則使用 pkg_delete -v package名稱
一般是先用 pkg_info 查一下 package 的名稱,然後再用 pkg_delete
下面為刪除 zh-joe-2.8 的步驟:

#用 pkg_info 查出 zh-joe 的 packages 名稱為 zh-joe-2.8
root@www [/root] # pkg_info
vim-6.2.61 Vi “workalike”, with many additional features
webmin-1.100_8 Web-based interface for system administration for Unix

#再用 pkg_delete 來刪除該 package
root@www [/root] # pkg_delete -v zh-joe-2.8

*pkg_create
辛苦編譯好的 ports 如果只用一次不太可惜了,
利用 pkg_create 即可將分散到各目錄的檔案再集結成 package 與人分享

不管是 packages 安裝的,或是用 ports 安裝的,
FreeBSD 都會留安裝記錄到 /var/db/pkg 中,
利用裡面的資料檔即可將檔案包裝成 package 在 /var/db/pkg 的每個目錄中會有一些以加號+ 開頭大寫檔名的檔案

參數 -c
+COMMENT package的簡訊

參數 -f
+CONTENTS package的內容:檔案清單,目錄架構

參數 -d
+DESC package的說明

參數 -i
+INSTALL 安裝時需執行的命令(script)

參數 -k
+DEINSTALL 移除時需執行的命令(script)

例如:要包裝 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