您的位置:首页 > 大数据 > 人工智能

unix典型软件安装包pkg的制作

2001-09-04 16:39 267 查看
 pkg是unix上典型的软件安装现在介绍pkg在sco和unixware上的使用
首先建立的是包的描述文件,prototype (package information file)
下面是个例子:
proto
# this file is example for prototype
# file pkgproto .=/usr/local
# s /foo/bar/etc/mount=../etc/mount
!PREJECTDIR=/usr/local
!BIN=$PROJECTDIR/bin
!search /usr/local/bin
d none /usr/local/hzh 0644 root bin
i pkginfo=xixiinfo
i /usr/local/xixi/version=version
d none /usr/local/bin 0755 root bin
!default 644 root other
f src /usr/local/bin/README=src/README 0755 root bin
# 是注解符号
# !开始的是个命令param=value
PREJECTDIR=/usr/local
# 表示设置一个环境变量PREJECTDIR
# search 表示加入path的命令搜索路径
# default 表示创建文件时的属主,权限等设置
# include 包含其他proto文件
# 其他不带!的由以下的格式描述
part ftype class pathname [major minor] [mode owner group]
part 部分描述,一个软件包可以分几个部分
 例如    1 driver
  2 develop env
该域可以省略,省略时为1
ftype 文件的描述
 b 块设备文件
 c 字符设备文件
 d 目录
 f 标准的文件
 i 安装信息文件
# 两个重要的文件是版本 version和包描述文件pkginfo(注意pkginfo是关键字,而
# 等号右边的是info文件名,在稍后将会介绍该文件的使用方法.
# depend action request可以不要,request 是你在安装包前执行的文件
# 在request中可以加入一些临时要出入的信息(例如客户资料)
i pkginfo=xixiinfo
i version=version
i depend=depend
 l 连接文件
 p 命名管道
 s 符号连接
 
class 描述文件的所属 例如 src exec...
pathname 所在的路径
如果是符号连接则会有路径2
 例如:s /foo/bar/etc/mount=../etc/mount
major minor 是设备文件的主辅助号
mode owner group 是创建时的权限 用户和群组

你所有的包中的文件啦目录啦都要用上述方法创建
当然有个快速建立该文件的方法
使用pkgproto .=/usr/local
其中.表示你源文件的目录路径
/usr/local为你要安装的路径

pkginfo 文件是描述该包的显示信息,版本信息等
以下是一个pkginfo 的例子:注意我使用hzhinfo是为了与proto文件中的pkginfo
相对应
ARCH=i386 硬件信息
PSTAMP="yymmddhhmm" #出品时间
PKG="包名"
NAME="包的说明"
VERSION="3" #版本
VENDOR="卖主信息"
HOTLINE="热线"
EMAIL="email"
VSTOCK="0122c3f5566"
CATEGORY="system.run"
ISTATES="S 2"
RSTATES="S 2"
除此之外还可以定义
BASEDIR=标准路径
CATEGORY=类别
CLASSES=级别
DESC=包描述信息
MAXINST=最多安装多少个包
...

好准备好以上几个文件后就可以制作包了
首先产生包
pkgmk -o -d /tmp -f proto     
其中  -o 表示覆盖已有的包
 -d 路径或设备(/def/fd0)
 -f proto的文件名
如果出现## Packaging complete.表示包顺利建成
你现在可以使用pkgadd -d /tmp来试着安装了

当安装成功可以正式发行时你可以使用
pkgtrans /tmp /tmp/xixi.pkg all
将/tmp 下的包创建为xixi.pkg
以后你就可以将xixi.pkg 带走在其他的机器上顺利的安装.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息