生成原型文件。
pkgproto [ -i ] [ -c Class ] [Path1 [=Path2 ] ...]
pkgproto 命令扫描指定的路径并且生成原型文件,这个原型文件可能被用作 pkgmk 命令的输入。要实现此目的,该命令的标准输出必须重定向到一个文件。然后,当调用 pkgmk 时可以使用该文件。
如果命令行中没有指定 路径,就假定标准输入是 路径 的列表。如果命令行中列出的 路径 是目录,就搜索该目录的内容。然而,如果输入是从标准输入读取的话,就不搜索被指定为路径的目录。
原型文件的 mac、 fixed 和 inherited 属性不能被 pkgproto 确定,必须手工添加到文件。
缺省情况下, pkgproto 为任何遇到的符号链接创建符号链接条目(ftype=s)。当使用 -i 标志时, pkgproto 为符号链接创建文件条目(ftype=f)。必须编辑原型文件以指定文件类型,如 v (不稳定的(volatile))、 e(可编辑的(editable))或者 x (独占目录(exclusive directory))。pkgproto 检测链接的文件。如果多个文件被链接到一起,第一个遇到的路径被当作是链接的源。
该命令的输出被发送到标准输出。如果你想把结果用作在调用 pkgmk 时的原型文件,就必须重定向标准输出到文件。由于 pkgmk 将 prototype 用作原型文件的缺省文件名,建议你将 pkgproto 的输出定向到名为 prototype 的文件。
必须为你的软件包可能需要的任何安装脚本和文件给该命令产生的每个原型文件添加条目。最少, pkginfo 文件需要一个条目。任何你软件包中使用的下列文件也可能需要条目:copyright、 compver、 depend、 setinfo、 space、任何为软件包定义的安装或删除脚本和/或定义的任何类。
-i | 忽略符号链接并将路径记录为 ftype=f (一个文件)及 ftype=s (符号链接)。 |
-c Class | 映射所有路径的类到 Class。 |
Path1 | 对象位于其中的目录路径。 |
Path2 | 在输出中应该由 Path1 代替的路径。 |
下面的示例显示 pkgproto 的使用和它所产生的输出的部分列表。
$ pkgproto /usr/bin=bin /usr/usr/bin=usrbin /etc=etc f none bin/sed=/bin/sed 0775 bin bin f none bin/sh=/bin/sh 0755 bin daemon f none bin/sort=/bin/sort 0755 bin bin d none etc/master.d 0755 root daemon f none etc/master.d/kernel=/etc/master.d/kernel 0644 root daemon f none etc/rc=/etc/rc 0744 root daemon
$ find / -type d -print | pkgproto d none / 755 root root d none /usr/bin 755 bin bin d none /usr 755 root root d none /usr/bin 775 bin bin d none /etc 755 root root d none /tmp 777 root root
与前一个示例相同,但是将输出捕捉到文件,以备以后用 pkgmk 处理。为 必需的 pkginfo 文件添加的条目以及,例如,在文件被复制到正确的位置后可能被执行的后安装(postinstall)脚本。
$ find / -type d -print | pkgproto >prototype $ (edit the file to add entries for pkginfo and postinstall) $ cat prototype i pkginfo i postinstall d none / 755 root root d none /usr/bin 755 bin bin d none /usr 755 root root d none /usr/bin 775 bin bin d none /etc 755 root root d none /tmp 777 root root
0 | 脚本成功完成。 |
1 | 致命错误。在此点上安装进程终止。 |
/usr/sbin/pkgproto | 包含 pkgproto 命令 |
pkgmk 命令、pkgparam 命令、pkgtrans 命令。
pkginfo 文件