request 脚本是软件包可直接与安装该软件包的管理员进行交互的唯一途径。例如,该脚本可用于询问管理员是否安装软件包的可选组件。
request 脚本的输出必须是环境变量及其值的列表。此列表可以包括在 pkginfo 文件中创建的任一参数以及 CLASSES 和 BASEDIR 参数。该列表还可引入尚未在其他位置定义的环境变量。不过,适用情况下,pkginfo 文件应该始终提供缺省值。有关软件包环境变量的更多信息,请参见软件包环境变量。
当 request 脚本为环境变量赋值时,它必须使这些值对 pkgadd 命令和其他软件包脚本可用。
request 脚本不能修改任何文件。该脚本仅与正在安装软件包的管理员交互,并根据这种交互创建环境变量赋值的列表。request 脚本以非特权用户 install 身份运行(如果存在该用户)。否则,该脚本将以 root 身份执行。
pkgadd 命令使用一个用于命名 request 脚本的响应文件的参数调用该脚本。响应文件存储管理员的响应。
在软件包删除期间,request 脚本不会执行。不过,该脚本指定的环境变量将被保存,并在软件包删除期间可用。
应该将环境变量赋值添加到安装环境(通过将其写入到响应文件),供 pkgadd 命令和其他打包脚本使用(对于该脚本称为 $1)。
request 脚本不能修改除 CLASSES 和 BASEDIR 参数之外的系统环境变量和标准安装环境变量。该脚本可以修改您创建的其他任何环境变量。
request 脚本只能在 Solaris 2.5 和兼容发行版及之后的发行版中修改 BASEDIR 参数。
对于 request 脚本可以处理的每个环境变量,应该在 pkginfo 文件中为其指定一个缺省值。
输出列表的格式应该是 PARAM=value。例如:
CLASSES=none class1 |
管理员的终端被定义为 request 脚本的标准输入。
不要在 request 脚本中对目标系统执行任何特殊分析。根据该分析测试系统中是否存在特定二进制文件或特定行为以及设置环境变量都是有风险的。无法保证 request 脚本在安装时实际执行。安装软件包的管理员可能提供将插入环境变量的响应文件,而不会调用 request 脚本。如果 request 脚本还评估目标文件系统,该评估可能不会发生。为了进行特殊处理而对目标系统进行的分析最好留给 checkinstall 脚本完成。
如果将安装软件包的管理员可能使用 JumpStartTM 产品,那么不能以交互方式安装该软件包。此时您不应该为软件包提供 request 脚本,或者您需要与管理员沟通,希望他们应该在安装之前使用 pkgask 命令。pkgask 命令存储管理员对 request 脚本的响应。有关 pkgask 命令的更多信息,请参见 pkgask(1M) 手册页。