Ser*_*ius 10 freebsd dependencies package-management
我们在 FreeBSD 10.3 上有开发环境。我听说 FreeBSD 以这种方式管理包依赖关系,它总是寻找所有包的最新版本,主包依赖于哪个包。它看起来像真的。所以,我的问题是:
FreeBSD 如何构建软件包
\nFreeBSD 项目过去只为发行版本构建软件包,偶尔也为 STABLE 分支构建软件包。旧的软件包构建器使用名为 Portbuild 的分布式系统。它将使用一大群较小的 2GB-4GB 机器来构建包。这很容易出错并且速度很慢,主要是由于机器较旧。完整的构建可能仍需要一周时间。如今,包装是使用 Poudriere 使用单个大型机器来构建的。(来自Brian Drewery 的网页)。
\n\nFreeBSD 与 Solaris 和 Windows 一样具有不断发展的 ABI(和 API),而 Linux 具有稳定(停滞?)的 ABI(和 API),因此对于 Linux,旧的二进制文件仍将在较新的操作系统版本上运行,而对于非 Linux 操作系统,这不是\情况并非总是如此(有时是这样)。
\n使用pkg lock
仍然会导致头痛,虽然当您尝试使用它升级时它会锁定(提供警告),pkg upgrade
但它仍然假设编号越高的版本越好(理想的)并且这是您想要做的事情 - 所以它需要许可,你可以允许,但这并不能保证其他东西不会被破坏。请参阅上面的 URL,或此讨论:“您希望 FreeBSD 锁定通过 pkg 分发的操作系统版本的二进制包的版本吗? ”。
如果一个软件包被锁定,有时您必须授予解锁它并进行升级的权限,虽然这适用于该软件包(及其所有依赖项),但不能保证其他软件包不会与新的库(因此也需要升级,如果当前可用)。
\nBrian Drewery 的博客:“ FreeBSD Journal: Poudriere ” 认为:
\n\n\n“停止在服务器上使用 portmaster、portupgrade 和 ports,并切换到软件包。
\n使用 Poudriere 设置您自己的软件包构建只需几分钟,并将在将来为您节省大量时间。
\n...
\n如果您正在维护多个 FreeBSD 系统并且尚未使用软件包,那么您应该这样做。我只维护 20 台服务器,但在每个系统上构建端口花费了我大量的时间,并且浪费了生产机器上的资源。在多个服务器上构建端口时,很容易使它们的选项或版本不同步。通过在一个系统上构建一次软件包,我减轻了系统的负载,减少了我必须做的工作量,并使我的所有系统保持一致。我不需要在每个系统上处理相同的故障,而只需在构建系统上处理它。
\n
但是,结...
\n\n\n为什么您需要偏离官方软件包?ports 框架为 ports 提供选项支持以更改构建时配置。并非所有应用程序都支持运行时配置。某些应用程序必须根据启用的功能进行不同的编译。其他人可以选择简单地减少默认端口中的功能和依赖项的数量。对于服务器管理员来说,这可能很快就会导致发现某些默认包不满足他们的要求。
\n
所以 ...
\n\n\n有几种方法可以获得自定义包。Pkg 支持使用多个存储库。可以将其设置为使用官方 FreeBSD 存储库作为主要存储库,并使用自定义存储库作为辅助存储库。Pkg 不受它可以跟踪的存储库数量的限制,并且可以按优先级重新排序。多个存储库的问题是目前很难维护。当 Pkg 检测到已安装的软件包与它正在跟踪的存储库具有不同的选项或依赖项时,将从可能的任何远程版本重新安装该软件包。您可以在升级期间使用 pkg lock PKGNAME 和 pkg unlock PKGNAME 锁定软件包,或者使用 pkg annotate -A PKGNAME 存储库 REPONAME 将其绑定到特定存储库。还有一个微妙的问题是如何使自定义存储库的 ports 树与 FreeBSD 包保持同步。由于包是根据每周拍摄一次的 ports 树快照构建的,因此如果您的自定义存储库不匹配,则可能会导致冲突。只需构建一个包含您需要的内容和您想要的选项的完整软件包集要简单得多。
\n
解决方案:
\n\n\nPoudriere(大致发音为 poo-dree-year,法语为 \xe2\x80\x9cpowder keg\xe2\x80\x9d)是为了更快、更简单地替代 Tinderbox 而编写的。它是由 Pkg 作者 Baptiste Daroussin 编写的,现在主要由我和 Baptiste 以及其他一些贡献者一起维护。它已迅速成为事实上的 FreeBSD 端口测试和包构建工具。它是官方构建集群工具,也被 FreeBSD Ports 项目用来测试所谓的 \xe2\x80\x9cexp-runs\xe2\x80\x9d 中的全面补丁。它是用 POSIX shell 编写的,并且正在慢慢转移到 C 组件。与 Tinderbox 不同,它没有依赖项,也不需要数据库。它经过了极大的优化,所有操作都高度并行。它使用监狱在非常严格的条件下在沙盒环境中构建端口。只需一个简单的命令即可创建一次监狱。在构建过程中,会自动为每个使用的 CPU 克隆监狱,为端口提供一个干净的构建位置。”
\n
使用poudriere设置您自己的存储库可以让您拥有端口的灵活性和包的轻松管理。
\n 归档时间: |
|
查看次数: |
1969 次 |
最近记录: |