创建 pkginfo 文件,如果尚未创建。
有关逐步说明,请参见如何创建 pkginfo 文件。
创建 prototype 文件,如果尚未创建。
有关逐步说明,请参见如何使用 pkgproto 命令创建 prototype 文件。
将您的当前工作目录设置为包含软件包的 prototype 文件的目录。
生成软件包。
$ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device] [-f filename] [-l limit] [-p pstamp] [-r rootpath] [-v version] [PARAM=value] [pkginst] |
覆写软件包的现有版本。
重写 pkginfo 文件中的体系结构信息。
当 pkgmk 命令在开发系统上搜索对象时,要求将 base-src-dir 添加到可重定位路径名的开头。
指定应将软件包复制到 device 上(可能是一个绝对目录路径名、磁盘或可移除磁盘)。
指定一个文件 filename 作为您的 prototype 文件。缺省名称是 prototype 或 Prototype。
以 512 字节块为单位指定输出设备的最大大小。
重写 pkginfo 文件中的生产标记定义。
请求将根目录 rootpath 用于在开发系统上定位对象。
重写 pkginfo 文件中的版本信息。
设置全局环境变量。首字母为小写字母的变量在生成时被解析。首字母为大写字母的变量被放置到 pkginfo 文件中供安装时使用。
按软件包缩写或特定实例(例如,SUNWcadap.4)指定软件包。
有关更多信息,请参见 pkgmk(1) 手册页。
验证软件包的内容。
$ pkgchk -d device-name pkg-abbrev Checking uninstalled directory format package pkg-abbrev from device-name ## Checking control scripts. ## Checking package objects. ## Checking is complete. $ |
指定软件包的位置。请注意,device-name 可以是完整目录路径名或者磁带或可移除磁盘的标识符。
pkgchk 命令会列出检查软件包的哪些方面,并根据情况显示警告或错误。有关 pkgchk 命令的更多信息,请参见验证软件包的完整性。
应该非常认真地对待错误。错误可能意味着需要修正脚本。如果您不认同 pkgchk 命令的输出,请检查所有错误,然后继续。
此示例使用在优化使用 pkgproto 命令创建的 prototype 文件中创建的 prototype 文件。
$ cd /home/jane/InfoFiles $ pkgmk ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system990708093144" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. $ |
如果您的软件包中包含可重定位文件,可使用 pkgmk 命令的 -b base-src-dir 选项,来指定在创建软件包期间将添加到可重定位路径名开头的路径名。如果您没有为可重定位文件使用 path1=path2 格式,或没有在 prototype 文件中使用 !search 命令指定搜索路径,该选项很有用。
以下命令将生成具有下列特征的软件包:
该软件包是使用 pkgproto 命令创建的 prototype 样例文件生成的。有关更多信息,请参见示例-使用 pkgproto 命令创建 prototype 文件。
生成软件包时没有修改 path 字段。
软件包会为 pkginfo 文件添加一个条目。
$ cd /home/jane/InfoFiles $ pkgmk -o -b /home/jane ## Building pkgmap from package prototype file. ## Processing pkginfo file. WARNING: parameter set to "system960716102636" WARNING: parameter set to "none" ## Attempting to volumize 13 entries in pkgmap. part 1 -- 3170 blocks, 17 entries ## Packaging one part. /var/spool/pkg/SUNWcadap/pkgmap /var/spool/pkg/SUNWcadap/pkginfo /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/demo/file1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/lib/file2 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file3.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/man1/file4.1 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/man/windex /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file5 /var/spool/pkg/SUNWcadap/reloc/SUNWcadap/srcfiles/file6 ## Validating control scripts. ## Packaging complete. |
在此示例中,通过指定 -o 选项在缺省目录 /var/spool/pkg 中生成软件包。此选项会覆写在示例 2–2 中创建的软件包。
如果您将软件包信息文件(例如 pkginfo 和 prototype)和软件包对象放置在两个不同的目录中,可使用 pkgmk 命令的 -b base-src-dir 和 -r rootpath 选项创建软件包。如果您的软件包对象位于名为 /product/pkgbin 的目录中,而其他软件包信息文件位于名为 /product/pkgsrc 的目录,可以使用以下命令将软件包放置在 /var/spool/pkg 目录下:
$ pkgmk -b /product/pkgbin -r /product/pkgsrc -f /product/pkgsrc/prototype |
可选择使用以下命令获得相同结果:
$ cd /product/pkgsrc $ pkgmk -o -b /product/pkgbin |
在此示例中,pkgmk 命令使用当前工作目录查找软件包的剩余部分(例如 prototype 和 pkginfo 信息文件)。
如果您要为软件包添加任何可选信息文件和安装脚本,请参见第 3 章。否则,在生成软件包之后,应该验证其完整性。第 4 章介绍了如何执行此任务,并提供了有关如何将经过验证的软件包转换为分发介质的逐步说明。