1、如何只抓取 tarball?
如果只希望抓取 tarball 下來的話,僅需下 make fetch 即可。
如果是要抓取單一的 port,以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make fetch
預設會將 joe 的 tarball 下載至 /usr/ports/distfiles/ 目錄下。
如果是希望抓取安裝此 ports 所有須要的其他 ports 的 tarball,以
systuils/portupgrade 為例的話,則:
代碼:
cd /usr/ports/systuils/portupgrade/
make fetch-recursive
預設會將此 ports 的 tarball 與所有須要的其他 ports 的 tarball,下載至 /usr/ports/distfiles/ 目錄下。
如果是希望抓取全部所有 ports 的 tarball ,則:
代碼:
cd /usr/ports/
make fetch
則會所將全部所有 ports 的 tarball 下載至 /usr/ports/distfiles/ 目錄下。
如果是希望抓取全部 ftp 下所有 ports 的 tarball ,則:
代碼:
cd /usr/ports/ftp/
make fetch
則會所將全部 ftp 下所有 ports 的 tarball 下載至 /usr/ports/distfiles/
目錄下。
2、如何僅做到解開 tarball的步驟?
有時候習慣自己 patch/修正 原始碼的時候,很常用到這個功能。
以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make extract
會將 tarball解開至 /usr/ports/editors/joe/work/ 目錄下。
3、如何僅做到解開 tarball 並補上官方提供的 patch?
此方法與 2 有一些類似,不同於是先補上官方提供的 patch ,再行 patch 自己
的修正。以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make patch
會將 tarball解開至 /usr/ports/editors/joe/work/ 目錄下,並已經 patch 上
官方提供的 patch。
4、如何安裝一個新的 port?
如果系統上未安裝此軟體,則可以選擇安裝一個新的 port。
以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make install
如此會在系統上安裝一個新的 joe 軟體。如果需要在安裝完成後,一並清除編輯
時期所留下來的暫存目錄,則可三考 FAQ 8 的方法,一起使用,如:
代碼:
cd /usr/ports/editors/joe/
#make clean
如果想要一次清掉所有 ports 產生的暫存資料,則只要回到 ports 的根目錄執
行即可:
代碼:
cd /usr/ports/
#make clean
5、如何安裝一個新的 port,並將打包(package)起來?
將安裝完成的軟體打包起來,有許多便利性:包括在叢集系統中,可供其它機器
使用,或將未來此軟體出問題可重新利用此 package 重新快速安裝。
以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
#make package
如此會在系統上安裝一個新的 joe 軟體,並將此軟體打包(package)起來。
package 預設會在 /usr/ports/editors/joe/ 目錄下,如果希望集中管理的話,
建議做如下的步驟:
代碼:
mkdir -p /usr/ports/packages/All/
以後打包的 packages 都會存放在此目錄下,並且系統會自動做分類,以方便管
理。如果需要在安裝完成後,一並清除編輯 時期所留下來的暫存目錄,則可三
考 FAQ 8 的方法,一起使用,如:
代碼:
cd /usr/ports/editors/joe/
make package clean
6、如何打包一個 port,並將其所有相依的 ports 也打包起來?
因為 FAQ 5 只有對最終的 port 才進行打包,中間依賴的 ports 並沒有一起打
包,這會出現一個常遇到 的問題,就是如果編輯一個 port 需要依賴其它的
ports,那麽必須將其它 ports 也一起打包,否則安裝 packages 會有相 依賴其
它 ports 的 packages 的問題。
以 sysutils/portupgrade 為例的話,則:
代碼:
cd /usr/ports/sysutils/portupgrade/
make DEPENDS_TARGET=package package
如此會在對所有 portupgrade 所相依賴的 ports 一並打包,也包括自己本身。
7、如何對一個已經安裝的 port 打包?
如果安裝好一個套軟,事前並未打包,事後想打包的話,則:
以 editors/joe 為例的話
代碼:
cd /var/db/pkg/
pkg_create -b joe-{版本號}
會將已安裝的 port 打包起來,放在 /var/db/pkg/ 目錄下。
8、如何清理 ports 編輯期間所產生的暫存資料?
在編輯 port 的時候,會有編輯期間所需要的工作目錄(work),因此通常安裝好
一個套件後,會清除此暫存目錄,以節省系 統磁碟空間。
以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make clean
如果是希望清除所有 ports 的暫存目錄,則:
代碼:
cd /usr/ports/
make clean
如果是希望清除全部 ftp 下所有的暫存目錄,則:
代碼:
cd /usr/ports/ftp/
make clean
9、如何清理 ports 編輯期間所產生的暫存資料,以及其相對應的 tarball?
在 FAQ 8 中,僅只是清除編輯期間所需要的工作目錄(work),並沒有將編譯
ports 時一並下載的 tarball 刪除(相對應之 tarball 預設會存放
在 /usr/ports/distfiles/),如果欲把 tarball 一並刪除,
以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make distclean
make distclean 的步驟包含了 make clean 的功能,也就是說除了會刪除
tarball 外,還會一並M除編輯期間所需要的工作目錄。
如果是希望清除所有 ports 的暫存目錄,及 tarball ,則:
代碼:
cd /usr/ports/
make distclean
如果是希望清除全部 ftp 下所有的暫存目錄,及 tarball,則:
代碼:
cd /usr/ports/ftp/
make distclean
10、如何在安裝 ports 前查詢所需依賴/相關的套件?
在安裝 ports 前,可以查詢所需依賴/相關的套件。
以 mail/p5-Mail-SpamAssassin 為例的話,則:
代碼:
cd /usr/ports/mail/p5-Mail-SpamAssassin/
make all-depends-list #顯示所有相關的套件
make pretty-print-build-depends-list #顯示編譯期間所需要的套件
make pretty-print-run-depends-list #顯示此套件要執行時所需要的套件
11、如何移除已安裝的 ports?
以 editors/joe 為例的話,則:
代碼:
cd /usr/ports/editors/joe/
make deinstall
或是使用 pkg_delete
代碼:
cd /var/db/pkg/
pkg_delete joe-{version}
有時候套件之間的相依性會導致無法直接移除,如果要強制移除的話,則:
代碼:
cd /var/db/pkg/
pkg_delete -f joe-{version}
但很有可能會導致其它的套件執行起來出現問題。
至於二者的差別,請三考FAQ 43