Package-Management

如何在 FreeBSD 上更新軟體包和埠的組合

  • February 12, 2017

我主要在 FreeBSD 上使用軟體包,因為它們中的大多數都非常適合我。但是,有些不適合我,例如vim不包含圖形gvim.

沒問題。我可以改為安裝埠,使用portmaster editors/vim並選擇該GTK2選項。這工作正常。

但是,當我執行pkg upgrade一段時間後,我會看到以下內容:

       Reinstalling vim-7.4.110_3 (options changed)

是什麼賦予了?我沒有更改任何選項,也沒有新版本(也沒有在埠中)。是否將我安裝的埠與沒有的遠端版本進行比較GTK2

當然我可以讓它pkg upgrade完成它的工作並在之後再次安裝埠,但這很愚蠢。更新軟體包和埠組合的推薦方法是什麼?

你需要記住,pkgports 在同一個地方註冊安裝的軟體(一個 SQLite 數據庫/var/db/pkg)。這兩個系統都沒有記錄任何附加資訊,即特定軟體已安裝為預編譯包或埠。因此,一旦通過任何一種方法安裝了一個軟體,這些工具就無法知道它是如何安裝的。

當您為埠選擇 GTK2 支持時,該editors/vim埠已在包數據庫中註冊。當你稍後執行pkg upgrade時,pkg查看了 的包數據vim,發現在安裝版本中啟用了 GTK2 支持,而在預編譯包中沒有啟用。pkg upgrade正在做它應該做的事情 - 找到任何與可用的預編譯包不同的已安裝包,並嘗試升級它們。這些差異可能在於版本號、依賴關係圖、編譯時選項等。

防止pkg考慮要保護的埠或包(一旦安裝,就工具而言沒有區別)的正確方法是使用pkg lock命令。

或者,如果您發現自己在多個埠上更改選項,您可能會考慮安裝poudriere和維護自己的包儲存庫。這需要一些設置,如果您的建構主機有 ZFS 儲存池,則效果最好,但如果您沒有 ZFS,它也可以工作;這是管理自定義軟體建構的一種非常靈活和方便的方式。

引用自:https://unix.stackexchange.com/questions/110167