RPM与pkg两种软件安装包的制做方法文档格式.docx
- 文档编号:4260077
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:9
- 大小:19.16KB
RPM与pkg两种软件安装包的制做方法文档格式.docx
《RPM与pkg两种软件安装包的制做方法文档格式.docx》由会员分享,可在线阅读,更多相关《RPM与pkg两种软件安装包的制做方法文档格式.docx(9页珍藏版)》请在冰点文库上搜索。
因为现在的大多数软件都使用make编译,所以这一小节没有提供宏。
四、安装(install)
install小节同样也是一个脚本,它提供一些安装软件包的命令,如果源代码的makefile文件提供有makeinstall命令,这一节你可以简单的包含一个makeinstall命令,否则你就得提供一些像cp,mv或者install之类的命令集。
五、验证(verifyscript)
这一小节包含一个验证软件包的脚本,验证软件包不属于RPM的能力范围。
六、清除(clean)
这一小节包含一个编译好以后用于清除无用信息的脚本。
这一脚本很少会用到,因为在大多数环境下,RPM会做好这些工作。
七、文件列表(filelist)
这一小节包含一份文件列表,它们是组成RPM包的所有文件,当你用rpm-qpl命令查看软件包的时候就会得到这一份文件列表。
在这一小节也有几个宏可以用,它们指出哪些文件是文档,哪些是配置文件,哪里是目录等。
八、维护日志(changelog)
这一小节记录了软件包的维护日志。
spec文件有一个命名规则,其文件名由以下几部份组成:
软件包名-版本号-发行号.spec
下面我们举一个简单的spec文件,然后再来说明各部分的意思。
文件如下:
Summary:
GNUreadlinelibrary
Name:
readline
Version:
5.1
Release:
1
Copyright:
GPL
Group:
Library
Source:
ftp:
//172.16.100.81/soft/readline-5.1.tar.gz
URL:
http:
//www.gnu.org/index.html
Distribution:
GNUProject
Vendor:
GNU
Packager:
YanDingcheng<
dingcheng_yan@>
%description
TheGNUreadlinelibrarygetsalinefromuserwithediting.
%prep
%setup
%build
./configure--prefix=/opt/%{name}
make
%install
makeinstall
%files
/opt/%{name}/lib/libhistory.a
/opt/%{name}/lib/libhistory.so
/opt/%{name}/lib/libhistory.so.5
/opt/%{name}/lib/libhistory.so.5.1
/opt/%{name}/lib/libreadline.a
/opt/%{name}/lib/libreadline.so
/opt/%{name}/lib/libreadline.so.5
/opt/%{name}/lib/libreadline.so.5.1
/opt/%{name}/include/readline/chardefs.h
/opt/%{name}/include/readline/history.h
/opt/%{name}/include/readline/keymaps.h
/opt/%{name}/include/readline/readline.h
/opt/%{name}/include/readline/rlconf.h
/opt/%{name}/include/readline/rlstdc.h
/opt/%{name}/include/readline/rltypedefs.h
/opt/%{name}/include/readline/tilde.h
/opt/%{name}/info/dir
/opt/%{name}/info/history.info
/opt/%{name}/info/readline.info
/opt/%{name}/info/rluserman.info
/opt/%{name}/man/man3/history.3
/opt/%{name}/man/man3/readline.3
%changelog
*WedJan312007<
+createpackage
前言
Summary:
这一行文字对软件包进行简短描述
Name:
软件包的名字
Version:
软件包的版本号,这里必须是你计划要使用的RPM文件版本号
Release:
软件包的发行号,这里必须是你计划要使用的RPM文件发行号
Copyright:
软件包的版权
Group:
软件包的分组,这里定义怎么打包软件包
Source:
软件包的来源,当你想再次获取该软件包或者查看它是不是有更新的版本的时候,这一行就很有用了。
URL:
URL与Source不一样的地方就是,Source提供的是源代码的文件名,URL提供的是指向软件包文档的链接。
Distribution:
指明软件包是属于哪个产品的一部份。
Vendor:
软件包的生产厂商。
Packager:
打包的组织或者个人。
discription:
软件包功能的一个详细描述。
准备(prep)
%setup宏:
解压源代码包并把当前工作目录设置到源代码目录。
%setup宏做的主要工作类似于下面两条命令:
tarzxvf源代码包文件名
cdRPM包名-版本号
所以如果你的源代码包解压以后的目录组成不是“RPM包名-版本号”的话,在这里使用%setup宏就会出问题。
创建(build)
这里使用了一个configure和make命令组合
安装(install)
这里使用了makeinstall命令,因为makefile里有install标签了,所以就用它,简便。
文件列表(files)
这里是一个文件列表,列出的文件就是创建以后的RPM包将要包含的文件,文件路径要求是一个绝对路径,利用RPM命令安装这个软件包以后,这些文件将会按照这里指定的路径安装到系统中。
在创建RPM包之前必须保证这里指定的文件在系统中都能找到,不然创建RPM包将会出错。
所以如果是为了学习怎么编写一个spec文件的话,就像我上面那样,把软件安装到一个干净目录下(比如/opt),这样不会影响系统的正常工作。
这个文件列表目前还没有什么好的工具能够自动生成,因为RPM没法知道执行makeinstall的时候到底安装了哪些文件。
有的人建议用一个find命令来查找到底安装了哪些文件,但是我觉得这未必会有用。
我一般是在configure的时候使用configure--prefix=/opt/package_name指定一个干净目录,先把软件安装到该目录下,然后查看软件包安装后都有哪些文件,通过这些文件生成一个文件列表,然后再使用configure命令重新安装一次软件包,这次把软件包安装到系统中,比如是/usr或者/usr/local目录下,然后把文件列表中的目录前辍改成相应的目录前辍(比如/usr或者/usr/local)就可以了。
维护日志(changelog)
维护日志是一些对软件包维护的日志记录,其中包含有一个时间信息,它有指定的格式:
WedJan312007。
按顺序是星期月日年。
编写好spec文件以后在redhatlinux下把软件源码包放到/usr/src/redhat/SOURCE目录下(如果是suselinux把软件源码包放到/usr/src/packages/SOURCE目录下),然后把spec文件放到/usr/src/redhat/SPECS目录下(如果是suselinux放到/usr/src/packages/SPECS目录下),最后转到/usr/src/redhat/SPECS目录下执行如下命令:
rpmbuild-baspec文件名
执行成功以后会生成三个RPM文件并打印信息如下:
Wrote:
/usr/src/redhat/SRPMS/readline-5.1-1.src.rpm
/usr/src/redhat/RPMS/i386/readline-5.1-1.i386.rpm
/usr/src/redhat/RPMS/i386/readline-debuginfo-5.1-1.i386.rpm
我们可以看到在RedHat系统下生成的RPM文件被放到/usr/src/redhat/RPMS/i386和/usr/src/redhat/SRPMS目录下,如果打包的RPM包是为了i586架构打的,那么RPM包会被放到i586目录下。
其中readline-5.1-1.src.rpm是源码包,可以通过命令
rpmbuild--rebuildreadline-5.1-1.src.rpm
重新生成二进制的RPM包。
Solaris系统下制做软件安装包的步骤
1、下载软件源码包
2、编译、安装软件,在configure的时候通过—prefix选项把软件安装到一个干净目录(空目录,比如/opt/mysoft)下,下面的步骤假设已经把软件安装到/opt/mysoft目录下。
3、#cd/opt/mysoft
4、#find.-print|pkgproto>
prototype
这个命令会在你的当前目录下建立一个prototype文件,在这个文件里加入下面一行
ipkginfo=./pkginfo
并将文件里的用户名和组名(比如root)改成bin,不然在用pkgadd安装时将无法正常安装软件包。
下面是一个完成的prototype文件例子。
dnoneinclude0755binbin
dnoneinclude/libnet0755binbin
fnoneinclude/libnet/libnet-asn1.h0644binbin
fnoneinclude/libnet/libnet-functions.h0644binbin
fnoneinclude/libnet/libnet-headers.h0644binbin
fnoneinclude/libnet/libnet-macros.h0644binbin
fnoneinclude/libnet/libnet-structures.h0644binbin
fnoneinclude/libnet/libnet-types.h0644binbin
fnoneinclude/libnet.h0644binbin
dnonelib0755binbin
fnonelib/libnet.a0644binbin
5、在/opt/mysoft下建立pkginfo文件,格式如下
PKG="
libnet"
NAME="
ARCH="
i386"
VERSION="
1.00"
CATEGORY="
library"
VENDOR="
Guangdonglinuxtechnologycenter"
EMAIL="
dingcheng_yan@"
PSTAMP="
gdlc"
BASEDIR="
/usr/local"
CLASSES="
none"
这个文件的各项含义如下:
PKG=你所选择package目录的名称(软件包的名称)
NAME=程序名称
ARCH=作业系统的版本(如sparc,i386等)
VERSION=软件的版本编号
CATEGORY=这个软件的类型(如library,application)
VENDOR=开发这个软件的公司
EMAIL=e-mail地址
PSTAMP=是谁作这个软体
BASEDIR=软件要安装到的目录(如/usr/local)
CLASSES=只要写none就好了
6、执行下面的命令
#pkgmk-r`pwd`
执行这个命令之后,会在/var/spool/pkg目录下建立一个package的目录(按上面的例子会建立一个libnet目录),可以把这个用tar和gzip打包压缩起来,安装时只要解压成libnet目录,到libnet目录执行命令
#pkgadd-d.
就可以了。
这样一个软件安装包的制做就完成了。
7、也可以把软件安装包转换成datastream格式。
步骤如下
(1)#cd/var/spool/pkg
(2)#pkgtrans-s`pwd`/tmp/libnet-1.00
执行上面的命令后会在/tmp目录下产生libnet-1.00这个datastream格式的软件安装包,可以用下面的命令来安装datastream格式的安装包:
#pkgadd-dlibnet-1.00
下面是对pkgtrams的补充说明
所谓的filesystem格式,就是一般的档案格式,如果同时有好几个package在该目录下,使用”pkgadd-d.”就会列出所有的package。
而datastream的格式,则是将整个filesystem做成一个档案,有点类似tar的作用。
使用datastream格式的package来安装时必须指定文件名,不能用“.”来指定,而且每次只能安装一个package,但好处是只需要一个文件而己。
要把filesystem的格式转换成datastream的格式可以用下面的命令:
#pkgtrans-s`pwd`dest
要把datastream格式转换成filesystem格式可以用下面的命令:
#pkgtranssourcedest
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RPM pkg 软件 安装 制做 方法