Linux pkgmk (安装包制作命令)用法

时间:2021-09-14 04:23:42

pkgmk 命令

用途

制作可安装的软件包。

语法

pkgmk [ -c ] [ -o ] [ -a Arch ] [ -b BaseDir ] [ -d Directory ] [ -f Prototype ] [ -l Limit ] [ -p PStamp ] [ -r RootPath ] [ -v Version ] [ Variable=Value ... ] [ PkgInst ]

描述

pkgmk 制作一个被用作 pkgadd 命令的输入的可安装软件包。软件包是相关文件和可独立安装的可执行文件的集合。软件包的内容将是目录结构格式。

pkgmk 命令将软件包原型文件用作输入,并且创建 pkgmap 文件。每个原型文件条目的内容被复制到适当的输出位置。关于内容的信息(校验和、文件大小和修改日期)被计算并被存储在 pkgmap 文件中,同时还有在原型文件中指定的属性信息。

标志

-a Arch Arch 覆盖 pkginfo 文件中提供的体系结构信息。
-b BaseDir 预先考虑指定的 BaseDir 以在源及机器上定位可重定位的对象。
-c 压缩非信息文件。当使用 -c 时,必须也指定 -r 选项。Prototype 文件中引用在 RootPath 规范之上的相对路径的条目将不会被压缩。任何在被 pkgmk 处理前已被压缩的文件(也就是仅那些“.Z”格式的文件)将不会被 pkgadd 命令解压。
-d Directory Directory 中创建软件包。指定的目录必须存在。
-f Prototype 将文件 Prototype 用作命令的输入。该文件的缺省名或者是 Prototype 或者是 prototype

可以使用 pkgproto 来创建 Prototype 文件。在这种情况下,必须为在软件包中使用的任何安装脚本和文件手工添加条目。仅需要你所使用的文件和脚本的条目。然而,必须总是为软件包中的 pkginfo 文件添加条目。参见 pkgproto 获取更多的信息。

-l Limit 指定输出设备的以 512 字节大小的块表示的最大尺寸为 Limit 。 缺省情况下,如果输出文件是目录或可安装的设备, pkgmk 将使用 df 命令来动态计算输出设备上可用空间的数量。对于与 pkgtrans 关联来创建带数据流格式的软件包时很有用。
-o 覆盖相同实例。如果已经存在,软件包实例将被覆盖。
-p PStamp PStamp 覆盖 pkginfo 文件中的产品戳记定义。
-r RootPath Prototype 文件中的源路径名附加到指定的 RootPath 中来定位源机器上的对象。
-v Version Version 覆盖 pkginfo 文件中提供的版本信息。
变量= 将指定变量放置到封装环境中。
PkgInst 用于表示软件包名缩写的短字符串。pkgmk 将自动创建新实例,如果版本和/或体系结构不同的话。用户应该仅指定软件包名缩写;特殊的实例不应该被指定,除非用户要覆盖它。

示例

  1. 如果要创建一个 名为 mypkgA 且包含 lspslsuser 命令的软件包,必须首先创建软件包的内容。例如:
    mkdir -p /home/myuser/example/pkgmk/sbin
    cp /usr/sbin/lsps /home/myuser/example/pkgmk/sbin
    cp /usr/sbin/lsuser /home/myuser/example/pkgmk/sbin
    然后,创建 pkginfo 文件。在这个示例中, pkginfo 文件是 /home/myuser/example/pkgmk/pkginfo,它包含下列内容:
    PKG="mypkgA"
    NAME="My Package A"
    ARCH="PPC"
    RELEASE="1.0"
    VERSION="2"
    CATEGORY="Application"
    PSTAMP="AIX 2001/02/05"
    然后,创建 Prototype 文件 /home/myuser/example/pkgmk/prototype,它包含下列内容:
    !search /home/myuser/example/pkgmk/sbin
    i pkginfo=/home/myuser/example/pkgmk/pkginfo
    d example /example 1777 bin bin
    d example /example/pkgmk 1777 bin bin
    d example /example/pkgmk/sbin 1777 bin bin
    f example /example/pkgmk/sbin/lsps 555 bin bin
    f example /example/pkgmk/sbin/lsuser 555 bin bin
    然后,用上述的 Prototypepkginfo 文件通过 pkgmk 命令创建软件包:
    pkgmk -d /tmp -f /home/myuser/example/pkgmk/prototype
    产生如下的输出:
    Building pkgmap from package prototype file
    ## Processing pkginfo file
    WARNING:parameter <CLASSES> set to "example"

    ## Attempting to volumize 5 entries in pkgmap
    Part 1 -- 218 blocks, 10 entries
    /tmp/mypkgA/pkgmap
    /tmp/mypkgA/pkginfo
    /tmp/mypkgA/root/example/pkgmk/sbin/lsps
    /tmp/mypkgA/root/example/pkgmk/sbin/lsuser
    ## Packaging complete
    新建的名为 mypkgA 的软件包现在存在于 /tmp/mypkgA 中。

退出状态

0 脚本成功完成。
1 致命错误。在此点上安装进程终止。
99 内部错误。

文件

/usr/sbin/pkgmk 包含 pkgmk 命令.

 

链接:

http://www.kuqin.com/aixcmds/aixcmds4/pkgmk.htm