赞
踩
rpm打包规范
1.文件名命名规范
1.1. spec文件
格式如下:Name.spec
1.2. patch文件
格式如下:Name_function[_id].patch
1-3. 源码包
格式如下:Name-Version-Release.tar.gz
1.4. 二进制包
格式如下:Name-Version-Release.平台(ix86).rpm
注意:源码包及二进制包文件名是打包后系统根据spec文件信息自动产生的,要求spec文件严格按规范编写。
2.SPEC文件规范
2-1.spec文件应当使用UTF-8的编码,各段落之间应空一行
例如:%prep
%setup -q -n %{name}_linux-%{version}
%build
%configure
2-2.整个文档的开头以Summary为开始,这部分的设定都是最基础的说明内容
2-3.每个不同的段落之间,都以%来作为开头
例如%prep与%install
2-4.必要信息Summary,Name,Version,Release,Vendor,Group,Source。
。仅当软件包比以前有较大改变时才增加Version号。
。一般我们对该软件包做了一些补丁的时候应该把Release号加1.
。不要在Source语句中包含任何路径
缺省情况下,RPM 会在 /usr/src/redhat/SOURCES 中寻找文件,请将您的源文件复制或链接到那里。(要使 spec 文件尽量可移植的话,应当尽量避免嵌入自己开发机器上的假想路径。其他开发人员就可以指示 RPM 在别的目录下查找源文件,而不用修改您的 spec 文件。)
正确写法如,
Source:stardict-2.0.tar.gz
。分组规范(Group)
具体类别有:
Amusements/Games 娱乐/游戏
Applications/Internet 应用程序/互联网
Applications/Publishing 应用程序/出版
Applications/Multimedia 应用程序/多媒体
Applications/Tools 应用程序/工具
Applications/Engineering 应用程序/工程
Applications/Archiving 应用程序/归档
Applications/Databases 应用程序/数据库
Applications/File 应用程序/文件
Applications/Text 应用程序/文本
Applications/Emulators 应用程序/模拟器
Applications/Productivity 应用程序/生产力
Applications/System 应用程序/系统
Applications/Editors 应用程序/编辑器
Applications/Communications 应用程序/通讯
Development/Tools 开发/工具
Development/Libraries 开发/库
Development/System 开发/系统
Development/Languages 开发/语言
Development/Debuggers 开发/调试器
Documentation 文档
User Interface/X 用户界面/X
User Interface/Desktops 用户界面/桌面
System Environment/Kernel 系统环境/内核
System Environment/Base 系统环境/基本
System Environment/Shells 系统环境/外壳
System Environment/Libraries 系统环境/库
System Environment/Daemons 系统环境/服务
。%description软件包详细说明。
2-5.%prep一般包含%setup与%patch两个命令。%setup用于 将软件源码包解开,执行%patch可将补丁文件加入解开的源程序中。
%setup可用参数:
-n newdir---------将压缩的软件源程序在newdir目录下解开。
-c ---------------在解开源程序之前先创建目录。
-b num------------在包含多个源程序时,将第num个源程序解压缩。
-T----------------不使用缺省的解压缩操作。
例如:
%setup -T -b 0
/*解开第一个源程序文件。*/
%setup -c -n newdir
/*创建目录newdir,并在此目录之下解开源程序。*/
%patch
%patchN-------这里N是数字,表示使用第N个补丁文件,等价于%patch -P N
-p0-----------指定使用第一个补丁文件,-p1指定使用第二个补丁文件。
-s------------在使用补丁时,不显示任何信息。
-b name-------在加入补丁文件之前,将源文件名上加入name。若为指定此参数,则缺省源文件加入.orig。
-T------------将所有打补丁时产生的输出文件删除。
2-6.%build 一般由多个make命令组成。
2-7.%install 一般是由make install指令构成,但是有时也可包含cp、mv、install等指令。
主要用于完成实际安装软件必须执行的命令,它是使用节前缀%install表示的。这一节还可指定在用户安装的系统上,包安装时运行的脚本。这样的脚本称为安装(卸载)脚本。它用于指定包安装前、包安装后、包除去前、包除去后的系统必须运行的外壳程序段。在用户安装的系统上,为了验证一个包是否已经成功安装的验证脚本也可在这一节指定。
2.8.%files列出应该捆绑到 RPM 中的文件,并能够可选地设置许可权和其它信息。
在%files中,可以使用%defattr 来定义缺省的许可权、所有者和组
用 %attr(permissions,user,group) 覆盖个别文件的所有者和许可权,通过在行中添加 %doc 或 %config 来标记文件
2.9.%changelog格式为:
第一行:* 星期 月日 年 修改人电子信箱。
第二行:对哪些内容进行了修改,可写多行。一般以减号开始,便于后续的查阅。
例如:
* Tue Feb 9 2006 KanKer <kanker@163.com>
- update 2.3beta1
。%changelog中:星期、月份均用英文形式的前3个字母,用中文会报错
。每个changlog之间应该有一空行
例如:
* Tue Feb 9 2006 KanKer <kanker@163.com>
- update 2.3beta1
* Sun Dec 11 2005 KanKer <kanker@163.com>
- first spec
具体的以llk的spec为例,详细说明:
3.打包原则
3-1.任何人都应该在系统现有 src.rpm 的 spec 基础上修改更新,除非没有这样的包。
3-2任何人都无权删除别人的 changelog 和原始打包者的信息,但你可以追加自己的信息。
3-3.尽可能在 spec 里使用系统的标准宏定义,而不要用非标准写法。
3-4.任何人都不应该直接提供修改后的源代码,而应该以补丁形式发布你的修改,在 spec 里完成打补丁操作。务必做到一个补丁只解决一个问题,这样才能确保补丁的可重用性,否则版本升级后补丁很容易失效。你所打的任何补丁,其授权方式必须和被修改源代码保持一致。
4.打包注意事项
4-1.各文件应正确放置在其相应的位置。
BUILD:存放打包过程中的源文件
SOURCES:存放打包是要用到的源文件和patch
SPECS:存放spec文件
SRPMS、RPMS:分别存放打包生成的rpm格式的源文件和二进制文件
4-2. 支持rpmbuild命令的各个参数:ba,bb,bs,bp(可以用rpmbuild命令的各个参数来生成相应的包)
4-3. 生成的srpm包必须符合要求:命名规范,安装后在相应目录(SOURCES, SPECS。。。)可以找到相应的文件夹/文件,并支持rpmbuild 命令的各个参数来重新打包
4-4.生成的rpm包应该支持rpm的基本功能(安装,查询,更新,卸载及验证)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。