12.14. 使用 BROKENFORBIDDENIGNORE 阻止用户安装 port

某些时候会需要阻止用户安装某个 port。 想要告诉用户某个 port 不应被安装, 有许多可以在 port 的 Makefile 中使用的 make 变量。 下列 make 的值, 将是在用户试图安装时得到的提示信息。 务请使用正确的 make 变量, 因为每一个都表达了截然不同的意义, 而且许多自动化系统, 例如 port 联编集群FreshPorts, 以及 portsmon, 都依赖于 Makefile 的正确性。

12.14.1. 变量

  • BROKEN 专门用于表达目前无法正确编译、 安装或卸载这类问题。 如果是临时性的问题, 则可以使用它。

    如果进行了相关的配置, 则联编集群仍将尝试联编它, 以确认导致问题的深层问题是否已被解决。 (不过, 一般情况下, 联编集群并不会这样做。)

    举例来说, 当 port 发生下述情况时, 应使用 BROKEN

    • 无法编译 (does not compile)

    • 无法正确进行配置或安装操作

    • ${LOCALBASE} 以外的地方安装文件

    • 卸载时无法删除所安装的全部文件 (不过, 留下用户改过的文件可接受的, 因为可能希望这样作)

  • FORBIDDEN 用于表示 ports 中包含安全漏洞, 或者可能会给安装了这个 port 的 FreeBSD 系统带来严重的安全隐患 (例如: 一个很不安全的程序, 或包含了能够被轻易攻陷的服务的软件)。 如果发现了安全漏洞, 而其作者没有发布升级版本, 则应立即把那个 port 标记为 FORBIDDEN。 理想情况下, 包含安全漏洞的 port 应被尽快升级, 以便减少包含漏洞的 FreeBSD 主机的数量 (我们希望保持良好的安全记录), 然而, 有时在安全漏洞的披露和软件更新之间可能会有一个间隔, 此时应予以说明。 除了安全之外, 请不要以任何其它理由将 port 标记为 FORBIDDEN

  • IGNORE 用来表示 port 由于某些其它原因不应予以联编。 如果认为发生了结构性的问题, 则应使用它。 任何情况下, 联编集群都不会联编标记为 IGNORE 的 port。 以下是使用 IGNORE 的一些例子:

    • 能够编译但无法正常运行

    • 无法与运行的 FreeBSD 版本一同工作

    • 联编时需要 FreeBSD 内核的源代码, 但用户没有安装它们

    • 由于授权原因, 必须手工下载 distfile

    • 无法与的某个已安装的 port 一同工作 (例如, port 依赖于 www/apache21 而安装的则是 www/apache13)

    注意:

    如果 port 与某个已经安装的 port 冲突 (例如, 它们在同一位置安装同名但功能不同的文件), 则应 使用 CONFLICTS 来标记它CONFLICTS 将自动地设置 IGNORE

  • 如果 port 只应在某些平台上标记为 IGNORE, 还有另外两个方便使用的 IGNORE 变量可供选择: ONLY_FOR_ARCHSNOT_FOR_ARCHS。 例如:

    ONLY_FOR_ARCHS= i386 amd64
    NOT_FOR_ARCHS= alpha ia64 sparc64

    可以使用 ONLY_FOR_ARCHS_REASONNOT_FOR_ARCHS_REASON 来配置定制的 IGNORE 消息。 此外, 还可以使用 ONLY_FOR_ARCHS_REASON_ARCHNOT_FOR_ARCHS_REASON_ARCH 来分别指定与具体平台有关的信息。

  • 如果 port 会下载并安装用于 i386 的预编译二进制文件, 则应设置 IA32_BINARY_PORT。 如果设置了这个变量, 则系统会检查是否已经在 /usr/lib32 目录中安装了 IA32 版本的函数库, 以及内核是否提供了 IA32 兼容支持。 如果这些依赖条件不满足, 则会自动设置 IGNORE

12.14.2. 实现说明

这些字串不应使用引号括起来。 此外, 由于显示给用户的方式不同, 这些字串的措辞也应有所不同。 例如:

BROKEN= this port is unsupported on FreeBSD 5.x
IGNORE= is unsupported on FreeBSD 5.x

它们分别会在 make describe 时产生下面的输出:

===> foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x.
===> foobar-0.1 is unsupported on FreeBSD 5.x.

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.