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