JavaScript is required to for searching.
跳过导航链接
退出打印视图
应用程序包开发者指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  设计软件包

2.  生成软件包

软件包生成过程(任务列表)

软件包环境变量

关于使用环境变量的一般规则

软件包环境变量汇总

创建 pkginfo 文件

定义软件包实例

定义软件包缩写 (PKG)

指定软件包体系结构 (ARCH)

指定软件包指令集体系结构 (SUNW_ISA)

指定软件包版本 (VERSION)

定义软件包名称 (NAME)

定义软件包类别 (CATEGORY)

如何创建 pkginfo 文件

组织软件包的内容

如何组织软件包的内容

创建 prototype 文件

prototype 文件的格式

ftype 字段

class 字段

path 字段

可共同重定位的对象

可单独重定位的对象

参数化路径名

关于对象的源位置和目标位置的简要说明

mode 字段

owner 字段

group 字段

从头创建 prototype 文件

示例-使用 pkgproto 命令创建 prototype 文件

优化使用 pkgproto 命令创建的 prototype 文件

创建文件类型为 vexi 的对象条目

使用多个类定义

示例-优化使用 pkgproto 命令创建的 prototype 文件

prototype 文件添加功能

定义要在安装时创建的其他对象

在安装时创建链接

将软件包分发到多个卷上

嵌套 prototype 文件

modeownergroup 字段设置缺省值

pkgmk 命令提供搜索路径

设置环境变量

如何使用 pkgproto 命令创建 prototype 文件

生成软件包

使用最简单的 pkgmk 命令

pkgmap 文件

如何生成软件包

3.  增强软件包的功能(任务)

4.  验证和转换软件包

5.  软件包创建案例研究

6.  创建软件包的高级技术

词汇表

索引

生成软件包

可使用 pkgmk 命令生成软件包。pkgmk 命令可执行以下任务:

使用最简单的 pkgmk 命令

此命令最简单的形式是不带任何选项的 pkgmk 命令。在使用不带选项的 pkgmk 命令之前,请确保您的当前工作目录包含软件包的 prototype 文件。命令的输出、文件和目录都被写入 /var/spool/pkg 目录。

pkgmap 文件

当使用 pkgmk 命令生成软件包时,它将创建一个替换 prototype 文件的 pkgmap 文件。来自上一个示例中的 pkgmap 文件包含以下内容:

$ more pkgmap
: 1 3170
1 d none SUNWcadap 0755 root sys
1 d none SUNWcadap/demo 0755 root bin
1 f none SUNWcadap/demo/file1 0555 root bin 14868 45617 837527496
1 d none SUNWcadap/lib 0755 root bin
1 f none SUNWcadap/lib/file2 0644 root bin 1551792 62372 837527499
1 d none SUNWcadap/man 0755 bin bin
1 d none SUNWcadap/man/man1 0755 bin bin
1 f none SUNWcadap/man/man1/file3.1 0444 bin bin 3700 42989 837527500
1 f none SUNWcadap/man/man1/file4.1 0444 bin bin 1338 44010 837527499
1 f none SUNWcadap/man/windex 0644 root other 157 13275 837527499
1 d none SUNWcadap/srcfiles 0755 root bin
1 f none SUNWcadap/srcfiles/file5 0555 root bin 12208 20280 837527497
1 f none SUNWcadap/srcfiles/file6 0555 root bin 12256 63236 837527497
1 i pkginfo 140 10941 837531104
$

此文件格式非常类似于 prototype 文件的格式。但是,pkgmap 文件包含以下信息:

如何生成软件包

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