Path: blob/main/documentation/content/zh-cn/books/porters-handbook/keeping-up/_index.adoc
18099 views
---
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 之前想要查找一下是否已经有人提交过时, 就非常有用了。