使用 pkgadd(1M) 手册页中所述的 pkgadd 系统实用程序,可以在安装了区域的 Solaris 系统上添加软件包。
pkgadd 实用程序可以在全局区域中与 -G 选项一起使用,以仅向全局区域中添加软件包。软件包不会传播到其他任何区域。请注意,如果 SUNW_PKG_THISZONE=true,则不必使用 -G 选项。如果 SUNW_PKG_THISZONE=false,则 -G 选项会将其覆盖。
在全局区域中运行 pkgadd 实用程序时,将会进行以下操作。
pkgadd 实用程序可以将软件包添加到以下位置:
仅全局区域,除非软件包设置为 SUNW_PKG_ALLZONES=true
全局区域和所有非全局区域
仅所有非全局区域,前提是软件包已安装在全局区域中
仅当前区域,前提是 SUNW_PKG_THISZONE=true
pkgadd 实用程序不能将软件包添加到以下位置:
非全局区域的任何部分
所有非全局区域,除非软件包已安装在全局区域中
如果在不带 -G 选项,并且 SUNW_PKG_THISZONE=false 的情况下运行 pkgadd 实用程序,则缺省情况下会将指定的软件包添加到所有区域。软件包不会标记为仅安装在全局区域中。
如果在没有 -G 选项和 SUNW_PKG_THISZONE=true 的情况下运行 pkgadd 实用程序,则缺省情况下会将指定的软件包添加到当前(全局)区域。软件包标记为仅安装在全局区域中。
如果使用 -G 选项,则 pkgadd 实用程序将指定的软件包仅添加到全局区域。软件包标记为仅安装在全局区域中。如果安装了任何非全局区域,则不会安装软件包。
要将软件包添加到全局区域和所有非全局区域,请在全局区域中执行 pkgadd 实用程序。以全局管理员的身份,运行不带 -G 选项的 pkgadd。
可以将软件包添加到全局区域和所有非全局区域中,而不用考虑受其影响的区域。
pkgadd 实用程序会执行以下步骤:
检查全局区域和所有非全局区域中软件包的相关性。如果任何区域中都没有安装所需的软件包,则相关性检查将失败。系统会通知全局管理员,提示其是否继续。
将软件包添加到全局区域。
更新全局区域中的软件包数据库。
将软件包添加到每个非全局区域中并更新全局区域中的数据库。
更新每个非全局区域中的软件包数据库。
要仅向全局区域中添加软件包,请在全局区域中以全局管理员身份执行仅带有 -G 选项的 pkgadd 实用程序。
如果以下情况成立,则可以将软件包添加到全局区域中:
该软件包的内容不会影响全局区域中与任何非全局区域共享的任何区域。
该软件包设置为 SUNW_PKG_ALLZONES=false。
pkgadd 实用程序会执行以下步骤:
如果该软件包的内容影响全局区域中与任何非全局区域共享的任何区域,或者软件包设置为 SUNW_PKG_ALLZONES=true,则 pkgadd 将失败。将出现错误消息,告知必须将软件包添加到全局区域和所有非全局区域中。
仅对全局区域执行软件包的相关性检查。如果未安装所需的软件包,则相关性检查将失败。系统会通知全局管理员,提示其是否继续。
将软件包添加到全局区域。
更新全局区域中的软件包数据库。
注释全局区域中的软件包信息,指明仅在全局区域中安装该软件包。如果将来安装非全局区域,则不会安装该软件包。
要向所有非全局区域中添加已安装在全局区域中的软件包,当前必须从全局区域中删除该软件包,然后在所有区域中重新安装。
以下是用于向所有非全局区域中添加已安装在全局区域中的软件包的步骤:
在全局区域中,使用 pkgrm 删除软件包。
在不使用 -G 选项的情况下添加软件包。
要在指定的非全局区域中添加软件包,请以区域管理员身份执行不带任何选项的 pkgadd 实用程序。需要满足以下条件:
pkgadd 实用程序只能将软件包添加到使用该实用程序的非全局区域中。
该软件包不能影响该区域中从全局区域共享的任何区域。
该软件包必须设置为 SUNW_PKG_ALLZONES=false。
pkgadd 实用程序会执行以下步骤: