5.13. 处理冲突
上一页 | 第 5 章 配置 Makefile | 下一页

## 5.13. 处理冲突

针对不同的 package 或 port 之间的冲突情形， 系统提供了不同的变量来协助开发人员进行表达： `CONFLICTS`、 `CONFLICTS_INSTALL` 和 `CONFLICTS_BUILD`。

### 注意:

这些用于描述冲突的变量会自动地设置 `IGNORE`， 后者的完整介绍， 可以在 第 12.14 节 “使用 `BROKEN`、 `FORBIDDEN` 或 `IGNORE` 阻止用户安装 port” 找到。

在删去相互冲突的 port 时， 建议将 `CONFLICTS` 保留几个月， 以便让那些不经常更新系统的用户能够看到。

### 5.13.1. `CONFLICTS_INSTALL`

如果您的软件包不能与某些软件包同时安装 (例如由于安装同样的文件到相同的位置、 运行时不兼容等等)， 则应把其它软件包的名字列在 `CONFLICTS_INSTALL` 变量中。 此处可以使用 shell 通配符， 如 `*` 和 `?`。 列出其它软件包的名字时需要遵循它们在 `/var/db/pkg` 中出现的样子。 请确保 `CONFLICTS_INSTALL` 不会匹配到您正制作的这个预编译包的名字， 否则， 使用 `FORCE_PKG_REGISTER` 来强制安装就没有办法进行了。 对于 CONFLICTS_INSTALL 的检查是在联编过程之后、 安装开始之前进行的。

### 5.13.2. `CONFLICTS_BUILD`

如果您的软件包在系统中存在某些其它软件包时不能完成联编， 则应把其它软件包的名字列在 `CONFLICTS_BUILD` 变量中。 此处可以使用 shell 通配符， 如 `*` 和 `?`。 列出其它软件包的名字时需要遵循它们在 `/var/db/pkg` 中出现的样子。 对于 CONFLICTS_BUILD 的检查是在联编过程开始之前进行的。 联编时的冲突不会在编译好的包中予以记录。

### 5.13.3. `CONFLICTS`

如果您的 port 在某些其它 port 已经存在的情况下既不能联编， 也不能安装， 则应把其它软件包的名字列在 `CONFLICTS` 变量中。 此处可以使用 shell 通配符， 如 `*` 和 `?`。 列出其它软件包的名字时需要遵循它们在 `/var/db/pkg` 中出现的样子。 请确保 `CONFLICTS` 不会匹配到您正制作的这个预编译包的名字， 否则， 使用 `FORCE_PKG_REGISTER` 来强制安装就没有办法进行了。 对于 CONFLICTS 的检查是在联编过程之后、 安装开始之前进行的。

上一页 | 上一级 | 下一页
5.12. 指定工作临时目录 | 起始页 | 5.14. 安装文件

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

如果对于FreeBSD有问题，请先阅读 文档，如不能解决再联系 <questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.