这种修改 /etc/inittab 的方法使用 build 类。build 类脚本作为 shell 脚本执行,其输出成为正在执行的文件的新版本。换句话说,与该软件包一起提供的 /etc/inittab 数据文件将会执行,执行后的输出将成为 /etc/inittab。
build 类脚本在软件包安装和删除期间执行。如果该文件在安装时执行,参数 install 会传递给该文件。请注意在 build 样例类脚本中,安装操作通过测试此参数来定义。
要使用 build 类编辑 /etc/inittab,您必须完成以下任务:
在 prototype 文件中定义生成文件。
prototype 文件中的生成文件条目应将该文件放置在 build 类中,并将其文件类型定义为 e。请确保将 pkginfo 文件中的 CLASSES 参数定义为 build。
创建 build 类脚本。
build 样例类脚本执行以下过程:
编辑 /etc/inittab 文件以删除对该软件包的任何现有更改。请注意,文件名 /etc/inittab 已被硬编码到 sed 命令中。
如果正在安装软件包,将新行添加到 /etc/inittab 的末尾。一个注释标记会包括在该新条目中,用于描述该条目的来源。
执行 init q 命令。
该解决方案解决了在使用标准类和类操作脚本修改文件和使用 sed 类和 postinstall 脚本修改文件的案例研究中描述的缺点。只需要一个很短的文件(除 pkginfo 和 prototype 文件之外)。因为使用了 PKGINST 参数,所以该文件适用于软件包的多个实例,而且由于 init q 命令可从 build 类脚本中执行,因此不需要 postinstall 脚本。