应用程序包开发者指南

Procedure如何生成软件包

  1. 创建 pkginfo 文件,如果尚未创建。

    有关逐步说明,请参见如何创建 pkginfo 文件

  2. 创建 prototype 文件,如果尚未创建。

    有关逐步说明,请参见如何使用 pkgproto 命令创建 prototype 文件

  3. 将您的当前工作目录设置为包含软件包的 prototype 文件的目录。

  4. 生成软件包。


    $ pkgmk [-o] [-a arch] [-b base-src-dir] [-d device]
       [-f filename] [-l limit] [-p pstamp] [-r rootpath]
       [-v version] [PARAM=value] [pkginst]
    -o

    覆写软件包的现有版本。

    -a arch

    重写 pkginfo 文件中的体系结构信息。

    -b base-src-dir

    pkgmk 命令在开发系统上搜索对象时,要求将 base-src-dir 添加到可重定位路径名的开头。

    -d device

    指定应将软件包复制到 device 上(可能是一个绝对目录路径名、磁盘或可移除磁盘)。

    -f filename

    指定一个文件 filename 作为您的 prototype 文件。缺省名称是 prototypePrototype

    -l limit

    以 512 字节块为单位指定输出设备的最大大小。

    -p pstamp

    重写 pkginfo 文件中的生产标记定义。

    -r rootpath

    请求将根目录 rootpath 用于在开发系统上定位对象。

    -v version

    重写 pkginfo 文件中的版本信息。

    PARAM=value

    设置全局环境变量。首字母为小写字母的变量在生成时被解析。首字母为大写字母的变量被放置到 pkginfo 文件中供安装时使用。

    pkginst

    按软件包缩写或特定实例(例如,SUNWcadap.4)指定软件包。

    有关更多信息,请参见 pkgmk(1) 手册页。

  5. 验证软件包的内容。


    $ 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.
    $
    -d device-name

    指定软件包的位置。请注意,device-name 可以是完整目录路径名或者磁带或可移除磁盘的标识符。

    pkg-abbrev

    待检查的一个或多个软件包(由空格分隔)的名称。如果省略,pkgchk 命令将检查所有可用的软件包。

    pkgchk 命令会列出检查软件包的哪些方面,并根据情况显示警告或错误。有关 pkgchk 命令的更多信息,请参见验证软件包的完整性


    注意 – 注意 –

    应该非常认真地对待错误。错误可能意味着需要修正脚本。如果您不认同 pkgchk 命令的输出,请检查所有错误,然后继续。



示例 2–2 生成软件包

此示例使用在优化使用 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.
$


示例 2–3 指定可重定位文件的源目录

如果您的软件包中包含可重定位文件,可使用 pkgmk 命令的 -b base-src-dir 选项,来指定在创建软件包期间将添加到可重定位路径名开头的路径名。如果您没有为可重定位文件使用 path1=path2 格式,或没有在 prototype 文件中使用 !search 命令指定搜索路径,该选项很有用。

以下命令将生成具有下列特征的软件包:


$ 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 中创建的软件包。



示例 2–4 为信息文件和软件包对象指定不同的源目录

如果您将软件包信息文件(例如 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 章介绍了如何执行此任务,并提供了有关如何将经过验证的软件包转换为分发介质的逐步说明。