Package-Management
如何在 FreeBSD 上更新軟體包和埠的組合
我主要在 FreeBSD 上使用軟體包,因為它們中的大多數都非常適合我。但是,有些不適合我,例如
vim
不包含圖形gvim
.沒問題。我可以改為安裝埠,使用
portmaster editors/vim
並選擇該GTK2
選項。這工作正常。但是,當我執行
pkg upgrade
一段時間後,我會看到以下內容:Reinstalling vim-7.4.110_3 (options changed)
是什麼賦予了?我沒有更改任何選項,也沒有新版本(也沒有在埠中)。是否將我安裝的埠與沒有的遠端版本進行比較
GTK2
?當然我可以讓它
pkg upgrade
完成它的工作並在之後再次安裝埠,但這很愚蠢。更新軟體包和埠組合的推薦方法是什麼?
你需要記住,
pkg
ports 在同一個地方註冊安裝的軟體(一個 SQLite 數據庫/var/db/pkg
)。這兩個系統都沒有記錄任何附加資訊,即特定軟體已安裝為預編譯包或埠。因此,一旦通過任何一種方法安裝了一個軟體,這些工具就無法知道它是如何安裝的。當您為埠選擇 GTK2 支持時,該
editors/vim
埠已在包數據庫中註冊。當你稍後執行pkg upgrade
時,pkg
查看了 的包數據vim
,發現在安裝版本中啟用了 GTK2 支持,而在預編譯包中沒有啟用。pkg upgrade
正在做它應該做的事情 - 找到任何與可用的預編譯包不同的已安裝包,並嘗試升級它們。這些差異可能在於版本號、依賴關係圖、編譯時選項等。防止
pkg
考慮要保護的埠或包(一旦安裝,就工具而言沒有區別)的正確方法是使用pkg lock
命令。或者,如果您發現自己在多個埠上更改選項,您可能會考慮安裝
poudriere
和維護自己的包儲存庫。這需要一些設置,如果您的建構主機有 ZFS 儲存池,則效果最好,但如果您沒有 ZFS,它也可以工作;這是管理自定義軟體建構的一種非常靈活和方便的方式。