ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:19.88KB ,
资源ID:4650849      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4650849.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(rpm和pkg安装包的制作方法.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

rpm和pkg安装包的制作方法.docx

1、rpm和pkg安装包的制作方法rpm和pkg安装包的制作方法软件开发的最终目标就是要给用户用,而在把软件发布给用户前,我们一般会先制做一个安装包,这样用户在使用我们的软件前就能轻松的把软件安装到系统上,这篇文章我就介绍在Linux下制做RPM安装包和在Solaris下制做PKG安装包的方法。RPM安装包的制做方法RPM(RPM Package Manager)是一个开放的包管理器,它使用户可以从源码构建一个二进制的软件发行包和利用补丁包给软件打补丁。RPM包非常灵活易用,因此被作为很多linux发行版的默认软件安装包。创建一个RPM安装包是件很容易的事,特别是当你可以获得软件的源代码包的时候。

2、下面介绍怎么制做一个RPM软件安装包,在继续之前,我们假设你已经知道怎么从源代码安装一个软件包。制做一个RPM软件安装包有以下几个步骤:(1)获得软件的源代码包(2)如果你自己修改了软件,那么给它做一个补丁(3)编写一个包含软件包信息的spec文件(4)确保软件被正确的安装到适当的位置(5)创建RPM安装包从上面的几步我们可以看到,制做一个RPM包最主要的就是第三步编写一个spec文件,下面介绍怎么编写这个spec文件。一个spec文件分成下面几个小节一、前言(preamble)当用户查询软件包信息的时候,RPM程序会打印出前言包含的信息。这一小节包含的信息有软件包的名称、功能描述、版本号、发

3、行号和类型等信息。二、准备(preparation)从prep节开始是创建一个软件包要做的实际工作。故名思意,这一小节所做的都是一些必须的准备工作,它的内容就像一个普通的shell脚,为了使工作更容易,这一小节提供了两个可以使用的宏,一个是解压tar文件,并把当前工作目录设置为源代码目录,另一个是给源码打补丁。三、创建(build)就像prep小节一样,build的内容也是一个普通脚本,这一小节包含的是怎么编译源代码,它可以是一个简单的make命令或者一些更复杂的编译命令。因为现在的大多数软件都使用make编译,所以这一小节没有提供宏。四、安装(install)install小节同样也是一个脚

4、本,它提供一些安装软件包的命令,如果源代码的makefile文件提供有make install命令,这一节你可以简单的包含一个make install命令,否则你就得提供一些像cp, mv或者install之类的命令集。五、验证(verify script)这一小节包含一个验证软件包的脚本,验证软件包不属于RPM的能力范围。六、清除(clean)这一小节包含一个编译好以后用于清除无用信息的脚本。这一脚本很少会用到,因为在大多数环境下,RPM会做好这些工作。七、文件列表(file list)这一小节包含一份文件列表,它们是组成RPM包的所有文件,当你用rpm -qpl 命令查看软件包的时候就会得

5、到这一份文件列表。在这一小节也有几个宏可以用,它们指出哪些文件是文档,哪些是配置文件,哪里是目录等。八、维护日志(changelog)这一小节记录了软件包的维护日志。spec文件有一个命名规则,其文件名由以下几部份组成:软件包名-版本号-发行号.spec下面我们举一个简单的spec文件,然后再来说明各部分的意思。文件如下:Summary: GNU readline libraryName: readlineVersion: 5.1Release: 1Copyright: GPLGroup: LibrarySource: ftp:/172.16.100.81/soft/readline-5.1.

6、tar.gzURL: http:/www.gnu.org/index.htmlDistribution: GNU ProjectVendor: GNUPackager: Yan Dingcheng %descriptionThe GNU readline library gets a line from user with editing.%prep%setup%build./configure -prefix=/opt/%namemake%installmake install%files/opt/%name/lib/libhistory.a/opt/%name/lib/libhistory

7、.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/o

8、pt/%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/

9、man/man3/history.3/opt/%name/man/man3/readline.3%changelog* Wed Jan 31 2007 + create package前言Summary:这一行文字对软件包进行简短描述Name:软件包的名字Version:软件包的版本号,这里必须是你计划要使用的RPM文件版本号Release:软件包的发行号,这里必须是你计划要使用的RPM文件发行号Copyright:软件包的版权Group:软件包的分组,这里定义怎么打包软件包Source:软件包的来源,当你想再次获取该软件包或者查看它是不是有更新的版本的时候,这一行就很有用了。URL:URL与

10、Source不一样的地方就是,Source提供的是源代码的文件名,URL提供的是指向软件包文档的链接。Distribution:指明软件包是属于哪个产品的一部份。Vendor:软件包的生产厂商。Packager:打包的组织或者个人。discription:软件包功能的一个详细描述。准备(prep)%setup宏:解压源代码包并把当前工作目录设置到源代码目录。%setup宏做的主要工作类似于下面两条命令:tar zxvf 源代码包文件名cd RPM包名-版本号所以如果你的源代码包解压以后的目录组成不是“RPM包名-版本号”的话,在这里使用%setup宏就会出问题。创建(build)这里使用了一个

11、configure和make命令组合安装(install)这里使用了make install命令,因为makefile里有install标签了,所以就用它,简便。文件列表(files)这里是一个文件列表,列出的文件就是创建以后的RPM包将要包含的文件,文件路径要求是一个绝对路径,利用RPM命令安装这个软件包以后,这些文件将会按照这里指定的路径安装到系统中。在创建RPM包之前必须保证这里指定的文件在系统中都能找到,不然创建RPM包将会出错。所以如果是为了学习怎么编写一个spec文件的话,就像我上面那样,把软件安装到一个干净目录下(比如/opt),这样不会影响系统的正常工作。这个文件列表目前还没有

12、什么好的工具能够自动生成,因为RPM没法知道执行make install的时候到底安装了哪些文件。有的人建议用一个find命令来查找到底安装了哪些文件,但是我觉得这未必会有用。我一般是在configure的时候使用configure -prefix=/opt/package_name指定一个干净目录,先把软件安装到该目录下,然后查看软件包安装后都有哪些文件,通过这些文件生成一个文件列表,然后再使用configure命令重新安装一次软件包,这次把软件包安装到系统中,比如是/usr或者/usr/local目录下,然后把文件列表中的目录前辍改成相应的目录前辍(比如/usr或者/usr/local)就

13、可以了。维护日志(changelog)维护日志是一些对软件包维护的日志记录,其中包含有一个时间信息,它有指定的格式:Wed Jan 31 2007。按顺序是 星期 月 日 年。编写好spec文件以后在redhat linux下把软件源码包放到/usr/src/redhat/SOURCE目录下(如果是suse linux把软件源码包放到/usr/src/packages/SOURCE目录下),然后把spec文件放到/usr/src/redhat/SPECS目录下(如果是suse linux放到/usr/src/packages/SPECS目录下),最后转到/usr/src/redhat/SPEC

14、S目录下执行如下命令:rpmbuild -ba spec文件名 执行成功以后会生成三个RPM文件并打印信息如下:Wrote: /usr/src/redhat/SRPMS/readline-5.1-1.src.rpmWrote: /usr/src/redhat/RPMS/i386/readline-5.1-1.i386.rpmWrote: /usr/src/redhat/RPMS/i386/readline-debuginfo-5.1-1.i386.rpm我们可以看到在RedHat系统下生成的RPM文件被放到/usr/src/redhat/RPMS/i386和/usr/src/redhat/SR

15、PMS目录下,如果打包的RPM包是为了i586架构打的,那么RPM包会被放到i586目录下。其中readline-5.1-1.src.rpm是源码包,可以通过命令rpmbuild -rebuild readline-5.1-1.src.rpm重新生成二进制的RPM包。Solaris系统下制做软件安装包的步骤1、下载软件源码包2、编译、安装软件,在configure的时候通过prefix选项把软件安装到一个干净目录(空目录,比如/opt/mysoft)下,下面的步骤假设已经把软件安装到/opt/mysoft目录下。3、#cd /opt/mysoft4、#find . -print | pkgpr

16、oto prototype这个命令会在你的当前目录下建立一个prototype文件,在这个文件里加入下面一行i pkginfo=./pkginfo并将文件里的用户名和组名(比如root)改成bin,不然在用pkgadd安装时将无法正常安装软件包。下面是一个完成的prototype文件例子。i pkginfo=./pkginfod none include 0755 bin bind none include/libnet 0755 bin binf none include/libnet/libnet-asn1.h 0644 bin binf none include/libnet/libne

17、t-functions.h 0644 bin binf none include/libnet/libnet-headers.h 0644 bin binf none include/libnet/libnet-macros.h 0644 bin binf none include/libnet/libnet-structures.h 0644 bin binf none include/libnet/libnet-types.h 0644 bin binf none include/libnet.h 0644 bin bind none lib 0755 bin binf none lib/

18、libnet.a 0644 bin bin5、在/opt/mysoft下建立pkginfo文件,格式如下PKG=libnetNAME=libnetARCH=i386VERSION=1.00CATEGORY=libraryVENDOR=Guangdong linux technology centerEMAIL=dingcheng_yanPSTAMP=gdlcBASEDIR=/usr/localCLASSES=none这个文件的各项含义如下:PKG=你所选择 package 目录的名称 (软件包的名称)NAME=程序名称 ARCH=作业系统的版本(如sparc, i386等) VERSION=软

19、件的版本编号 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 .就可以了。这样

20、一个软件安装包的制做就完成了。7、也可以把软件安装包转换成datastream格式。步骤如下(1)#cd /var/spool/pkg(2)#pkgtrans -s pwd /tmp/libnet-1.00执行上面的命令后会在/tmp目录下产生libnet-1.00这个datastream格式的软件安装包,可以用下面的命令来安装datastream格式的安装包:#pkgadd -d libnet-1.00下面是对pkgtrams的补充说明所谓的file system格式,就是一般的档案格式,如果同时有好几个package在该目录下,使用”pkgadd -d .”就会列出所有的 package。

21、而datastream的格式,则是将整个file system做成一个档案,有点类似tar的作用。使用datastream格式的package来安装时必须指定文件名,不能用“.”来指定,而且每次只能安装一个package,但好处是只需要一个文件而己。要把file system的格式转换成datastream的格式可以用下面的命令:#pkgtrans -s pwd dest要把datastream格式转换成file system格式可以用下面的命令:#pkgtrans source dest 这个就有趣了!我们自己来编辑一下自己制作的RPM怎么样?会很难吗?完全不会!这里简单的以一个小例子来说明

22、喔!请注意,这个真的只是一个小例子,所以不要觉得奇怪喔!其中,比较需要注意的,由于在上面的步骤说明中,我们知道在将SRPM编译成为RPM的时候,会以tar这支程式来将档案解开,因此,我们在进行来源档案的建立时,就必需要将他打包成为一个tar.gz的tarball的档案才行! 假设我们编辑了一支script,内容是这样: roottest root# cd /usr/src/redhat/SOURCES roottest SOURCES# vi showvbird.sh #!/bin/bash # This file is just used to demo the RPM packaging.

23、 # the only thing is showing the hostname. HOST=/bin/hostname /bin/echo $HOST roottest SOURCES# chmod 755 showvbird.sh roottest SOURCES# tar zcvf showvbird.tar.gz showvbird.sh # 注意了,我们必需要将他打包才行! 上面的动作中,我们编辑了一个shell script档案,档名为showvbird.sh,并且将他打包成为具有gzip压缩的tarball档案,也就是showvbird.tar.gz这样的档案才行!请注意,这个

24、showvbird.tar.gz档案必需放置在SOURCES目录之下! 再来则是要编辑那个很重要的*.spec档案啰!你可以这样简单的编写一下: roottest root# cd /usr/src/redhat/SPECS roottest SPECS# vi showvbird.spec Summary: This is a demo RPM package. Name: showvbird Version: 1.0 Release: 1 Copyright: GPL Group: VBirds Home Source: showvbird.tar.gz =这个就是刚刚建立起来的Tarba

25、ll档案! Url: http:/linux.vbird.org Packager: VBird %description This package is just a demo RPM. %prep %setup c %install install -m 755 showvbird.sh /usr/local/bin/showvbird.sh %files /usr/local/bin/showvbird.sh 回答人的补充 2009-06-11 17:27 好了!开始给他编译并打包成为RPM档案啦! root test SPECS# rpmbuild -bb showvbird.spec .(略) Wrote: /usr/src/redhat/RPMS/i586/showvbird-1.0-1.i586.rpm 最后这个被打包成功的档案就被放置在/usr/src/redhat/RPMS/i586/showvbird-1.0-1.i586.rpm啰!然后给他安装一下: roottest SPECS# rpm ivh /usr/src/RPM/RPMS/i586/showvbird-1.0-1.i586.rpm Preparing. # 100% 1:showvbird # 100%

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2