第 14 章 保持同步
FreeBSD 的 Ports Collection 在持续地进行修改。 这里提供了一些关于如何保持同步的信息。
14.1. FreshPorts
最简单的了解已经被 commit 到 ports 中的更新的方法, 是订阅 FreshPorts。 您可以选择多个 ports 并对其进行监视。 强烈建议维护人员订阅它, 这样就不仅能接收到他们自己所做的修改, 而且能看到其它 FreeBSD committer 所做的改动。 (保持与所依赖的 ports 框架同步是必要的──虽然一般来说您会在这样的 commit 之前收到一个礼貌性的通知, 但有时可能会有人没有注意到需要这样做, 或者这样做很困难。 另外, 有些时候通知的修改也可能是微不足道的。 我们希望每一个人能够正确地进行判断。)
如果想使用 FreshPorts, 之需要建立一个账号。 如果您注册的邮件地址是 @FreeBSD.org
, 您会看到 web 页面右侧的 opt-in 连接。 如果您已经注册了 FreshPorts 账号, 但没有使用 @FreeBSD.org
邮件地址, 则只需把邮件地址改为 @FreeBSD.org
, 重新订阅, 并将其改回。
FreshPorts 也会对每一个 FreeBSD ports tree 上的 commit 进行自动的合法性检查。 如果您订阅了这项服务, 则如果发现了错误, 就会收到来自 FreshPorts 的检测报告。
14.2. 代码库的 Web 访问界面
可以通过 web 界面来浏览源代码库中的文件。 影响整个 ports 系统的修改, 现在都会在 CHANGES 文件中说明。 影响某一个 port 的变动, 则在 UPDATING 文件中说明。 尽管如此, 所有问题最为权威的答案, 毫无疑问应该是 bsd.port.mk 的源代码, 以及相关的文件。
14.3. FreeBSD Ports 邮件列表
如果您维护了某个或某一些 ports, 则应该考虑订阅 FreeBSD ports 邮件列表。 对于 ports 工作方式的重要修改都会在此宣示, 并提交到 CHANGES
。
14.4. 位于 pointyhat.FreeBSD.org
的 FreeBSD Port 联编集群
FreeBSD 的一个最不为人所知的强项是, 它拥有一个专用于持续联编 Ports Collection 的集群, 这个集群会联编所有主要的 OS 版本在每一个 Tier-1 架构上的 package。 您可以在 package 联编和错误日志 找到其结果。
每一个 port 都会被联编, 除非标记为 IGNORE
。 标记了 BROKEN
的 port 仍然会被继续尝试, 以了解是否某些依赖关系的变动解决了其问题 (这是通过给 port 的 Makefile
传 TRYBROKEN
参数来完成的)。
14.5. FreeBSD 的 Ports Distfile 扫描器
联编集群是一组专门用于联编所有 port 最新版本的机器, 其上已经下载了所有的 distfiles。 然而, 由于 Internet 在持续地发生变化, distfile 可能很快就消失了。 FreeBSD Ports distfile 扫描器 试图查询每一个 port 的所有下载站点, 以期找出这些文件是否依然存在。 维护者应规律性地检查这些报告, 这不仅会提高用户联编的速度, 同时也避免了浪费那些镜像了全部 distfile 的志愿者的带宽。
14.6. FreeBSD 的 Ports 追踪系统
另一个非常方便的资源, 就是 FreeBSD Ports 追踪系统 (也被称作 portsmon
)。 这个系统包含了一个处理若干信息来源的数据库, 并提供了一个可以通过 web 方式浏览的界面。 目前, 它利用到了和 ports 有关的问题报告 (PR)、 来自联编集群的错误日志, 以及来自 Ports Collection 的文件所提供的信息。 未来, 还会对它进行进一步的扩展, 从而提供包括 distfile 普查, 以及其它来源在内的更多信息。
要使用这个工具, 可以从查看关于某一个 port 的全部资料的 Port 的纵览 开始。
本文撰写时, 这是唯一一个能够将 GNATS PR 项, 同对应的 port 名字映射起来的资源。 (提交 PR 的用户, 有时并不在 Synopsis (概要) 中指明 port 的名字, 尽管我们希望他们这样做)。 因此, portsmon
在您想要查找是否有人提交某个现存的 port 的 PR, 以及它的联编是否出现了错误; 或在您创建新的 port 之前想要查找一下是否已经有人提交过时, 就非常有用了。