亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1729 | 回復(fù): 0
打印 上一主題 下一主題

在SCO OpenServer下制作tar格式的custom安裝包 [復(fù)制鏈接]

論壇徽章:
1
15-16賽季CBA聯(lián)賽之北控
日期:2022-03-04 22:35:50
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-03-21 17:23 |只看該作者 |倒序?yàn)g覽

buildCompress、buildParse、buildArchive 這三個(gè)文件是制作 TAR 格式安裝包的工具性文件,需要配合 SCO Unix 的 shell 命令來(lái)使用,以下就給出一個(gè)簡(jiǎn)要說(shuō)明。(這三個(gè)文件可以在本站軟件下載中找到)。
SCO Unix 通過(guò) custom 安裝文件包時(shí),有兩種格式,一種為 CPIO 格式,這個(gè)格式的文
件建立,可以使用 SCO 提供的 CDMT 客戶分布控制工具包來(lái)建立,一種為 TAR 格式,
使用本 BUILD 工具包來(lái)建立,這里講解的是 BUILD 建立客戶分布控制安裝包的建立過(guò)
程。
以下,我將使用兩個(gè)詳細(xì)的例子來(lái)加以說(shuō)明。
=================================================
[ 例一:只包含一個(gè)組件包的安裝包的制作過(guò)程 ]
TAR 格式的安裝包需要四個(gè)最基本的控制文件:
/tmp/init.包文件名
/tmp/perms/包文件名.perms
/usr/lib/custom/包文件名.rmv
/tmp/_lbl/prd=包文件名/typ=os版本/rel=軟件包的版本號(hào)/vol=卷標(biāo)
這四個(gè)文件的功能說(shuō)明如下:
# -------------------------------
# /tmp/init.包文件名
# -------------------------------
這是安裝腳本文件,該文件在安裝程序拷貝其他的軟件包后開(kāi)始執(zhí)行,主要完成程序包
運(yùn)行環(huán)境的初始化工作。
# -------------------------------------------
# /tmp/perms/包文件名.perms
# -------------------------------------------
軟件包的信息說(shuō)明文件,該文件包含你要發(fā)布的軟件包的文件,宿主關(guān)系,文件的執(zhí)行
權(quán)限,每個(gè)文件分屬于哪個(gè)安裝卷,等等。也包含軟件包名,軟件包運(yùn)行的環(huán)境,軟件
包的版本等信息。
# -------------------------------------------
# /usr/lib/custom/包文件名.rmv
# ------------------------------------------
卸載該軟件包的腳本文件。如果您由于某種原因要卸載該軟件包,那么在卸載過(guò)程開(kāi)始
之前,該文件被運(yùn)行,它一般是執(zhí)行的 “/tmp/init.包文件名” 文件的逆操作。
# ---------------------------------------------------------------------------------------------
# /tmp/_lbl/prd=包文件名/typ=os版本/rel=軟件包的版本號(hào)/vol=卷標(biāo)
# ---------------------------------------------------------------------------------------------
軟件包的卷號(hào),主要是確定軟件發(fā)行介質(zhì)是否真實(shí)有效。
以下就這四個(gè)文件的建立來(lái)加以說(shuō)明,我們以 re2c-0.9.11 為例來(lái)加以說(shuō)明。
假設(shè),我們的 re2c 軟件包文件安裝以后的內(nèi)容如下:
/usr/local/re2c/bin/re2c
/usr/local/re2c/usr/man/man1/re2c.1
首先,我們?cè)谝粋(gè)大包用戶下建立將來(lái)需要安裝的文件系統(tǒng)和路徑。如:我們可以建立
一個(gè) work 用戶,然后在該用戶下操作。
進(jìn)入 work 用戶:
login:work
passwd:
創(chuàng)建需要制作安裝包的文件在 work 用戶下的相關(guān)目錄。
$  mkdir re2c
$ cd re2c
創(chuàng)建卷標(biāo)文件(這里,我們假定使用 sco3.2v5.0.x 系統(tǒng))
$ mkdir -p tmp/_lbl/prd=re2c/typ=os50/rel=0.9.11
$ cd tmp/_lbl_prd=re2c/typ=os50/rel=0.9.11
$ >vol=01
創(chuàng)建文件安裝路徑(我們假定安裝到 /usr/local 目錄下去)
$ cd /usr/work/re2c
$ mkdir -p usr/local
$ cd usr/local
拷貝需要安裝的文件到該目錄下。
$ cp /tmp/re2c/* .
創(chuàng)建系統(tǒng)安裝和卸載時(shí)的腳本執(zhí)行文件 init.re2c 和 re2c.rmv
$ cd /usr/work/re2c
$ mkdir -p usr/lib/custom
$ cd tmp
$ >init.re2c
$ cd /usr/work/re2c/usr/lib/custom
$ >re2c.rmv
創(chuàng)建包文件信息庫(kù)文件 re2c.perms
$ cd /usr/work/re2c/tmp
$ mkdir perms
$ cd perms
$ >re2c.perms
創(chuàng)建文件內(nèi)容信息文件
$ cd /usr/work/re2c
$ find . -print >re2c.files
經(jīng)過(guò)此步驟后,你的文件包內(nèi)容信息文件的內(nèi)容可能如下。
./
./tmp
./tmp/_lbl
./tmp/_lbl/prd=re2c
./tmp/_lbl/prd=re2c/typ=os50
./tmp/_lbl/prd=re2c/typ=os50/rel=0.9.11
./tmp/_lbl/prd=re2c/typ=os50/rel=0.9.11/vol=01
./tmp/init.re2c
./tmp/perms/re2c.perms
./usr
./usr/lib
./usr/lib/custom
./usr/lib/custom/re2c.rmv
./usr/local
./usr/local/re2c
./usr/local/re2c/bin
./usr/local/re2c/bin/re2c
./usr/local/re2c/usr
./usr/local/re2c/usr/man
./usr/local/re2c/usr/man/man1
./usr/local/re2c/usr/man/man1/re2c.1
此時(shí),我們將該文件備份 2 份,文件名可以自定,這里我定義為 build01.files 和
build02.files .
$ cp re2c.files build01.files
$ cp re2c.files build02.files
然后,我們修改 build01.files ,將其中的所有目錄去掉(這樣做的目的是為了壓縮軟件
包,減少發(fā)行介質(zhì)的使用,如果你不想發(fā)布經(jīng)過(guò)壓縮的版本,本步驟可以不做)。
修改后的 build01.files 文件內(nèi)容如下:
./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
然后,我們生成壓縮腳本文件。
$ buildCompress build01.files compress.files
下面,我們開(kāi)始生成你要發(fā)布的軟件包的信息文件,修改你的 build02.files 文件,將該
文件中的公共目錄部分去掉,只保留你自己的私有目錄和所有需要發(fā)布的文件。
修改后的文件內(nèi)容如下:
./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
./usr/local/re2c/bin
./usr/local/re2c/bin/re2c
./usr/local/re2c/usr
./usr/local/re2c/usr/man
./usr/local/re2c/usr/man/man1
./usr/local/re2c/usr/man/man1/re2c.1
好了,我們開(kāi)始生成信息包臨時(shí)文件,我取名字為 perms.files。
$ buildParse build02.files perms.files RE2C bin bin 01
執(zhí)行這個(gè)命令后,你就初步生成了你的軟件包信息文件。該文件的大體內(nèi)容如下。
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
好了,我們可以開(kāi)始編寫完整的軟件包信息文件 re2c.perms 了,我們使用 vi 編輯器打
開(kāi)這個(gè)空文件開(kāi)始編寫。
首先,我們需要確定軟件包的簡(jiǎn)稱,使用的環(huán)境,版本,在安裝時(shí)顯示的軟件包的名稱

我們?cè)?re2c.perms 文件中先輸入如下內(nèi)容:
#
#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)
然后,我們將前面得到的軟件包信息文件的臨時(shí)信息 perms.files 讀入進(jìn)來(lái) 得到完整的信
息包說(shuō)明文件。
#
#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
然后,我們修改這個(gè)文件,將其中的文件屬性修改正確。
比如:re2c 文件,我們可以修改成 X755 ,re2c.1 文件我們可以修改成
F644,./usr/local/re2c 我們可以修改成 D644 等。
好了,我們的軟件包信息說(shuō)明文件已經(jīng)建立完畢了,下面我們開(kāi)始編寫安裝腳本文件
re2c.init 這完全是一個(gè)腳本文件,這里,我們希望這個(gè)文件可以被任何用戶自由使用,
那么,我希望它的鏈接存在于 /usr/bin 目錄下,因此,我們?cè)谠撐募芯帉戇@樣的內(nèi)容
。
ln -s /usr/local/re2c/bin/re2c /usr/bin/re2c >/dev/null 2>&1
由于,我們的軟件在刪除后,這個(gè)鏈接指向的文件將不存在,因此,我們還需要編寫刪
除腳本文件,用于在這個(gè)軟件包卸載后,能自動(dòng)清理創(chuàng)建的鏈接。
我們?cè)?./usr/lib/custom/re2c.rmv 文件中輸入如下內(nèi)容。
rm -rf /usr/bin/re2c >/dev/null 2>&1
好了,到這里,我們就已經(jīng)接近于成功了。
下面,我們將生成打包的 shell 腳本文件。這里文件名我們依然可以隨意定義。我定義為
tar.sh 運(yùn)行如下命令:
buildArchive build01.files tar.sh VOL.000.000
運(yùn)行后生成的文件 tar.sh 的內(nèi)容如下:
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 \
我們將這個(gè)文件的最后以行的 \ 和后面的空格全部刪除,然后執(zhí)行它,得到我們的安裝
包。最后,我們將所有生成的文件壓縮:
$ sh compress.files
生成壓縮安裝包 VOL.000.000
$ sh tar.sh
好了,到這里,我們的制作過(guò)程全部完成。你可以使用 custom 來(lái)安裝這個(gè)軟件包了。
^_^.
[ 例一完 ]
[ 例二:包含有多個(gè)組件包的安裝包的制作過(guò)程 ]
下面,我們說(shuō)說(shuō)多組件 tar 格式 custom 安裝包的制作方法。
在這里,我們還以上面的 re2c 包為例,再加入本軟件包 build 為藍(lán)本來(lái)加以講解。
同樣的道理,TAR 格式的安裝包至少需要五個(gè)(或者更多)最基本的控制文件:
/tmp/init.組件名簡(jiǎn)稱  (你的軟件包包含有幾個(gè)組件,就有幾個(gè)這樣的文件)
/tmp/perms/包文件名.perms
/usr/lib/custom/包文件名.rmv
/usr/lib/custom/組件名.rmv
/tmp/_lbl/prd=包文件名/typ=os版本/rel=軟件包的版本號(hào)/vol=卷標(biāo)  (如果每個(gè)組件占用一
個(gè)軟件介質(zhì)發(fā)布的卷,那么有幾個(gè)組件,就需要幾個(gè)卷標(biāo)文件。
這五個(gè)(或者更多)文件的功能說(shuō)明如下。
# -------------------------------
# /tmp/init.組件名簡(jiǎn)稱
# -------------------------------
這是安裝腳本文件,該文件在安裝程序拷貝其他的軟件包后開(kāi)始執(zhí)行,主要完成程序包
運(yùn)行環(huán)境的初始化工作。
# -------------------------------------------
# /tmp/perms/軟件包簡(jiǎn)稱.perms
# -------------------------------------------
軟件包的信息說(shuō)明文件,該文件包含你要發(fā)布的軟件包的文件,宿主關(guān)系,文件的執(zhí)行
權(quán)限,每個(gè)文件分屬于哪個(gè)安裝卷,等等。也包含軟件包名,軟件包運(yùn)行的環(huán)境,軟件
包的版本等信息。
# -------------------------------------------
# /usr/lib/custom/包文件名.rmv
# ------------------------------------------
卸載該軟件包的腳本文件。如果您由于某種原因要卸載該軟件包,那么在卸載過(guò)程開(kāi)始
之前,該文件被運(yùn)行,它一般是執(zhí)行所有的 “/tmp/init.組件名簡(jiǎn)稱” 文件的逆操作。
# -------------------------------------------
# /usr/lib/custom/組件名簡(jiǎn)稱.rmv
# ------------------------------------------
卸載該組件包的腳本文件。如果您由于某種原因要卸載該組件包,那么在卸載過(guò)程開(kāi)始
之前,該文件被運(yùn)行,它一般是執(zhí)行的本組件的 “/tmp/init.組件名簡(jiǎn)稱” 文件的逆操作。
# ---------------------------------------------------------------------------------------------
# /tmp/_lbl/prd=包文件名/typ=os版本/rel=軟件包的版本號(hào)/vol=卷標(biāo)
# ---------------------------------------------------------------------------------------------
軟件包的卷號(hào),主要是確定軟件發(fā)行介質(zhì)是否真實(shí)有效。
以下就這五個(gè)(也許更多)文件的建立來(lái)加以說(shuō)明,我們以 re2c-0.9.11 和 build 組成一
個(gè)軟件包為例來(lái)加以說(shuō)明。
這里我假設(shè)我們準(zhǔn)備安裝的軟件包的文件名為 MyPackages ,版本為 1.0 。
假設(shè),我們的 re2c 組件安裝以后的內(nèi)容如下:
/usr/local/re2c/bin/re2c
/usr/local/re2c/usr/man/man1/re2c.1
同時(shí)假設(shè) 我們的 build 組件安裝以后的內(nèi)容如下:
/usr/local/build/bin/buildCompress
/usr/local/build/bin/buildParse
/usr/local/build/bin/buildArchive
首先,我們?cè)谝粋(gè)打包用戶下建立將來(lái)需要安裝的文件系統(tǒng)和路徑。如:我們可以建立
一個(gè) work 用戶,然后在該用戶下操作。
進(jìn)入 work 用戶:
login:work
passwd:
創(chuàng)建需要制作安裝包的文件在 work 用戶下的 Re2c 組件的相關(guān)目錄。
$  mkdir re2c
$ cd re2c
創(chuàng)建卷標(biāo)文件(這里,我們假定使用 sco3.2v5.0.x 系統(tǒng))
$ mkdir -p tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0
$ cd tmp/_lbl_prd=MyPackages/typ=os50/rel=1.0
$ >vol=01
創(chuàng)建文件安裝路徑(我們假定安裝到 /usr/local 目錄下去)
$ cd /usr/work/re2c
$ mkdir -p usr/local
$ cd usr/local
拷貝需要安裝的文件到該目錄下。
$ cp /tmp/re2c/* .
創(chuàng)建系統(tǒng)安裝和卸載時(shí)的腳本執(zhí)行文件 init.re2c 和 re2c.rmv,以及整個(gè)軟件包的卸載腳
本文件 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
創(chuàng)建包文件信息庫(kù)文件 MyPackages.perms。
$ cd /usr/work/re2c/tmp
$ mkdir perms
$ cd perms
$ >MyPackages.perms
創(chuàng)建 re2c 文件內(nèi)容信息文件
$ cd /usr/work/re2c
$ find . -print >re2c.files
經(jīng)過(guò)此步驟后,你的文件包內(nèi)容信息文件 re2c.files 的內(nèi)容可能如下。
./
./tmp
./tmp/_lbl
./tmp/_lbl/prd=MyPackages
./tmp/_lbl/prd=MyPackages/typ=os50
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=01
./tmp/init.re2c
./tmp/perms/MyPackages.perms
./usr
./usr/lib
./usr/lib/custom
./usr/lib/custom/MyPackages.rmv
./usr/lib/custom/re2c.rmv
./usr/local
./usr/local/re2c
./usr/local/re2c/bin
./usr/local/re2c/bin/re2c
./usr/local/re2c/usr
./usr/local/re2c/usr/man
./usr/local/re2c/usr/man/man1
./usr/local/re2c/usr/man/man1/re2c.1
此時(shí),我們將該文件備份 2 份,文件名可以自定,這里我定義為 build01.files 和
build02.files .
$ cp re2c.files build01.files
$ cp re2c.files build02.files
然后,我們修改 build01.files ,將其中的所有目錄去掉(這樣做的目的是為了壓縮軟件
包,減少發(fā)行介質(zhì)的使用,如果你不想發(fā)布經(jīng)過(guò)壓縮的版本,本步驟可以不做)。
修改后的 build01.files 文件內(nèi)容如下:
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=01
./tmp/init.re2c
./tmp/perms/MyPackages.perms
./usr/lib/custom/MyPackages.rmv
./usr/lib/custom/re2c.rmv
./usr/local/re2c/bin/re2c
./usr/local/re2c/usr/man/man1/re2c.1
然后,我們生成壓縮腳本文件,并執(zhí)行該壓縮文件來(lái)壓縮你準(zhǔn)備發(fā)布的軟件。
$ buildCompress build01.files compress.files
下面,我們開(kāi)始生成你要發(fā)布的軟件包的信息文件,修改你的 build02.files 文件,將該
文件中的公共目錄部分去掉,只保留你自己的私有目錄和所有需要發(fā)布的文件。
修改后的文件內(nèi)容如下:
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=01
./tmp/init.re2c
./tmp/perms/MyPackages.perms
./usr/lib/custom/MyPackages.rmv
./usr/lib/custom/re2c.rmv
./usr/local/re2c
./usr/local/re2c/bin
./usr/local/re2c/bin/re2c
./usr/local/re2c/usr
./usr/local/re2c/usr/man
./usr/local/re2c/usr/man/man1
./usr/local/re2c/usr/man/man1/re2c.1
好了,我們開(kāi)始生成信息包臨時(shí)文件,我取名字為 perms.files。
$ buildParse build02.files perms.files RE2C bin bin 01
執(zhí)行這個(gè)命令后,你就初步生成了你的軟件包信息文件。該文件的大體內(nèi)容如下。
RE2C F755 bin/bin 1
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/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/MyPackages.rmv 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
好了,我們可以開(kāi)始編寫完整的軟件包信息文件 MyPackages.perms 了,我們使用 vi 編
輯器打開(kāi)這個(gè)空文件開(kāi)始編寫。
首先,我們需要確定軟件包的簡(jiǎn)稱,使用的環(huán)境,版本,在安裝時(shí)顯示的軟件包的名稱
。
我們?cè)?MyPackages.perms 文件中先輸入如下內(nèi)容:
#
#prd=MyPackages
#typ=os50
#rel=1.0
#set="MyPackages For SCO OpenServer 5.0.X  ( version 1.0 )"
#
# User id's:
#
uid root  0
uid bin  3
#
# Group id's:
#
gid root  0
gid bin  3
#
#
#!ALL  1350 MyPackages For SCO OpenServer 5.0.X  ( version 1.0)
然后,我們將前面得到的軟件包信息文件的臨時(shí)信息 perms.files 讀入進(jìn)來(lái) 得到完整的信
息包說(shuō)明文件。
#
#prd=MyPackages
#typ=os50
#rel=1.0
#set="MyPackages For SCO OpenServer 5.0.X  ( version 1.0 )"
#
# User id's:
#
uid root  0
uid bin  3
#
# Group id's:
#
gid root  0
gid bin  3
#
#
#!ALL  1350 MyPackages For SCO OpenServer 5.0.X  ( version 1.0)
#
ALL F755 bin/bin 1 ./usr/lib/custom/MyPackages.rmv 01
#
PERM F755 bin/bin 1 ./tmp/perms/MyPackages.perms 01
#
#!RE2C  1350 Re2c For SCO OpenServer 5.0.X  ( version 0.9.11)
RE2C F755 bin/bin 1
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=01     
    01
RE2C F755 bin/bin 1 ./tmp/init.re2c   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
然后,我們修改這個(gè)文件,將其中的文件屬性修改正確。
比如:re2c 文件,我們可以修改成 X755 ,re2c.1 文件我們可以修改成
F644,./usr/local/re2c 我們可以修改成 D644 等。
這個(gè)地方應(yīng)特別注意:以下文件內(nèi)容的位置和所屬于的組件特性:
如信息包文件 MyPackages.perms 的所屬組件包圍 PERM ,而所有軟件包總的卸載腳本文
件 MyPackages.rmv 所屬的組件范圍為 ALL 。
PERM F755 bin/bin 1 ./tmp/perms/MyPackages.perms 01
ALL F755 bin/bin 1 ./usr/lib/custom/MyPackages.rmv 01
好了,我們的 re2c 組件包信息說(shuō)明文件已經(jīng)建立完畢了,下面我們開(kāi)始編寫安裝腳本文
件 re2c.init ,這完全是一個(gè)腳本文件,這里,我們希望這個(gè)文件可以被任何用戶自由使
用,那么,我希望它的鏈接存在于 /usr/bin 目錄下,因此,我們?cè)谠撐募芯帉戇@樣的
內(nèi)容。
ln -s /usr/local/re2c/bin/re2c /usr/bin/re2c >/dev/null 2>&1
由于,我們的軟件在刪除后,這個(gè)鏈接指向的文件將不存在,因此,我們還需要編寫刪
除腳本文件,用于在這個(gè)軟件包卸載后,能自動(dòng)清理創(chuàng)建的鏈接。
我們?cè)?./usr/lib/custom/re2c.rmv 文件中輸入如下內(nèi)容。
rm -rf /usr/bin/re2c >/dev/null 2>&1
同時(shí),由于我們需要在完整卸載所有的 MyPackages 組件的時(shí)候還需要觸發(fā)卸載腳本,
因此我們還需要在 MyPackages.rmv 中加入卸載命令:
我們?cè)?./usr/lib/custom/MyPackages.rmv 文件中輸入如下內(nèi)容。
rm -rf /usr/bin/re2c >/dev/null 2>&1
好了,到這里,我們的第一個(gè)軟件包 VOL.000.000 就已經(jīng)接近于成功了。
下面,我們將生成打包的 shell 腳本文件。這里文件名我們依然可以隨意定義。我定義為
tar.sh 。
運(yùn)行如下命令:
buildArchive build01.files tar.sh VOL.000.000
運(yùn)行后生成的文件 tar.sh 的內(nèi)容如下:
tar Cvf VOL.000.000 ./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=01 \
./tmp/init.re2c \
./tmp/perms/MyPackages.perms \
./usr/lib/custom/MyPackages.rmv \
./usr/lib/custom/re2c.rmv \
./usr/local/re2c/bin/re2c \
./usr/local/re2c/usr/man/man1/re2c.1 \
我們將這個(gè)文件的最后一行的 \ 和后面的空格全部刪除。
好了,到這里,我們的第一個(gè)組件 re2c 的安裝包已經(jīng)接近制作完成了,下面我們還要制
作安裝 build 組件的軟件包。
創(chuàng)建 build 組件的安裝目錄。
$ mkdir -p /usr/work/build
同樣的道理,我們進(jìn)入到 /usr/work/build 目錄下:
$ cd /usr/work/build
創(chuàng)建卷標(biāo)文件(這里,我們依然假定使用 sco3.2v5.0.x 系統(tǒng))
$ mkdir -p tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0
$ cd tmp/_lbl_prd=MyPackages/typ=os50/rel=1.0
$ >vol=02
創(chuàng)建文件安裝路徑(我們假定安裝到 /usr/local 目錄下去)
$ cd /usr/work/build
$ mkdir -p usr/local
$ cd usr/local
拷貝需要安裝的文件到該目錄下。(我們假定你的 build 軟件都放在 /tmp/build 目錄下。

$ cp /tmp/build/* .
創(chuàng)建系統(tǒng)安裝和卸載時(shí)的腳本執(zhí)行文件 init.build 和 build.rmv。
$ cd /usr/work/build
$ mkdir -p usr/lib/custom
$ cd tmp
$ >init.build
$ cd /usr/work/build/usr/lib/custom
$ >build.rmv
創(chuàng)建文件內(nèi)容信息文件
$ cd /usr/work/build
$ find . -print >build.files
經(jīng)過(guò)此步驟后,你的文件包內(nèi)容信息文件的內(nèi)容可能如下。
./
./tmp
./tmp/_lbl
./tmp/_lbl/prd=MyPackages
./tmp/_lbl/prd=MyPackages/typ=os50
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=02
./tmp/init.build
./usr
./usr/lib
./usr/lib/custom
./usr/lib/custom/build.rmv
./usr/local
./usr/local/build
./usr/local/build/bin
./usr/local/build/bin/buildParse
./usr/local/build/bin/buildCompress
./usr/local/build/bin/buildArchiver
此時(shí),我們將該文件備份 2 份,文件名可以自定,這里我定義為 build01.files 和
build02.files .
$ cp build.files build01.files
$ cp build.files build02.files
然后,我們修改 build01.files ,將其中的所有目錄去掉(這樣做的目的是為了壓縮軟件
包,減少發(fā)行介質(zhì)的使用,如果你不想發(fā)布經(jīng)過(guò)壓縮的版本,本步驟可以不做)。
修改后的 build01.files 文件內(nèi)容如下:
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=02
./tmp/init.build
./usr/lib/custom/build.rmv
./usr/local/build/bin/buildParse
./usr/local/build/bin/buildCompress
./usr/local/build/bin/buildArchiver
然后,我們生成壓縮腳本文件。
$ buildCompress build01.files compress.files
下面,我們開(kāi)始生成你要發(fā)布的軟件包的信息文件,修改你的 build02.files 文件,將該
文件中的公共目錄部分去掉,只保留你自己的私有目錄和所有需要發(fā)布的文件。
修改后的文件內(nèi)容如下:
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=02
./tmp/init.build
./usr/lib/custom/build.rmv
./usr/local/build
./usr/local/build/bin
./usr/local/build/bin/buildParse
./usr/local/build/bin/buildCompress
./usr/local/build/bin/buildArchiver
好了,我們開(kāi)始生成信息包臨時(shí)文件,我取名字為 perms.files。
$ buildParse build02.files perms.files BUILD bin bin 02
執(zhí)行這個(gè)命令后,你就初步生成了你的軟件包信息文件。該文件的大體內(nèi)容如下。
BUILD F755 bin/bin 1 ./tmp/_lbl/prd=/MyPackages/typ=os50/rel=1.0/vol=02
   02
BUILD F755 bin/bin 1 ./tmp/init.build   02
BUILD F755 bin/bin 1 ./usr/lib/custom/build.rmv  02
BUILD F755 bin/bin 1 ./usr/local/build   02
BUILD F755 bin/bin 1 ./usr/local/build/bin   02
BUILD F755 bin/bin 1 ./usr/local/build/bin/buildParse  02
BUILD F755 bin/bin 1 ./usr/local/build/bin/buildCompress  02
BUILD F755 bin/bin 1 ./usr/local/build/bin/buildArchive  02
同樣的,我們還要修改文件的屬性和權(quán)限。
如 ./usr/local/build 我們將其屬性 F755 修改為 D644  等,修改后的內(nèi)容如下:
BUILD F755 bin/bin 1 ./tmp/_lbl/prd=/MyPackages/typ=os50/rel=1.0/vol=02
   02
BUILD F755 bin/bin 1 ./tmp/init.build   02
BUILD F755 bin/bin 1 ./usr/lib/custom/build.rmv  02
BUILD D644 bin/bin 1 ./usr/local/build   02
BUILD D644 bin/bin 1 ./usr/local/build/bin   02
BUILD F755 bin/bin 1 ./usr/local/build/bin/buildParse  02
BUILD F755 bin/bin 1 ./usr/local/build/bin/buildCompress  02
BUILD F755 bin/bin 1 ./usr/local/build/bin/buildArchive  02
同樣的道理,我們希望其他的任何用戶都可以調(diào)用它,那么我們還需要編寫安裝腳本
文件 init.build,在其中加入如下語(yǔ)句:
ln -s /usr/local/build/bin/buildParse /usr/bin/buildParse >/dev/null 2>&1;
ln -s /usr/local/build/bin/buildCompress /usr/bin/buildCompress >/dev/null 2>&1;
ln -s /usr/local/build/bin/buildArchive /usr/bin/buildArchive >/dev/null 2>&1;
同樣,我們卸載后,還是要把這些空鏈接刪除,我們修改 build.rmv 文件,在其中加入
如下語(yǔ)句:
rm -rf /usr/bin/buildParse >/dev/null 2>&1;
rm -rf /usr/bin/buildCompress >/dev/null 2>&1;
rm -rf /usr/bin/buildArchive >/dev/null 2>&1;
同樣,當(dāng)我們卸載所有的包的時(shí)候,這些動(dòng)作也必須執(zhí)行,因此我們還得在
MyPackages.rmv 中加入同樣的語(yǔ)句:
修改后,Mypackages.rmv 文件的完整內(nèi)容如下:
rm -rf /usr/bin/re2c >/dev/null 2>&1
rm -rf /usr/bin/buildParse >/dev/null 2>&1;
rm -rf /usr/bin/buildCompress >/dev/null 2>&1;
rm -rf /usr/bin/buildArchive >/dev/null 2>&1;
下面,我們進(jìn)入到前面的 re2c/tmp/perms 目錄下,修改總的信息包信息說(shuō)明文件
MyPackages.perms 文件,在這個(gè)文件的最后加入 build 組件包的總信息。
#
#!BUILD  1350 BUILD For SCO OpenServer 5.0.X  ( version 1.0 )
#
然后在這行后面(也是這個(gè)文件的最后)讀入 build/perms.files 文件。
這樣修改后的軟件包信息文件 MyPackages.perms 內(nèi)容如下:
#
#prd=MyPackages
#typ=os50
#rel=1.0
#set="MyPackages For SCO OpenServer 5.0.X  ( version 1.0 )"
#
# User id's:
#
uid root  0
uid bin  3
#
# Group id's:
#
gid root  0
gid bin  3
#
#
#!ALL  1350 MyPackages For SCO OpenServer 5.0.X  ( version 1.0)
#
ALL F755 bin/bin 1 ./usr/lib/custom/MyPackages.rmv 01
#
PERM F755 bin/bin 1 ./tmp/perms/MyPackages.perms 01
#
#!RE2C  1350 Re2c For SCO OpenServer 5.0.X  ( version 0.9.11)
#
RE2C F755 bin/bin 1
./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=01     
        01
RE2C F755 bin/bin 1 ./tmp/init.re2c   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
#
#!BUILD  1350 BUILD For SCO OpenServer 5.0.X  ( version 1.0 )
#
BUILD  F755  bin/bin  1  
./tmp/_lbl/prd=/MyPackages/typ=os50/rel=1.0/vol=02   02
BUILD  F755  bin/bin  1  ./tmp/init.build      02
BUILD  F755  bin/bin  1  ./usr/lib/custom/build.rmv    02
BUILD  D644  bin/bin  1  ./usr/local/build      02
BUILD  D644  bin/bin  1  ./usr/local/build/bin      02
BUILD  F755  bin/bin  1  ./usr/local/build/bin/buildParse    02
BUILD  F755  bin/bin  1  ./usr/local/build/bin/buildCompress   02
BUILD  F755  bin/bin  1  ./usr/local/build/bin/buildArchive   02
好了,我們的信息包的信息文檔已經(jīng)準(zhǔn)備完畢了,請(qǐng)仔細(xì)體會(huì)例子一和例子二的信息包
文件的不同之處,特別是 PERM 、ALL 等部分,已經(jīng)增加的總的刪除腳本文件
MyPackages.rmv 文件的意義。
好了,到這里,我們的第二個(gè)軟件包 VOL.001.000 也已經(jīng)接近于成功了。
下面,我們將生成 build 組件的打包 shell 腳本文件。這里文件名我們依然可以隨意定義
。我定義為 tar.sh
運(yùn)行如下命令:
buildArchive build01.files tar.sh VOL.001.000
運(yùn)行后生成的文件 tar.sh 的內(nèi)容如下:
tar Cvf VOL.001.000 ./tmp/_lbl/prd=MyPackages/typ=os50/rel=1.0/vol=02 \
./tmp/init.build \
./usr/lib/custom/build.rmv \
./usr/local/build/bin/buildParse \
./usr/local/build/bin/buildCompress \
./usr/local/build/bin/buildArchive \
我們將這個(gè)文件的最后一行的 \ 和后面的空格全部刪除。
好了,現(xiàn)在我們?cè)倩仡^來(lái)在 /usr/work/re2c 目錄下,執(zhí)行 sh Compress.files
$ sh compress.files
然后,我們?cè)賹?/usr/work/build 目錄下的所有文件也同樣壓縮,執(zhí)行 sh Compress.files
$ sh compress.files
最后的工作:
我們進(jìn)入 /usr/work/re2c 生成第一個(gè)安裝包文件 VOL.000.000
$ cd /usr/work/re2c
$ sh tar.sh
進(jìn)入 /usr/work/build 生成第二個(gè)安裝包文件 VOL.001.000
$ cd /usr/work/build
$ sh tar.sh
現(xiàn)在,我們就將生成的這兩個(gè)文件 VOL.000.000 和 VOL.001.000 拷貝到一個(gè)目錄下,
如 /tmp 。
現(xiàn)在,你可以使用 custom 來(lái)安裝這個(gè)軟件包了。
^_^.
[ 例二 完 ]
最后:是 buildCompress、buildParse、buildArchive 這三個(gè)文件的用法和說(shuō)明。
===============================================================
buildCompress 源文件名 目標(biāo)文件名
用于生成壓縮軟件包內(nèi)所有文件的 shell 腳本。
buildParse 源文件名 目標(biāo)文件名 包文件簡(jiǎn)稱(這里必須大寫) 宿主用戶名 宿主用戶組名 所屬卷號(hào)用于生成臨時(shí)軟件包信息文件。這里的所屬卷好入 01 、02 等 ... ...
buildArchive 源文件名 目標(biāo)文件名 卷文件名用于生成打包軟件包的 shell 腳本文件,這里的卷文件名 如VOL.000.000 或者是VOL.001.000 等。
最后的說(shuō)明:這個(gè) TAR 格式的安裝包,在我所實(shí)驗(yàn)的過(guò)程中,發(fā)現(xiàn)不能包含有鏈接文件,否則打包文件將不能被正確安裝。解決的辦法是把生成鏈接文件的過(guò)程寫入到 “init.軟件包簡(jiǎn)稱” 文件中,然后在 “軟件包簡(jiǎn)稱.rmv” 文件中寫入逆向操作的命令。
特別注意事項(xiàng):
一、關(guān)于 tar 命令不能打包空目錄問(wèn)題的解決方案:
    解決該問(wèn)題可以在空目錄下創(chuàng)建一個(gè) 0 字節(jié)的空文件 ( > 文件名),然后修改由 buildArchive 命令生成的打包 shell 腳本文件(如本文第一個(gè)例子中的 tar.sh ),找到空目錄的對(duì)應(yīng)位置,在該目錄后面加入你剛才創(chuàng)建的空文件。這樣,你打包的文件中包含了一個(gè)空文件,但正好解決了空目錄打包的問(wèn)題。
二、關(guān)于多組件打包過(guò)程中的卸載腳本的編寫問(wèn)題:
    由于卸載腳本是在你卸載的過(guò)程中根據(jù)你選擇的包文件觸發(fā)執(zhí)行的,那么你除了在相應(yīng)的組件中包含你的卸載命令外,你還必須在你的整個(gè)包的最前沿部分加入卸載說(shuō)有的文件的卸載腳本。


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/31/showart_502645.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP