13.13.使用 BROKEN、 FORBIDDEN 或 IGNORE 阻止用户安装 port

在某些情况下, 必须防止用户安装某个 port。在 port 的 Makefile 中, 有几个变量可以用来告诉用户这个 port 不能被安装。 这些 make 变量的值, 将成为向用户展示 port 拒绝安装的原因。请使用正确的 make 变量。每个变量所表达的意思都完全不同, 无论是对用户还是对依赖于 Makefile 的自动化系统, 例如 ports 联编集群, 以及 FreshPorts

13.13.1. 变量

BROKEN 是为那些目前不能正确编译、 安装、 卸载或运行的 port 保留的。对于那些被认为是暂时性问题的 port, 可以使用它。

如果有指示, 联编集群仍会尝试联编它们, 以了解基本问题是否已经解决。(然而, 一般来说,集群的运行是不需要这样做的)。

例如, 当一个 port 使用 BROKEN:

  • 不能编译

  • 配置或安装过程失败

  • 安装了 ${PREFIX} 以外的文件

  • 在卸载时没有干净地删除所有文件 (然而, 可以接受并希望 port 留下用户修改过的文件)

  • 在应该可以正常运行的系统上出现运行问题。

FORBIDDEN 适用于包含安全漏洞的 port, 或对安装了该 port 的 FreeBSD 系统的安全性产生严重担忧的 port (例如, 一个被认为不安全的程序或一个提供容易被利用的服务的程序)。一旦某个软件出现了漏洞, 而又没有发布升级版本, 就应立即将 port 标记为 FORBIDDEN。理想的情况是, 当发现安全漏洞时, 尽快升级 port , 以减少易受攻击的 FreeBSD 主机的数量 (我们喜欢以安全著称), 但有时在漏洞披露和易受攻击软件的更新版本之间会有明显的时间间隔。除了安全原因之外, 不要把 port 标记为 FORBIDDEN

IGNORE 是为那些由于其他原因而不能建立的 port 保留的。对于那些被认为是结构性问题的 port , 则应使用它。在任何情况下, 联编集群都不会联编标记为 IGNORE 的 port。例如,当一个 port 使用 IGNORE

在所安装的 FreeBSD 版本上不工作

有一个由于许可限制而不能自动获取的 distfile

与当前安装的其他 port 不兼容 (例如, 这个 port 依赖于 www/drupal7, 但已经安装了 www/drupal8)

如果某个 port 会与当前安装的 port 发生冲突 (例如, 如果它们在同一个地方安装了一个执行不同功能的文件), 请用 CONFLICTS 来代替CONFLICTS 会自行设置 IGNORE

13.13.2 实施说明

不要引用 BROKENIGNORE 和相关变量的值。由于向用户显示信息的方式不同,每个变量的信息措辞也不同:

BROKEN=	fails to link with base -lcrypto
IGNORE=	unsupported on recent versions

导致 make describe 的输出:

===>  foobar-0.1 is marked as broken: fails to link with base -lcrypto.
===>  foobar-0.1 is unsupported on recent versions.

最后更新于

FreeBSD 中文社区