這里提前說一下,下面的方法是使用portsnap安裝ports红省,但是portsnap貌似是從FreeBSD6.x 或者是FreeBSD7.x以上才可以使用的国觉,我在FreeBSD 5.4時候就不支持portsnap,而只能用cvsup來安裝ports痕寓。另外,cvsup和ports都可以通過光盤來安裝硬毕,cvsup是在CD/DVD->configure->package->cvsup.......而ports是在CD/DVD->configure->distribution->ports.<wbr>
1. 什么是 Ports 系統(tǒng)
簡單的講礼仗,一個 port 就是一個被移植到了 FreeBSD 上的軟件元践。所有這些軟件的集合,加上 FreeBSD 處理這些軟件的各種工具沪羔,就是 Ports 系統(tǒng)象浑。
2. Ports 系統(tǒng)有什么用
每一個被移植到 FreeBSD 上的軟件(就是 Port)愉豺,都能通過 Ports 系統(tǒng)中的工具方便有序的安裝,升級越除,卸載外盯。而且符合 FreeBSD 系統(tǒng)對應用軟件施加的各種規(guī)范饱苟。免去了你到處尋找軟件,自己編譯类垦,安裝蚤认,升級的麻煩糕伐。借助這些 ports 維護者的努力,你也不用擔心這些軟件與系統(tǒng)不兼容導致無法安裝升級等等陪汽。
3. 怎么安裝 Ports 系統(tǒng)
a). 首先設置一個比較快的portsnap服務器挚冤,如果系統(tǒng)默認的地址你的訪問速度也很快,可以不修改
vi /etc/portsnap.conf
添加如下:
SERVERNAME=portsnap.FreeBSD.org
b). 執(zhí)行下面命令
portsnap fetch extract 這里直接下載ports并且解壓
這樣就完成了下載ports系統(tǒng)以及解壓到/usr下面了
還有一種方法是用系統(tǒng)盤安裝Ports澳骤,插入盤讀取Configure->Distributions->Ports
Ports 樹的目錄結構
假設你的 ports 樹安裝在默認位置 /usr/ports宴凉。
文件:
<pre>/usr/ports/CHANGES # ports 開發(fā)者表悬、維護者等的記錄文檔。 /usr/ports/COPYRIGHT # ports 樹的版權籽暇。 /usr/ports/GIDs # 一些 port 可能用到的組名稱饭庞。 /usr/ports/INDEX-xxx # 每個 port 的摘要 /usr/ports/KNOBS # 編譯 port 時需要的一些環(huán)境變量與解釋。 /usr/ports/LEGAL # 某些 port 的協(xié)議限制绸狐。 /usr/ports/MOVED # 被移動/刪除了的 port 列表寒矿。 /usr/ports/Makefile # ports 樹總的 BSD Makefile若债。 /usr/ports/README /usr/ports/UIDs # 一些 port 可能用到的用戶名稱蠢琳。 /usr/ports/UPDATING # ports 樹的更新記錄以及建議傲须。</pre>
目錄:
<pre>/usr/ports/Mk # 編譯 port 需要的 Makefile 集合。 /usr/ports/Templates # 一些模板例衍。 /usr/ports/Tools # 一些工具。 /var/db/ports # 包含所有進行過配置的可定制 port 的可選變量。每一個 port 占用一個目錄翎嫡。 /var/db/pkg # 包含所有已經安裝的 port 的記錄永乌。用 pkg_add 安裝的預編譯好的包也會在此留下記錄翅雏。</pre>
除開以上文件和目錄,其他所有的目錄都是 ports绩脆。一個 port 的目錄結構:
<pre>/usr/ports/分類/名稱</pre>
比如 firefox 被分類在 www靴迫。因此 firefox 在 ports 樹中的位置就是:
<pre>/usr/ports/www/firefox</pre>
使用 Ports 系統(tǒng)
1 查詢
比如玉锌,你想知道 ports 中是否有 pidgin 這個軟件主守,那么可以這樣:
<pre>$cd /usr/ports $make search key=pidgin</pre>
同樣也可以使用
<pre>$cd /usr/ports $make search name=pidgin</pre>
用上面兩種方法查詢時榄融,顯示的信息比較詳細,包括維護者黄刚、依賴包民效、主頁等內容畏邢。如果只想顯示所在的路徑和軟件名稱舒萎,則可以用
<pre>$cd /usr/ports $make quicksearch name=php</pre>
這樣可以使顯示的結果更清晰。
/usr/ports/README 中還有更多的例子可以參考摊灭。
2 安裝
非常簡單帚呼。比如你要安裝 firefox煤杀,那么作為超級用戶 root:
<pre>#cd /usr/ports/www/firefox #make install clean</pre>
3 卸載
要卸載 firefox 的話:
<pre>#cd /usr/ports/www/firefox #make deinstall clean</pre>
4 升級
要升級 firefox:
<pre>#cd /usr/ports/www/firefox #make deinstall reinstall clean</pre>
5 定制 port
有時候沈自,你會發(fā)現(xiàn)安裝某個 port 的時候會有奇怪的事情發(fā)生枯途。比如 editors/vim籍滴,安裝的時候竟然會自動安裝 glib1 和 gtk1异逐,而明明自己的系統(tǒng)上已經有了 glib2 和 gtk2灰瞻。
這是因為有些 port 有很多不是默認的編譯選項酝润。這個時候你需要設定一些環(huán)境變量讓 port 知道該怎么做要销。對于 editors/vim疏咐,你需要設定 WITH_GTK2 來讓 vim 依賴 gtk2 而不是 gtk1。
你可以在 csh 下:
<pre>setenv WITH_GTK2</pre>
或者在 bash 下:
<pre>export WITH_GTK2=yes</pre>
也可以把這個選項寫到 /etc/make.conf 里面:
<pre>WITH_GTK2=yes</pre>
或者你也可以指定在更新/安裝某個 port 的時候使用特定的環(huán)境變量借跪。添加如下代碼(注:csh 的語法掏愁,不是 sh/bash)到 /etc/make.conf 里面:
<pre>.if ${.CURDIR:M*/ports/editors/vim} WITH_GTK2=yes .endif</pre>
這樣下次升級 editors/vim 的時候就會自動依賴到 gtk2 而不是 gtk1 了沦泌。
類似的例子還包括 WITH_GECKO 環(huán)境變量辛掠。請閱讀 ports/Mk/bsd.gecko.mk 來獲得詳細資料公浪。
定制 Ports 系統(tǒng)
1 設定 Ports 樹的位置
當你把 Ports 樹放在非默認位置(/usr/ports)的時候船侧,就需要修改一些環(huán)境變量讓 Ports 中的工具知道你的修改欠气。這個變量就是 PORTSDIR。比如镜撩,你把 Ports 樹放在了 /opt/ports预柒,那么 在 sh/bash 中,執(zhí)行如下命令:
<pre>export PORTSDIR=/opt/ports</pre>
在 csh 中袁梗,你需要執(zhí)行如下命令:
<pre>setenv PORTSDIR /opt/ports</pre>
妥貼的辦法是把這個環(huán)境變量放到超級用戶 root 的 dot.cshrc 文件(/root/.cshrc)里面宜鸯。又或者你想讓普通用戶也能用到這個環(huán)境變量,可以考慮放到 /etc/profile 或者 /etc/csh.cshrc 里面遮怜。
注意淋袖!如果你使用 portsnap 命令來同步 Ports 樹,而你的 Ports 樹不在默認位置锯梁,請在 /etc/portsnap.conf 中也設定你的 Ports 樹的位置即碗。
注意!如果你使用 csup/cvsup 同步 Ports 樹剥懒,而你的 Ports 樹不在默認位置充岛,請在你的 ports-supfile 中也設定你的 Ports 樹的位置展东。
2 設定 dist 文件的位置
所謂 dist 文件爪膊,就是 port 的源碼谦铃。一般情況下瘪菌,這些源碼都是用 tar 打包然后用 bzip2 壓縮的。默認的位置是在 $PORTSDIR/distfiles。但是,你也可以把這些 dist 文件放到另外的地方仑氛。需要設定的環(huán)境變量就是 DISTDIR自阱。你可以根據上面的例子來設定這個環(huán)境變量。
3 設定工作目錄
如果沒有設定工作目錄叫确,ports 系統(tǒng)默認在 port 的目錄進行編譯娄琉。比如你的 firefox 在 /usr/ports/www/firefox城看,那么默認將在 /usr/ports/www/firefox/work 下編譯 firefox。這樣有一個缺點轰胁,如果你的 /usr 目錄不是很大的話,在編譯某些大軟件的時候姿现,比如 gnome,kde 桌面系統(tǒng)時,你的 /usr 空間可能會不足。
解決的辦法之一就是設定環(huán)境變量 WRKDIRPREFIX每篷,比如
<pre>export WRKDIRPREFIX=/opt/obj/portbld</pre>
這個時候 ports 系統(tǒng)就會到 /opt/obj/portbld/usr/ports/www/firefox/work 下編譯 firefox矗晃。
Ports 管理工具
1 系統(tǒng)自帶的工具
同步 ports
portsnap 是同步 ports 用的,前文已經作了介紹。
詳細用法參照這里(搜索“Portsnap 方式”)
為了方便,我在 csh 的配置文件里寫入了如下 alias :
<pre>alias update-ports 'portsnap fetch update'</pre>
大家不妨參考一下。
維護 ports
pkg_add
pkg_create
pkg_delete
pkg_info
pkg_updating
pkg_version
注:
1.具體的用法請參考手冊中的4.4、4.5節(jié)。
2.嚴格來說,pkg_add,pkg_updating并不是用于 ports 的工具,它們只能用于 package 。這里只是為了讓大家全面了解馒闷,哪些是官方的東西塞祈。