如果指定的软件包是 group 依赖关系的目标,可使用 pkg avoid 命令避免安装指定的软件包。始终可以显式安装与映像兼容的软件包,即使该软件包在避免列表中。安装避免列表中的软件包将从避免列表中删除该软件包。使用 pkg avoid 命令,可以避免在安装组软件包时,安装属于该组软件包的指定软件包。
没有参数时,pkg avoid 命令会显示避免的每个软件包以及对该软件包具有 group 依赖关系的所有软件包。
指定了软件包时,pkg avoid 命令会将当前与指定模式匹配的软件包名称置于避免列表上。只能避免安装当前尚未安装的软件包。如果某个软件包当前是某个 group 依赖关系的目标,则卸载该软件包会将它放置在避免列表中。
如果需要满足 require 依赖关系,则会安装避免列表上的软件包,因此也会将其从避免列表中删除。如果删除了 require 依赖关系,则会卸载该软件包并将其重新添加到避免列表。
可使用 pkg unavoid 命令将指定的软件包从避免列表中显式删除。
使用 unavoid 子命令无法删除避免列表中与某个已安装软件包的 group 依赖关系相匹配的软件包。要从避免列表中删除与某个 group 依赖关系相匹配的软件包,请安装该软件包。
示例 5-5 将软件包添加到避免列表中以及从中删除软件包以下命令输出显示 group/feature/amp 组软件包未安装。将安装属于组软件包的部分软件包,因为已显式安装这些软件包或它们是其他软件包的 require 依赖关系。随 pkg contents 命令指定了 -r 选项是因为指定的软件包未安装。
$ pkg list -a group/feature/amp NAME (PUBLISHER) VERSION IFO group/feature/amp 0.5.11-0.175.2.0.0.33.0 --- $ pkg list -a `pkg contents -o fmri -Hrt depend -a type=group group/feature/amp` NAME (PUBLISHER) VERSION IFO database/mysql-51 5.1.37-0.175.2.0.0.34.0 --- web/php-52 5.2.17-0.175.2.0.0.34.0 i-- web/php-52/extension/php-apc 3.0.19-0.175.2.0.0.34.0 i-- web/php-52/extension/php-mysql 5.2.17-0.175.2.0.0.34.0 i-- web/server/apache-22 2.2.26-0.175.2.0.0.34.0 i-- web/server/apache-22/module/apache-dtrace 0.3.1-0.175.2.0.0.34.0 --- web/server/apache-22/module/apache-fcgid 2.3.9-0.175.2.0.0.34.0 --- web/server/apache-22/module/apache-php5 5.2.17-0.175.1.0.0.18 --r
以下命令将未安装的且属于该组软件包的某个软件包置于避免列表中。由于未安装组软件包,所以避免列表上未标注组软件包。
$ pkg avoid apache-fcgid $ pkg avoid web/server/apache-22/module/apache-fcgid
以下命令显示在安装组软件包时未安装免除的软件包。没有将 -r 选项与 pkg contents 命令一起使用是因为指定的软件包已安装。
$ pkg install group/feature/amp $ pkg list -a `pkg contents -o fmri -Ht depend -a type=group group/feature/amp` NAME (PUBLISHER) VERSION IFO database/mysql-51 5.1.37-0.175.2.0.0.34.0 i-- web/php-52 5.2.17-0.175.2.0.0.34.0 i-- web/php-52/extension/php-apc 3.0.19-0.175.2.0.0.34.0 i-- web/php-52/extension/php-mysql 5.2.17-0.175.2.0.0.34.0 i-- web/server/apache-22 2.2.26-0.175.2.0.0.34.0 i-- web/server/apache-22/module/apache-dtrace 0.3.1-0.175.2.0.0.34.0 i-- web/server/apache-22/module/apache-fcgid 2.3.9-0.175.2.0.0.34.0 --- web/server/apache-22/module/apache-php5 5.2.17-0.175.1.0.0.18 i-r
安装组软件包后,组软件包被标注在避免列表上。
$ pkg avoid web/server/apache-22/module/apache-fcgid (group dependency of 'group/feature/amp')
对于避免列表中的软件包,即使它属于已安装的组软件包,pkg unavoid 命令也不会从避免列表中删除此软件包。要从避免列表中删除此软件包,请安装此软件包。
$ pkg unavoid apache-fcgid pkg unavoid: The following packages are a target of group dependencies; use install to unavoid these: web/server/apache-22/module/apache-fcgid $ pkg install apache-fcgid $ pkg avoid $
如果某软件包已经安装,则您无法将此软件包放置在避免列表上。如果您卸载软件包,则此软件包将置于避免列表上。
$ pkg avoid apache-fcgid pkg avoid: The following packages are already installed in this image; use uninstall to avoid these: web/server/apache-22/module/apache-fcgid $ pkg uninstall apache-fcgid $ pkg avoid web/server/apache-22/module/apache-fcgid (group dependency of 'group/feature/amp')
卸载属于组软件包的软件包会自动将此软件包放置在避免列表上。
$ pkg uninstall database/mysql-51 $ pkg avoid database/mysql-51 (group dependency of 'group/feature/amp') web/server/apache-22/module/apache-fcgid (group dependency of 'group/feature/amp')
如果卸载组软件包,则避免安装的软件包仍位于避免列表上,但避免列表不再标注这些软件包与组软件包之间的关联。
$ pkg uninstall group/feature/amp $ pkg avoid database/mysql-51 web/server/apache-22/module/apache-fcgid $ pkg unavoid database/mysql-51 apache-fcgid $ pkg avoid $