替换根 (/) 是操作环境的副本,而不是当前正在运行的系统的副本。由Live Upgrade 或定制 JumpStart 程序使用的软件包必须遵循以下这些要求:
在没有用户交互的情况下启用定制 JumpStart 安装或升级
不对当前正在运行的系统进行任何修改,这一点在使用 Solaris Live Upgrade 时是非常必要的
以下列表解释了替换根 ( /) 顺应性的要求。
要成功安装一个操作系统,软件包必须识别并正确遵从替换根 (/ ) 说明符。
软件包可以在其 pkgmap 文件(包映射)中包括绝对路径。如果这些文件存在,则将相应于 pkgadd 命令的 -R 选项来写它们。同时包含绝对路径和相对(可重定位)路径的软件包还可安装到替换根 (/) 中。$PKG_INSTALL_ROOT 被用作绝对文件和可重定位文件的前缀,以便所有路径在通过 pkgadd 安装时都可以正确解析。
正在使用 pkgadd -R 选项安装或使用 pkgrm -R 选项删除的软件包不得更改当前正在运行的系统。
正在使用 pkgadd 命令 -R 选项安装或使用 pkgrm 命令 -R 选项删除的软件包所随附的任何过程脚本均不得更改当前正在运行的系统。您所提供的任何安装脚本都必须引用任何前缀为 $PKG_INSTALL_ROOT 变量的目录或文件。软件包必须写所有带有 $PKG_INSTALL_ROOT 前缀的目录和文件。软件包不得删除不带 $PKG_INSTALL_ROOT 前缀的目录。表 C-2 提供了正确的脚本撰写语法的示例。
表 C-2 安装脚本语法示例
$PKG_INSTALL_ROOT 表示您要向其添加软件包的机器的根 ( /) 文件系统的位置。它被设置为 pkgadd 命令的 -R 参数。例如,如果调用以下命令:
# pkgadd -R /a SUNWvxvm |
则 $PKG_INSTALL_ROOT 就会在软件包安装过程中被置于 /a 之前。
$BASEDIR 指向安装可重定位的软件包对象的 可重定位 基目录。在此仅安装可重定位的对象。不可重定位的对象(即那些在 pkgmap 文件中具有绝对 路径的对象)的安装实际上总是相对于替换根 (/),而不是相对于 $BASEDIR。如果一个软件包没有可重定位的对象,则该软件包被称为绝对软件包(或不可重定位的软件包),同时 $BASEDIR 将是未定义的,因而不可用于软件包过程脚本。
例如,假定一个软件包的 pkgmap 文件包含以下两个项:
1 f none sbin/ls 0555 root sys 3541 12322 1002918510 1 f none /sbin/ls2 0555 root sys 3541 12322 2342423332 |
并且 pkginfo 文件包含一个 $BASEDIR 定义:
BASEDIR=/opt |
如果该软件包使用以下命令安装:
# pkgadd -R /a SUNWtest |
则 ls 就会被安装在 /a/opt/sbin/ls 中,而 ls2 被安装为 /a/sbin/ls2。