Ric*_*ing 18 freebsd bsd-ports package-management
我主要在 FreeBSD 上使用软件包,因为它们中的大多数都适合我。但是,有些不适合我,例如vim不包含图形gvim.
没问题。我可以改为安装端口,使用portmaster editors/vim并选择该GTK2选项。这工作正常。
但是,当我运行pkg upgrade一段时间后,会看到以下信息:
Reinstalling vim-7.4.110_3 (options changed)
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?我没有更改任何选项,也没有新版本(也没有在端口中)。是否将我安装的端口与没有的远程版本进行比较GTK2?
当然我可以让它pkg upgrade完成它的工作并在之后再次安装端口,但这是愚蠢的。更新包和端口组合的推荐方法是什么?
D_B*_*Bye 15
你需要记住,pkgports 在同一个地方注册安装的软件(一个 SQLite 数据库/var/db/pkg)。两个系统都没有记录任何附加信息,即特定软件是作为预编译包或作为端口安装的。因此,一旦通过任一方法安装了一个软件,工具就无法知道它是如何安装的。
当您为editors/vim端口选择 GTK2 支持时,它已在包数据库中注册。后来跑的时候pkg upgrade,pkg查看了的包数据vim,发现安装的版本已经开启了对GTK2的支持,而预编译的包没有开启。pkg upgrade正在做它应该做的事情 - 查找与可用预编译包不同的任何已安装包,并尝试升级它们。这些差异可能在于版本号、依赖关系图、编译时选项等。
防止pkg考虑要保护的端口或包(一旦安装,就工具而言没有区别)的正确方法是使用pkg lock命令。
或者,如果您发现自己更改了许多端口的选项,您可以考虑安装poudriere和维护自己的软件包存储库。这需要一些设置,如果您的构建主机具有 ZFS 存储池,则效果最佳,但如果您没有 ZFS,它也可以工作;这是管理自定义软件构建的一种非常灵活和方便的方式。