在 Solaris 下建立可使用 pkgadd 的软体 package


这篇文章主要是说明如何作在;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;安装时,;将无法正常执行.

再来,;在;/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;压起

推荐阅读