2022年RPM打包教程 .pdf
《2022年RPM打包教程 .pdf》由会员分享,可在线阅读,更多相关《2022年RPM打包教程 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Rpm build(RPM包的制作)要 想制作一个RPM格式的软件包,需要编写软件包描述文件。其标准命名格式为:软件名-版本号-释出号.spec(现在大多情况下都是直接用:软件名.spec),这个文件,详细描述了有关该软件包的诸多信息,如软件名,版本,类别,说明摘要,创建时要执行什么指令,安装时要执行什么操作,以及软件包所要包含的文件等等。有了这个文件,RPM 就可以制作出相应的包裹文件来。下面以制作简易的realplayer软件包(realplayer-11.0.0-1.i386.rpm)为例,详细说明一下软件包描述文件的书写。其描述文件为realplayer.spec,该文件内容的大概框架
2、如下(spec 文件中最好都用英文,用中文是方便说明):Name:realplayer Version:11.0.0 Release:1 Summary:视频播放工具Group:Applications/Multimedia License:Shareware Vendor:HQ制作Source0:RealPlayer-11.0.0-1.tar.gz url:http:/ Requires:bash%description realplayer是一款能播放mp3、rmvb 等多种音视频格式文件的强大工具。%prep echo 预处理脚本程序(prep)开始执行%setup%build echo
3、 编译连接脚本程序(build)开始执行 make%install echo 安装脚本程序(install)开始执行 make install%clean echo 建包结束后清理脚本程序(clean)开始执行%pre echo 安装前执行脚本程序(pre)开始执行 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页 -%post echo 安装后执行脚本程序(post)开始执行%preun echo 卸载前执行脚本程序(preun)开始执行%postun echo 卸载后执行脚本程序(postun)开始执行%files 打包的文件列表%changelog*Sun May
4、31 2009 小强-修改信息该描述文件包括以下几方面的内容:一、文件头文件头描述软件包的基本信息,它包含若干个域,其中有必选的域,也有可选的域。一个域占用一行,其描述格式为:域名 :域值注意:域名不分大小写,并且域值不能为空。文件头必选域有以下六个:1.Name:此域定义软件名。2.Version:此域定义版本号。仅当软件较以前有较大改变时才增加版本号。注:版本号中不能含减号(-)字符。3.Release:此域定义释出号。若软件较以前改变较小,则仅增加释出号,不改变版本号。注:释出号中亦不能含减号(-)字符。RPM 利用上述的Name(软件名),Version(版本号),Release(释出
5、号)及体系号来命名软件包,如本例输出的包裹文件名为realplayer-11.0.0-1.i386.rpm。4.Summary:此域定义软件包简介,为一句话说明。5.Group:此域定义软件所属类别很多,如:Amusements/Games 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -Applications/System Development/Tools System Environment/Base User Interface/X Hardware Support 6.License:此域定义软件适用的许可证或版权规则。该域也可用Copyright(版权)
6、来定义,二者同意。许可 证 具体 有:GPL(通 用 公 共 许 可 证,自 由 软 件 适 用),BSD,MIT,Public Domain(公 共域),Distributable(贡献),Commercial(商业),Share(共享)等。文件头可选的域包括如下几类:1.基本信息1.1 Vendor:此域定义软件的供应商(销售商)。1.2 URL:此域定义包含打包软件有关信息的网页地址。如:URL:http:/ RPM 用来描述软件包之间关系的。一个软件包依赖的东西RPM 称作功能,它可以是真实存在的软件包,也可以是虚拟的软件包(虚包)。虚包没有版本号。依赖相关的域有:2.1 Provid
7、es:此域定义软件包提供的功能,可重复多行。其描述格式为:Provides:功能 1,功能 2.注:所括为可选项,多个功能之间以逗号或空格分隔。软件包所提供的功能一般是以虚包形式存在的共享库。当有多个软件包均提供相同的服务时,常用虚包来表示其服务。如,一个邮件客户端软件允许用户使用不同的看信方式(文本形式,HTML 形式等),可以要求任何一个看信程序必须提供 mail-reader虚包。这样,看信程序的描述文件应有这么一行:Provides:mail-reader 如此它才能被邮件客户端使用。2.2 Requires:此域定义软件包所需的功能,可重复多行。其描述格式为:Requires:功能
8、1 比较符 1 序列号 1:版本号 1-释出号 1,功能 2 比较符 2 序列号 2:版本号 2-释出号 2.名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -其中:*所括为可选项;*比较符可使用(大于),=(等于),=(大于等于)或=3.0,ccc 2:5.0-1 注:本例定义生成的包在安装时需要系统有如下功能:(1)aaa(系统中已安装aaa 包,或者已安装软件包中有软件包提供aaa 虚包);(2)bbb 包已安装且版本要求大于等于3.0;(3)ccc 包已安装且版本要求小于序列号为2,版本号为5.0 且释出号为1。RPM在进行版本比较时,执行比较的顺序是;先版本号
9、,再释出号,最后比较序列号。通过比较,确定哪个版本较新,哪个版本较老。2.3 Conflicts:此域定义有哪些功能与本软件包相冲突(不能共存)。此域亦可在描述文件中书写多次。其描述格式形同Requires 域,为:Conflicts:功能 1 比较符 1 序列号 1:版本号 1-释出号 1,功能 2 比较符 2 序列号 2:版本号 2-释出号 2.其中:*所括为可选项;*比较符可使用(大于),=(等于),=(大于等于)或=3.0 注:本例阐明生成的包冲突的功能有:(1)当系统中 xxx 包版本等于序列号为1 且版本号为2.0 时;(2)当系统中yyy 包版本大于等于 3.0 时。*依赖关系的
10、自动实现*一 般情况下,当 RPM 建立一个软件包时,它要执行/usr/lib/rpm目录下的两个小程序。一个是find-requires,用于查找软件包所需的共享库,这些库将以虚包的形式加入到该软件包所需的功能(Requires)之中。另一个是find-provides,它用于查找软件包所提供的共享库,这些库将以虚包的形式加入到该软件包所提供的功能(Provides)之中。这两个程序都是SHELL程序,代码量虽小,但确实帮了软件包制作者一个大忙-不必劳心费神地自己写这样的依赖关系了,因为程序均自动完成了。下面三个域用于指示RPM 是否执行这两个程序。3.源码相关下列四个域均是为制作源码包而设
11、计的。源码包里有什么?用户可以通过查询包的文件列表得到,命令是“rpm-qpl 源码包文件”。一般情况下,源码包里有这么四类文件:一是程序源码(SOURCE),二是源码补丁(PATCH),三是软件包描述文件,四是图标文件(ICON)。通过安装源码包,用户可以轻松地实现现场编译、连接和应用,同时更方便了软件开发者与软件包制作者:他们维护程序容易了,并且维护过后可以很快地生成执行代码包与源码包。这,也是所有人钟爱 RPM 的重要原因之一。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 12 页 -3.1 Source:此域定义RPM 打包时要包含的程序源码文件。这些文件一般先用tar
12、 命令打包,然后再用gzip 压缩。一个描述文件中可包含多个Source 域,当有多个这样的域时,需要进行编号:第 1个编为 Source0(也可直接用Source),第 2 个编为Source1,第 3 个编为 Source2等等。此域的描述格式为:Source 编号 :源码文件注:所括为可选项。具体用法如:Source0:RealPlayer-11.0.0-1.tar.gz 3.2 Patch:Patch 的本义是补丁,用在这里指的是源程序的补丁,它是用diff 命令比较新老源程序所产生的输出(命令为“diff-Nur 旧文件新文件补丁文件”),而系统中的patch 命令又可利用此输出将老
13、版本的源程序升级为新版本。此 域定义 RPM 制作源码包时所要包含的补丁文件,该文件的命名建议用软件名-版本号.补丁功能.patch 的格式。一个软件包描述文件中可有多个Patch 域,当有多个这样的域时,也需要象 Source 域那样进行编号(注:第 1 个域编为Patch0,也可省略0,用 Patch)。此域的描述格式为:Patch 编号 :源码补丁文件注:所括为可选项。具体用法如:Patch0:RealPlayer-11.0.0-bugfix.patch Patch1:RealPlayer-11.0.0-config.patch Patch2:RealPlayer-11.0.0-some
14、thingelse.patch 注:此域的域值也可以象Source 域一样,采用 URL 的形式,RPM 仅提取其中的文件名供其使用。三、功能段1.%description 本段是描述段,段的内容是对软件包进行较为详细的介绍,不象文件头的Summary域仅用一句话说明。介绍的文本形式自由,可任意换行,不受限制。本段段名描述格式是:%description 子包选项 其中,子包选项的格式为:-n 子包名注:所括为可选项。2.%files 本段是文件段,它定义的是软件包需要包含哪些文件。本段通常放在描述文件尾部,以便于添加文件名,便于编辑。本段段名描述格式为:%files 子包选项 -f 文件名
15、注:所括为可选项。当没有任何选项时,本段内容定义的是父包要打包的文件列表;名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -当有子包选项时,本段内容定义的则是子包要打包的文件列表;当 选择-f 选项时,RPM 除了从文件段读取打包文件列表外,还将从指定的文件中读取要打包的文件列表。指定的文件中,一个文件名占用一行。此选项方便了软件包制作者,他们可以通过程序自动产生有关软件的文件列表,并将其写入到一个特定的文件中,这样制作软件包时,只需引用一下这个文件,RPM 就会自动从这个文件中读取文件名并将其加入包中。如果没有此选项,软件包制作者只能在文件段里,将要打包的文件名一个一
16、个写进去,有点麻烦。文件段的内容格式为:修饰符 1 修饰符 2.文件名其中:修饰符是可选的,一个文件可以有多个修饰符,文件名必须以/开头(绝对路径形式)。修饰符有以下几类:(1)文件相关*%doc:此修饰符设定文件类型为说明文档*%config:此修饰符设定文件类型为配置文件*%attr:此修饰符设定文件的属性信息,使用格式为:%attr(文件权限,属主,属组,文件夹权限)注:权限常用数字形式(八进制),属主和属组可以是数字,也可以是字符串。如果文件的权限,属主和属组想使用系统默认值,则可用减号(-)表示它。文件夹权限基本不会用到,默认权限就行。如下例采用两个修饰符,定义/etc/funkey
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年RPM打包教程 2022 RPM 打包 教程
限制150内