我们在 re2c.perms 文件中先输入如下内容:
#
#prd=re2c
#typ=os50
#rel=0.9.11
#set="Re2c For SCO OpenServer 5.0.X ( version 0.9.11)"
#
# User id's:
#
uid root 0
uid bin 3
#
# Group id's:
#
gid root 0
gid bin 3
#
#
#!RE2C 1350 Re2c For SCO OpenServer 5.0.X ( version 0.9.11)
然后,我们将前面得到的软件包信息文件的临时信息 perms.files 读入进来 得到完整的信
息包说明文件。
#
#prd=re2c
#typ=os50
#rel=0.9.11
#set="Re2c For SCO OpenServer 5.0.X ( version 0.9.11)"
#
# User id's:
#
uid root 0
uid bin 3
#
# Group id's:
#
gid root 0
gid bin 3
#
#
#!RE2C 1350 Re2c For SCO OpenServer 5.0.X ( version 0.9.11)
RE2C F755 bin/bin 1 ./tmp/_lbl/prd=re2c/typ=os50/rel=0.9.11/vol=01
01
RE2C F755 bin/bin 1 ./tmp/init.re2c 01
RE2C F755 bin/bin 1 ./tmp/perms/re2c.perms 01
RE2C F755 bin/bin 1 ./usr/lib/custom/re2c.rmv 01
RE2C F755 bin/bin 1 ./usr/local/re2c 01
RE2C F755 bin/bin 1 ./usr/local/re2c/bin 01
RE2C F755 bin/bin 1 ./usr/local/re2c/bin/re2c 01
RE2C F755 bin/bin 1 ./usr/local/re2c/usr 01
RE2C F755 bin/bin 1 ./usr/local/re2c/usr/man 01
RE2C F755 bin/bin 1 ./usr/local/re2c/usr/man/man1 01
RE2C F755 bin/bin 1 ./usr/local/re2c/usr/man/man1/re2c.1 01
然后,我们修改这个文件,将其中的文件属性修改正确。
比如:re2c 文件,我们可以修改成 X755 ,re2c.1 文件我们可以修改成
F644,./usr/local/re2c 我们可以修改成 D644 等。
好了,我们的软件包信息说明文件已经建立完毕了,下面我们开始编写安装脚本文件
re2c.init 这完全是一个脚本文件,这里,我们希望这个文件可以被任何用户自由使用,
那么,我希望它的链接存在于 /usr/bin 目录下,因此,我们在该文件中编写这样的内容
。
ln -s /usr/local/re2c/bin/re2c /usr/bin/re2c >/dev/null 2>&1 ;
由于,我们的软件在删除后,这个链接指向的文件将不存在,因此,我们还需要编写删
除脚本文件,用于在这个软件包卸载后,能自动清理创建的链接。
我们在 ./usr/lib/custom/re2c.rmv 文件中输入如下内容。
rm -rf /usr/bin/re2c >/dev/null 2>&1 ;
好了,到这里,我们就已经接近于成功了。
下面,我们将生成打包的 shell 脚本文件。这里文件名我们依然可以随意定义。我定义为
tar.sh 运行如下命令:
buildArchive build01.files tar.sh VOL.000.000
运行后生成的文件 tar.sh 的内容如下:
tar Cvf VOL.000.000 ./tmp/_lbl/prd=re2c/typ=os50/rel=0.9.11/vol=01 \
./tmp/init.re2c \
./tmp/perms/re2c.perms \
./usr/lib/custom/re2c.rmv \
./usr/local/re2c/bin/re2c \
./usr/local/re2c/usr/man/man1/re2c.1 \
我们将这个文件的最后以行的 \ 和后面的空格全部删除,然后执行它,得到我们的安装
包。最后,我们将所有生成的文件压缩:
$ sh compress.files
生成压缩安装包 VOL.000.000
$ sh tar.sh
好了,到这里,我们的制作过程全部完成。你可以使用 custom 来安装这个软件包了。
^_^.
[ 例一完 ]
[ 例二:包含有多个组件包的安装包的制作过程 ]
下面,我们说说多组件 tar 格式 custom 安装包的制作方法。
在这里,我们还以上面的 re2c 包为例,再加入本软件包 build 为蓝本来加以讲解。
同样的道理,TAR 格式的安装包至少需要五个(或者更多)最基本的控制文件:
/tmp/init.组件名简称 (你的软件包包含有几个组件,就有几个这样的文件)
/tmp/perms/包文件名.perms
/usr/lib/custom/包文件名.rmv
/usr/lib/custom/组件名.rmv
/tmp/_lbl/prd=包文件名/typ=os版本/rel=软件包的版本号/vol=卷标 (如果每个组件占用一
个软件介质发布的卷,那么有几个组件,就需要几个卷标文件。
这五个(或者更多)文件的功能说明如下。
# -------------------------------
# /tmp/init.组件名简称
# -------------------------------
这是安装脚本文件,该文件在安装程序拷贝其他的软件包后开始执行,主要完成程序包
运行环境的初始化工作。
# -------------------------------------------
# /tmp/perms/软件包简称.perms
# -------------------------------------------
软件包的信息说明文件,该文件包含你要发布的软件包的文件,宿主关系,文件的执行
权限,每个文件分属于哪个安装卷,等等。也包含软件包名,软件包运行的环境,软件
包的版本等信息。
# -------------------------------------------
# /usr/lib/custom/包文件名.rmv
# ------------------------------------------
卸载该软件包的脚本文件。如果您由于某种原因要卸载该软件包,那么在卸载过程开始
之前,该文件被运行,它一般是执行所有的 “/tmp/init.组件名简称” 文件的逆操作。
# -------------------------------------------
# /usr/lib/custom/组件名简称.rmv
# ------------------------------------------
卸载该组件包的脚本文件。如果您由于某种原因要卸载该组件包,那么在卸载过程开始
之前,该文件被运行,它一般是执行的本组件的 “/tmp/init.组件名简称” 文件的逆操作。
# ---------------------------------------------------------------------------------------------
# /tmp/_lbl/prd=包文件名/typ=os版本/rel=软件包的版本号/vol=卷标
# ---------------------------------------------------------------------------------------------
软件包的卷号,主要是确定软件发行介质是否真实有效。
以下就这五个(也许更多)文件的建立来加以说明,我们以 re2c-0.9.11 和 build 组成一
个软件包为例来加以说明。
这里我假设我们准备安装的软件包的文件名为 MyPackages ,版本为 1.0 。
假设,我们的 re2c 组件安装以后的内容如下:
/usr/local/re2c/bin/re2c
/usr/local/re2c/usr/man/man1/re2c.1
同时假设 我们的 build 组件安装以后的内容如下:
/usr/local/build/bin/buildCompress
/usr/local/build/bin/buildParse
/usr/local/build/bin/buildArchive
首先,我们在一个打包用户下建立将来需要安装的文件系统和路径。如:我们可以建立
一个 work 用户,然后在该用户下操作。
进入 work 用户:
login:work
passwd: <you passwd>
创建需要制作安装包的文件在 work 用户下的 Re2c 组件的相关目录。
$ mkdir re2c
$ cd re2c
创建卷标文件(这里,我们假定使用 sco3.2v5.0.x 系统)
$ mkdir -p tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0
$ cd tmp/_lbl_prd=MyPackages/typ=os50/rel=1.0
$ >vol=01
创建文件安装路径(我们假定安装到 /usr/local 目录下去)
$ cd /usr/work/re2c
$ mkdir -p usr/local
$ cd usr/local
拷贝需要安装的文件到该目录下。
$ cp /tmp/re2c/* .
创建系统安装和卸载时的脚本执行文件 init.re2c 和 re2c.rmv,以及整个软件包的卸载脚
本文件 MyPackages.rmv 。
$ cd /usr/work/re2c
$ mkdir -p usr/lib/custom
$ cd tmp
$ >init.re2c
$ cd /usr/work/re2c/usr/lib/custom
$ >re2c.rmv
$ >MyPackages.rmv
创建包文件信息库文件 MyPackages.perms。
$ cd /usr/work/re2c/tmp
$ mkdir perms
$ cd perms
$ >MyPackages.perms
创建 re2c 文件内容信息文件
$ cd /usr/work/re2c
$ find . -print >re2c.files
![nixsky[www.nixsky.com]](/templets/images/toplogo.gif)

