FreeBSD Porter 手册
上一页 |  | 下一页

# 第10章 　升级

如果您发现某个 port 相对原作者所发布的版本已经过时， 则首先需要确认的是您的 port 是最新的。 您可以在 FreeBSD FTP 镜像的 `ports/ports-current` 目录中找到它们。 但是， 如果您正在使用较多的 port， 则可能使用 CVSup 来保持 Ports Collection 最新更为简单， 这在 使用手册 中进行了介绍。 此外， 这样做也有助于保持 port 依赖关系的正确性。

下一步是检查是否已经有在等待的更新。 要完成这项工作， 可以采用下列两种方法之一。 有一个用于搜索 FreeBSD 问题报告 (PR) 数据库 (也被称作 `GNATS`)。 在下拉框中选择 `ports`， 然后输入 port 的名字。

但是， 有些时候人们会忘记将避免混淆的 port 的名字放到 Synopsis 字段中。 这种时候， 您可以试试看 FreeBSD Ports 监视系统 (也被叫做 `portsmon`)。 这个系统会尝试按照 port 的名字来进行分类。 要搜索和某个特定 port 有关的 PR， 可以使用 port概览。

如果没有候审的 PR， 下一步是给 port 的维护者写信， 这可以通过执行 `make maintainer` 看到。 这个人可能正在进行升级工作， 或者由于某种理由暂时没有升级 (例如， 新版本有稳定性问题)； 一般您不希望重复他们的工作。 注意没有维护者的 port 的维护者会显示为 `ports@FreeBSD.org`， 这是一般性 port 问题的邮件列表， 因此发邮件给它一般没什么意义。

如果维护者要求您去完成升级， 或者没有维护者， 您就可以通过自行完成升级来帮助 FreeBSD 了！ 请进行修改， 并保存在新旧目录上执行的递归式 `diff` 的输出 (例如， 如果您修改的 port 的目录名是 `superedit` 而修改前的目录的名字是 `superedit.bak`， 则应提交的是 `diff -ruN superedit.bak superedit` 的结果)。 一致式 (unified) 或 上下文式 (context) diff 都是可以的， 但一般来说 port committer 会更喜欢一致式 diff。 请注意这里使用的选项 `-N`， 它的目的是强制 diff 正确地处理出现新文件， 或老文件被删除的情形。 在把 diff 发给我们之前， 请再次检查输出， 以便确认每一个修改都是有意义的。 为了简化常用的补丁文件操作， 您可以使用 `/usr/ports/Tools/scripts/patchtool.py`。 使用之前， 请首先阅读 `/usr/ports/Tools/scripts/README.patchtool`。

如果 port 目前还无人维护， 而且您自己经常使用它， 请考虑自荐为它的维护者。 FreeBSD 有超过 2000 个没有维护者的 port， 而这正是最需要志愿人员的领域。 (要了解关于维护者的任务描述， 请参见 开发手册中的相关部分。)

将 diff 发送给我们的最佳方式是通过 send-pr(1) (category 一栏写 `ports`)。 如果您正维护那个 port， 请务必在 synopsis 的开头写上 `[maintainer update]`， 并将您的 PR 的 “Class” 设置为 `maintainer-update`。 反之， 您的 PR 的 “Class” 就应该是 `change-request`。 请在信中逐个提及每一个删除或增加的文件， 因为这些都必须明确地在使用 cvs(1) 进行 commit 时明确地指定。 如果 diff 超过了 20K， 请考虑压缩并对其进行 uuencode； 否则， 简单地将其原样加入 PR 即可。

在您 send-pr(1) 之前， 请再次阅读 Problem Reports 一文中的 如何撰写问题报告 小节； 它给出了丰富的关于如何撰写更好的问题报告的介绍。

> 重要: 如果您的更新是由于安全考虑， 或修复已经 commit 的 port 中的严重问题， 请通知 Ports 管理团队 `<portmgr@FreeBSD.org>` 来申请立即重建和分发您的 port 的 package。 否则， 不愿怀疑的使用 pkg_add(1) 的用户， 可能会在未来数周之内继续通过使用 `pkg_add -r` 安装旧版本。

> 注意: 再次强调， 请使用 diff(1) 而非 shar(1) 来发送现有 port 的更新！

现在您已经了解了所需的所有操作， 您可能会像要阅读在 第 14 章 中关于如何保持最新的描述。

上一页 | 起始页 | 下一页
Tinderbox |  | Ports 的安全

若您有关于 FreeBSD ports 系统的问题， 请发送电子邮件至 <ports@FreeBSD.org>。
关于此文档的任何问题， 请致函 <doc@FreeBSD.org>。