歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix教程 >> FreeBSD軟件安裝卸載工具--Ports和Packages詳解

FreeBSD軟件安裝卸載工具--Ports和Packages詳解

日期:2017/2/27 17:39:10   编辑:Unix教程
FreeBSD

1、如何只抓取 tarball?
2、如何僅做到解開 tarball的步驟?
3、如何僅做到解開 tarball 並補上官方提供的 patch?
4、如何安裝一個新的 port?
5、如何安裝一個新的 port,並將打包(package)起來?
6、如何打包一個 port,並將其所有相依的 ports 也打包起來?
7、如何對一個已經安裝的 port 打包?
8、如何清理 ports 編輯期間所產生的暫存資料?
9、如何清理 ports 編輯期間所產生的暫存資料,以及其相對應的 tarball?
10、如何在安裝 ports 前查詢所需依賴/相關的套件?
11、如何移除已安裝的 ports?
12、如何一並移除所相依的 ports?
13、如何重新安裝已安裝過的 ports?
14、如何以關鍵字搜尋 ports?
15、如何升級已安裝的 ports?
16、如何查詢目前系統安裝了哪些套件?
17、如何查詢目前系統有沒有安裝這個關鍵字的套件?
18、如何查詢某個檔案是屬於哪些套件?
19、如何查詢某個套件安裝了哪些檔案?
20、如何安裝舊版的 ports?
21、如何更新 ports Mk?
22、如何解決安裝 ports 時出現 sed -i 的錯誤?
23、如何列出所有可以升級的 ports?
24、如何得知 ports system 對某個 ports 所提供的編譯三數?
25、如何手動加入編譯 ports 的三數?
26、如何指定 ports 的安裝路徑?
27、安裝 ports 出現 FORCE_PKG_REGISTER 的錯誤訊息
28、安裝 ports 出現 Shared object libintl.so.X not found 的錯誤訊息
29、如何安裝 packages?
30、如何強制安裝 packages?
31、如何查詢 packages 與其他 packages 之間的相依性?
32、如何遠端安裝 packages?
33、如何更新 INDEX 對照表?
34、如何更新 INDEX HTML?
35、如何針對某些 ports 不做 CVSup?
36、如何使用 CVSup 同步 ports collections?
37、安裝 ports 出現 port is outdated 的錯誤訊息
39、安裝 ports 出現 OpenSSL vulnerabilities 的錯誤訊息
40、如何在 FreeBSD 上模擬 Linux 的環境?
41、如何在 FreeBSD 上安裝 Linux rpm?
42、安裝 ports 時,原本應該出現的清單選項不見了
43、如何檢查是否有安裝重覆的 ports/packages? `make deinstall' 與 `pkg_delete' 有什麽不同?
44、安裝 ports 出現 local modification time does not match remote 的
錯誤訊息


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

Copyright © Linux教程網 All Rights Reserved