在solaris制作package安装包

http://blog.csdn.net/Borenbao/archive/2007/02/05/1502780.aspx

这篇文章主要是说明如何作在 Solaris 2.5,2.6 及 7 上面, 能够使用 pkgadd 来读取, 并安装的 package程
式. 在 AnswerBook 2 里有详细的讨论作 package 的过程. 以下将会一步一步
说明如何作 package.
注意: 在以下某些步骤中, 需要在你的机器上有 root 的权利才能使用.
** 选择你的软体
找寻软体的原始程式码, 将它下载. 读取所有和安装有关的文件. 并注意所有的设
定档, 当然也包含检查 Makefile. 解可执行档案及它们的 link 情况.
** 读取 manuals 和 man page
虽然许多人都不太愿意去读这些 man page, 或许你会觉得看 man pgae 是很累的事
但是最好还是看一下, 下面这些指令的 man page.
pkgadd, pkginfo,pkgmk,pkgparam,pkgproto,pkgtrans,pkgrm
这里有许多的 option 还有详细的说明, 你必需解, 以方便以下的说明.
** 设定目录结构
通常, 我惯建立一个目录, 如 /opt/SoftWare . 一般而言, 大部份的软体都会安装
在 /usr/local 下, 建立 /opt/SoftWare 是要存放将要做成 package 的软体, 而
避免和原来 /usr/local 下的档案混在一起. 在下一个步骤将会说明如何使用它.
** 编译并安装软体在 /usr/local 或其它地方
改变目录至你存放软体原始程式的位置, 并且读取相关的指令使用. 大部份的软体都
会有详细的安装指令, 这些指令通常以 README INSTALL 等方式的档名出现. 仔细的
读取, 并将你的软体编译成可执行档. 当你的软体编译完成, 你会执行如 "make install"
之类的指令, 用以安装你的程式到 /usr/local 或其它地方. 在执行 "make install"
之前, 你需要做以下的动作:
% su
% cd /usr
% mv local local.full
% ln -s local /opt/SoftWare
然後再执行 "make install" , 这样一来, 虽然是装在 /usr/local , 但实际上是
放在 /opt/SoftWare 里面.
** 建立 prototype 和 pkginfo 这两个档
改变目录至 /usr/local ...
% cd /usr/local
执行以下的指令 ...
% find . -print | pkgproto > prototype
这行指令会建立一个 prototype 档在 /usr/local
接下来, 使用你的文字编辑器 (如 vi), 来编辑 prototype 这个档, 加入下面那行
i pkginfo=./pkginfo
并将 user 和 group 均改成 bin. 以下是一个修改完的例子...
i pkginfo=./pkginfo
d none bin 0755 bin bin
f none bin/prog 0755 bin bin
d none doc 0755 bin bin
f none doc/doc1 0644 bin bin
d none lib 0755 bin bin
f none lib/lib1 0644 bin bin
d none man 0755 bin bin
f none man/man1 0644 bin bin
将 user 和 group 均改成 bin 是非常重要的, 如果 user 和 group 不是 bin 时 
 在使用 pkgadd 安装时, 将无法正常执行.
编辑安装脚本
在制作package时,也可以编辑一系列脚本,以便于安装package时执行该脚本。
这些脚本主要有如下几类:
copyright:定义发布软件包时的版权声明
depend:定义安装该package之前所需安装的package
checkinstall:在安装package前对环境变量及package是否已安装进行确认
request:定义在安装时需要输入的变量
preinstall:定义在package将文件安装至系统前所需执行的命令
postinstall:定义在package将文件安装至系统之后所需执行的命令
preremove:定义在删除package的文件之前所需执行的命令
postremove:定义在删除package的文件之后所需执行的命令

在制作package时可以不必完全包括以上这些文件。这可以在prototype的文件中进行定义。
在制作OWLdap的package时,我定义了以下几个文件:
copyright,request,checkinstll,postinstall,preremove
为防止有灌水的嫌疑,我这儿就不把具体脚本的内容贴出来了。其实跟写shell脚本差不多的:)
同样的,需要在prototype文件中增加这些文件的引用:
i pkginfo=./pkginfo
i copyright=./copyright
i request=./request
i checkinstall=./checkinstall
i postinstall=./postinstall
i preremove=./preremove
d none bin 0755 bin bin
f none bin/ldapadd 0755 root other
f none bin/ldapdelete 0755 root other
f none bin/ldapmodrdn 0755 root other
f none bin/ldappasswd 0755 root other
f none bin/ldapsearch 0755 root other
f none bin/ud 0755 root other
l none bin/ldapmodify=ldapadd
……

再来, 在 /usr/local 下建立 pkginfo 这个档案, 格式如下 :
PKG="SCprog"
NAME="prog"
ARCH="sparc"
VERSION="1.00"
CATEGORY="application"
VENDOR="Computer Science of Chun-Hua University"
EMAIL="chunpo@csie.chu.edu.tw"
PSTAMP="PodsCat Kuo"
BASEDIR="/usr/local"
CLASSES="none"
这些参数说明如下:
PKG= 你所选择 package 的目录名称
NAME= 程式名称
ARCH= 作业系统的版本
VERSION= 程式的版本编号
CATEGORY= 这个程式是一个 application
VENDOR= 写这个程式的公司
EMAIL= e-mail 的内容
PSTAMP= 是谁作这个软体
BASEDIR= /usr/local 是档案安装的地方
CLASSES= 只要写 none 就好了
** 执行 pkgmk
在 /usr/local 内执行以下的指令...
% pkgmk -r `pwd`
执行这个指令之後, 会在 /var/spool/pkg 建立一个 package 的目录(以上面的例子,
会建立一个 SCprog 的目录), 里面则存放你做好的 package.
基本上, package 已经可以算做完成, 你可以把这个 SCprog 用 tar 和 gzip 压起
来就可以了. 安装时, 只需要把它解开成 SCprog 的目录型式, 然後执行
% pkagdd -d .
这样就可以了...
** 执行 pkgtrans
使用 pkgtrans 可以将你的 package 由档案系统(file system)的格式, 转成datastream
的格式. 使用方法如下 :
%cd /var/spool/pkg
%pkgtrans -s `pwd` /tmp/prog-1.00
执行这个指令之後, 会在 /tmp 下产生 prog-1.00 这个 datastream 格式的package
如果要用这个档来安装 package , 可用下列的指令来安装.
% pkagdd -d prog-1.00
以上就是整个 package 做的方法, 希望对大家有所帮助.
接下来是真对 pkgtrans 加以说明.......
所谓的 file system 格式, 就是我们一般的格案格式, 如果同时有好几个 package 在
该目录下, 使用 "pkgadd -d ." 即会列出所有的 package.
而 datastream 的格式, 则是将整个 file system 做成一个档案, 有点类似 tar
的做用. 使用 datastream 格式的 package 来安装时, 必需指定档名, 而不能用 "."
来指定, 而且每次只能安装一个 package. 但好处是只需要一个档而已.
要把 file system 的格式转成 datastream 的格式, 可用以下的指令
% pkgtrans source dest.
要把 datastream 的格式转成 file system 的格式, 可用以下的指令
% pkgtrans -s `pwd` dest. 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值