虽然 pkgproto 命令在创建初始 prototype 文件时很有用,但它不会为每个需要定义的软件包对象创建条目。此命令不创建全部条目。pkgproto 命令不执行以下任一工作:
为文件类型为 v(可变文件)、e(可编辑的文件)、x(专用目录)或 i(信息文件或安装脚本)的对象创建全部条目
使用一个调用支持多个类
至少,您需要修改 prototype 文件,以添加文件类型为 i 的对象。如果您将信息文件和安装脚本存储在软件包目录的第一级中(例如 /home/jane/SUNWcadap/pkginfo),则 prototype 文件中的一个条目将如下所示:
i pkginfo |
如果您没有将信息文件和安装脚本存储在软件包目录的第一级中,则需要指定它们的源位置。例如:
i pkginfo=/home/jane/InfoFiles/pkginfo |
或者,可以使用 !search 命令指定位置,供 pkgmk 命令在生成软件包时进行查找。有关更多信息,请参见为 pkgmk 命令提供搜索路径。
要为文件类型为 v、e 和 x 的对象添加条目,请遵循prototype 文件的格式中所述的格式,或参阅 prototype(4) 手册页。
切记在任何时候都为文件类型为 e(可编辑)的文件指定一个类,并为该类指定一个关联的类操作脚本。否则,在删除软件包期间这类文件将被删除,即使与其他软件包共享路径名时也是如此。
如果使用 pkgproto 命令创建基本 prototype 文件,可以将所有软件包对象指定给 none 类或一个特定类。如示例-使用 pkgproto 命令创建 prototype 文件中所示,基本 pkgproto 命令将所有对象指定给 none 类。要将所有对象指定给一个特定类,可使用 -c 选项。例如:
$ pkgproto -c classname /home/jane/SUNWcadap > /home/jane/InfoFiles/prototype |
如果使用多个类,您可能需要手动编辑 prototype 文件,并修改每个对象的 class 字段。如果使用类,您还需要在 pkginfo 文件中定义 CLASSES 参数并编写类操作脚本。使用类是可选功能,将在编写类操作脚本中进行详细讨论。
对于在示例-使用 pkgproto 命令创建 prototype 文件中使用 pkgproto 命令创建的 prototype 文件,需要进行几处修改。
需要有一个 pkginfo 文件的条目。
需要将 path 字段更改为 path1=path2 格式,因为软件包源位置位于 /home/jane。由于软件包源位置是一个分层目录,并且 !search 命令不递归搜索,因此使用 path1=path2 格式也许会更轻松。
owner 和 group 字段应该包含目标系统上现有用户和组的名称。也就是说,所有者 jane 将会导致错误,因为该所有者不属于 SunOSTM 操作系统。
修改后的 prototype 文件如下所示:
i pkginfo=/home/jane/InfoFiles/pkginfo d none SUNWcadap=/home/jane/SUNWcadap 0755 root sys d none SUNWcadap/demo=/home/jane/SUNWcadap/demo 0755 root bin f none SUNWcadap/demo/file1=/home/jane/SUNWcadap/demo/file1 0555 root bin d none SUNWcadap/srcfiles=/home/jane/SUNWcadap/srcfiles 0755 root bin f none SUNWcadap/srcfiles/file5=/home/jane/SUNWcadap/srcfiles/file5 0555 root bin f none SUNWcadap/srcfiles/file6=/home/jane/SUNWcadap/srcfiles/file6 0555 root bin d none SUNWcadap/lib=/home/jane/SUNWcadap/lib 0755 root bin f none SUNWcadap/lib/file2=/home/jane/SUNWcadap/lib/file2 0644 root bin d none SUNWcadap/man=/home/jane/SUNWcadap/man 0755 bin bin f none SUNWcadap/man/windex=/home/jane/SUNWcadap/man/windex 0644 root other d none SUNWcadap/man/man1=/home/jane/SUNWcadap/man/man1 0755 bin bin f none SUNWcadap/man/man1/file4.1=/home/jane/SUNWcadap/man/man1/file4.1 0444 bin bin f none SUNWcadap/man/man1/file3.1=/home/jane/SUNWcadap/man/man1/file3.1 0444 bin bin |