前言
大部分 Unix 和 GNU/Linux 會提供套件管理程式,用來自動化安裝和管理軟體的流程。本文介紹 FreeBSD 的套件管理程式。
說明
FreeBSD 有兩種套件格式,packages 和 ports。前者是編譯好的程式,後者則是從原始碼自行編譯。由於編譯大型程式費時甚久,有些甚至要數小時,大部分情形下都會用 packages,只有需要調整編譯選項時才會用 ports。
大部分的套件管理指令需要 root
權限,故本文的指令皆使用 root
。
搜尋套件
使用 pkg search
指令可以搜尋可用的套件。以下範例指令搜尋可用的 AWK (註) :
$ pkg search awk
awka-0.7.5_1 Converts the AWK script to C, then compiles it
bioawk-1.0.7 BWK awk modified for biological data
czkawka-3.2.0_2 Multi functional app to find duplicates, empty folders, similar images etc.
gawk-5.1.0 GNU version of AWK scripting language
goawk-1.8.1 AWK interpreter written in Go
ja-gawk-3.0.6_1 GNU awk + multi-byte extension
mawk-1.3.4.20190203 Interpreter for the AWK Programming Language
mohawk-2.0.21 Simple and lightweight HTTP daemon
nawk-20121220_1 Brian Kernighan's pattern scanning and processing language
nighthawk-3.0.0_6 X11 shoot-'em up which requires some lateral thinking
py38-rawkit-0.6.0 Ctypes based libraw bindings
runawk-1.6.1 Wrapper for AWK interpreter that implements a modules system
(註) 一種用於文字處理的小型語言
由於 AWK 有許多實作品,所以這裡列出多個選項。此外,也有一些和 AWK 無關的程式。因為 pkg search
是以字串搜尋而非語意搜尋的方式來找套件。
pkg search
是少數不需要 root
權限的套件管理指令,因為搜尋套件的動作不會影響到系統。
安裝套件
使用 pkg install
指令來安裝套件。本範例指令安裝 gawk(1)
(GNU Awk):
# pkg install gawk
更新套件
使用 pkg update
指令來更新套件。本範例指令更新 gawk
:
# pkg update gawk
移除套件
使用 pkg remove
指令來移除套件。本範例指令移除 gawk
:
# pkg remove gawk
移除無用套件
安裝應用程式套件往往會附帶安裝一至多個函式庫套件。當該程式移除後,相關的函式庫套件就顯得冗餘。使用以下指令移除無用套件:
# pkg autoremove
有時候系統使用者會刻意安裝一些函式庫套件,像是在學習程式設計時。使用 -n
參數 (dry run) 可以觀看有那些可移除套件但不會真的移除那些套件:
# pkg autoremove -n
下載及更新 Ports
前文提過,若需要從原始碼編譯程式,會用到 ports。本節開始介紹 ports 的使用方式。
第一次使用 ports 時,需要抓取 ports 樹:
# portsnap fetch
承上,第一次抓取 ports 樹後,需要將其解壓縮:
# portsnap extract
日後需要更新 ports 樹時,則使用以下指令:
# portsnap fetch
# portsnap update
編譯及安裝 Ports 套件
Ports 樹位於 /usr/ports 。每個 ports 套件有自己的目錄。以下範例指令編譯及安裝 lsof(1)
:
# cd /usr/ports/sysutils/lsof
# make install clean
make install clean
是 make install
及 make clean
兩個指令的結合。前者會編譯後安裝程式,後者會清除編譯時產生的目的檔 (object files)。
調整 Ports 套件的選項
比起 packages,ports 的優點在於可以調整編譯選項,客製化編譯出的程式。但調整的方式並不是直接改 Makefile (註) ,這樣很容易把 ports 套件改壞。而是用 make config
選擇客製化所需的項目。以下是範例指令:
# cd /usr/ports/editors/nano
# make config
(註) Makefile 是編譯程式的設定檔,需搭配 Make 使用
然後編譯、安裝該程式:
# make install clean
移除 Ports 套件
編譯過的 ports 套件和一般的程式無異,所以直接用 pkg remove
指令即可移除該套件。以下是範例指令:
# pkg remove lsof
也可以移動到該 ports 套件所在的目錄後,以 make deinstall
指令移除該套件:
# cd /usr/ports/sysutils/lsof
# make deinstall