1、制作Solaris源码pkg安装包 1.下载lua5.1的源码,配置好编译器,直接使用它自带的Makefile编译。 #make solaris make使用的是/usr/ccs/bin/make gcc使用的是/usr/sfw/bin/gcc 2. 将需要打包的文件重新组织到一个新目录,例子中我们使用/Documents/lua5.1这个目录。 -bash-3.00# find lua5.1 -type f lua5.1/bin/lua lua5.1/bin/luac lua5.1/include/lua.h lua5.1/include/luaconf.h lua
2、5.1/include/lualib.h lua5.1/include/lauxlib.h lua5.1/include/lua.hpp lua5.1/lib/liblua.a lua5.1/man/lua.1 lua5.1/man/luac.1 lua5.1/demo/hello.lua lua5.1/copyright 3. 制作pkginfo文件,这是最主要的软件包信息文件。 -bash-3.00# more lua5.1/pkginfo PKG=lua51 NAME=Lua Enviroment and Applications Package, Lua we
3、bsite is: www.lua.org ARCH=i386 VERSION=5.1 CATEGORY=application BASEDIR=/opt CLASSES=none 我们将软件包package的名字取为lua51。不能使用lua5.1因为package名字不能带有“.“字符。 Name是对这个软件包的一个详细解释;Arch是针对的平台,我们这里使用x86;Version是版本号; CATEGORY选择应用程序application,还有一个选择是system;BASEDIR则是安装的目标目录, Class我们这里不使用。 4. 接下来制作reques
4、t文件,该文件会在安装时候(pkgadd)执行, 这个例子的request文件会提问用户在哪个目录安装lua软件包,如果不满意默认的目录(/opt)话。 假如你不需要这个功能的话,可以略过这个步骤。 -bash-3.00# more lua5.1/request trap 'exit 3' 15 CLASSES="none" BASEDIR=`ckpath -d $BASEDIR -aoy -p "Where should this package be installd?" ` || exit $? echo BASEDIR=$BASEDIR >> $1
5、 5. 制作prototype文件,这个文件用来指定软件包的实际内容。 -bash-3.00# more lua5.1/prototype i pkginfo i request d none lua51=/Documents/lua5.1 0755 root sys d none lua51/bin=/Documents/lua5.1/bin 0755 root bin f none lua51/bin/lua=/Documents/lua5.1/bin/lua 0755 root bin f none lua51/bin/luac=/Documents/lua5.1/bin/
6、luac 0755 root bin d none lua51/include=/Documents/lua5.1/include 0755 root bin f none lua51/include/lua.h=/Documents/lua5.1/include/lua.h 0644 root bin f none lua51/include/luaconf.h=/Documents/lua5.1/include/luaconf.h 0644 root bin f none lua51/include/lualib.h=/Documents/lua5.1/include/lualib
7、h 0644 root bin f none lua51/include/lauxlib.h=/Documents/lua5.1/include/lauxlib.h 0644 root bin f none lua51/include/lua.hpp=/Documents/lua5.1/include/lua.hpp 0644 root bin d none lua51/lib=/Documents/lua5.1/lib 0755 root bin f none lua51/lib/liblua.a=/Documents/lua5.1/lib/liblua.a 0644 root b
8、in d none lua51/man=/Documents/lua5.1/man 0755 root bin f none lua51/man/lua.1=/Documents/lua5.1/man/lua.1 0644 root bin f none lua51/man/luac.1=/Documents/lua5.1/man/luac.1 0644 root bin d none lua51/demo=/Documents/lua5.1/demo 0755 root bin f none lua51/demo/hello.lua=/Documents/lua5.1/demo/h
9、ello.lua 0644 root bin f none lua51/copyright=/Documents/lua5.1/copyright 0644 root bin 第一列表明该文件的属性, i - 用于安装使用的文件 d - 软件包中的目录directory f - 软件包中的文件file 第二列是class的定义,我们这里不使用, 就用none。 第三列指明软件包目标文件的源文件从哪里可以获得。 后面几列是说明文件的属性和权限。 该文件我们也可用命令的方式得到一个简单的模板,不过还需要再加工。^_^ find . -print | pkgp
10、roto > prototype
6. 最后我们在lua5.1目录下执行pkgmk
-bash-3.00# pkgmk
## Building pkgmap from package prototype file.
## Processing pkginfo file.
WARNING: parameter
11、ng one part. /var/spool/pkg/lua51/pkgmap /var/spool/pkg/lua51/pkginfo /var/spool/pkg/lua51/reloc/lua51/bin/lua /var/spool/pkg/lua51/reloc/lua51/bin/luac /var/spool/pkg/lua51/reloc/lua51/copyright /var/spool/pkg/lua51/reloc/lua51/demo/hello.lua /var/spool/pkg/lua51/reloc/lua51/include/lauxlib.
12、h /var/spool/pkg/lua51/reloc/lua51/include/lua.h /var/spool/pkg/lua51/reloc/lua51/include/lua.hpp /var/spool/pkg/lua51/reloc/lua51/include/luaconf.h /var/spool/pkg/lua51/reloc/lua51/include/lualib.h /var/spool/pkg/lua51/reloc/lua51/lib/liblua.a /var/spool/pkg/lua51/reloc/lua51/man/lua.1 /var/
13、spool/pkg/lua51/reloc/lua51/man/luac.1 /var/spool/pkg/lua51/install/request ## Validating control scripts. ## Packaging complete. 好了打包完成,制作好的软件包是在/var/spool/pkg/lua51 7. 最后我们再将该软件包制作成单个文件: -bash-3.00# pkgtrans -s /var/spool/pkg/ /tmp/lua51.pkg The following packages are available: 1 lua5
14、1 Lua Enviroment and Applications Package, Lua website is: www.lua.org
(i386) 5.1
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Transferring






