是否可以设置特定软件包的版本,哪个主要软件包取决于?


10

我们在FreeBSD 10.3上有开发环境。我听说FreeBSD以这种方式管理软件包的依赖关系,它总是在寻找所有软件包的最新版本,而这正是主软件包所依赖的。看起来像是真的。因此,我的问题是:

  1. 这是真的?有官方文件证明吗?
  2. 最好的方法如何克服这个问题?

7
我怀疑,您可以先安装所需特定版本的软件包,然后pkg lock再安装,然后再安装其他所需的软件包。
箭头

1
它还取决于您想要的端口/软件包以及哪个版本。例如,您可以具有不同的python / postgresql / php版本。有时有一个软件可用的多个软件包,有时您可以从端口构建特殊的软件包。
拉斐尔·阿伦斯

3
如果您盲目地运行freebsd更新(或pkg upugrade),可以,它将找到最新的并尝试安装。如箭头所示,现在(从9.2左右开始),您可以使用pkg lock <pkg>来保护已安装的内容及其依赖项免受修改。YMMV。
Quadruplebucky

Answers:


1

FreeBSD如何构建软件包

FreeBSD项目仅用于为发行版和偶尔为STABLE分支生成软件包。旧的软件包构建器使用了名为Portbuild的分布式系统。它将使用较小的2GB-4GB机器的大型集群来构建软件包。这很容易出错,而且速度很慢,这主要是由于计算机较旧。完整版本可能还需要一个星期。如今,使用Poudriere使用单个大型计算机构建软件包。(摘自Brian Drewery的网页)。

另请参见:如何在FreeBSD上更新软件包和端口的组合

FreeBSD与Solaris和Windows一样具有不断发展的ABI(和API),而Linux具有稳定的(停滞?)ABI(和API),因此对于Linux旧的二进制文件仍将在较新的OS版本上运行,而对于非Linux操作系统,这是“总是这样(有时是这样)。

使用pkg lock仍会导致头痛,尽管当您尝试使用它进行升级时它将锁定(提供警告),pkg upgrade但仍假定编号较高的版本更好(理想),并且您要这样做-因此它要求获得许可,您可以允许,但不能保证不会破坏其他功能。请参见上面的URL或以下讨论:“ 您是否希望FreeBSD锁定通过pkg分发的二进制软件包的版本,以用于OS版本? ”。

如果某个软件包被锁定,则有时您将不得不授予解锁并进行升级的许可,而该软件包将适用于一个软件包(及其所有依赖项),因此无法保证其他内容不会与新库不兼容(因此,如果当前可用,还需要进行升级)。

Brian Drewery的博客:“ FreeBSD Journal:Poudriere观点

“停止使用服务器上的portmaster,portupgrade和端口,然后切换到软件包。

使用Poudriere设置您自己的程序包版本仅需几分钟,并且可以在将来节省大量时间。

...

如果您要维护多个FreeBSD系统并且尚未使用软件包,则应该这样做。我仅维护20台服务器,但是在每个系统上建立端口却花费了我很多时间,并且浪费了生产机器上的资源。在多台服务器上构建端口时,很容易使它们的选项或版本不同步。通过在一个系统上一次构建软件包,我减轻了系统负担,减少了工作量,并使所有系统保持一致。无需在每个系统上处理相同的故障,我只需要在构建系统上处理它即可。

但是,结...

为什么您需要偏离官方套餐?端口框架为端口提供了选项支持,以更改构建时配置。并非所有的应用程序都支持运行时配置。某些应用程序必须根据启用的功能进行不同的编译。其他一些选项则只是为了减少默认端口中的功能和依赖项。对于服务器管理员,这可以迅速导致发现某些默认软件包不符合其要求。

所以...

有几种获取自定义程序包的方法。Pkg支持使用多个存储库。可以将其设置为使用正式的FreeBSD存储库作为主要存储库,并使用定制的FreeBSD存储库作为辅助存储库。Pkg不受其可以跟踪的存储库数量的限制,并且可以对其进行优先级排序。多个存储库的问题在于当前可能难以维护。当Pkg从正在跟踪的存储库中检测到已安装的软件包具有不同的选项或依赖性时,该软件包可能会从任何远程版本中重新安装。您可以在升级过程中使用pkg锁PKGNAME锁定软件包,并使用pkg解锁PKGNAME锁定软件包,或者使用pkg批注-A PKGNAME存储库REPONAME将其绑定到特定存储库。使您的自定义存储库的端口树与FreeBSD软件包保持同步还存在一个细微的问题。由于软件包是根据每周拍摄一次的端口树快照构建的,因此,如果您的自定义存储库不匹配,则可能导致冲突。使用所需的选项构建只需要的整个程序包集要简单得多。

解决方案:

Poudriere(大致发音为poo-dree-year-year,法语为“ powder keg”的缩写)被编写为Tinderbox的更快,更简单的替代品。它由Pkg作者Baptiste Daroussin撰写,现在主要由我与Baptiste和其他一些贡献者共同维护。它已迅速成为事实上的FreeBSD端口测试和软件包构建工具。它是官方的构建集群工具,也被FreeBSD Ports项目用来在所谓的“ exp-runs”中测试详尽的补丁程序。它是用POSIX Shell编写的,并正在慢慢移至C组件。与Tinderbox不同,它没有依赖项,并且不需要数据库。它已进行了极大的优化,以在所有操作中高度并行。它使用监狱在非常严格的条件下在沙盒环境中构建端口。使用简单的命令即可一次创建监狱。在构建期间,将为每个用于为端口提供干净位置的CPU自动克隆入狱。”

使用poudriere设置自己的存储库可以使您灵活地使用端口,并简化软件包的管理。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.