【RPM包的制作】

 Name

软件包的名称,后面可使用%{name}的方式引用

Name:          <software name>

 Version

软件包的名称,后面可使用%{name}的方式引用软件包版本号,后面可使用%{version}引用。

Version:          <software version>

  %build阶段

 宏%setup

 这个宏解压源代码,将当前目录改为源代码解压之后产生的目录。这个宏还有一些选项可以用。例如,在解压后,%setup 宏假设产生的目录是%{name}-%{version}, 如果 tar 打包中的目录不是这样命名的,可以用 -n 选项来指定要切换到的目录。例如:%setup -n%{name}-April2003Rel

  • %setup-q---------将 tar 命令的繁复输出关闭
  • %setup -nnewdir---------将压缩的软件源程序在newdir目录下解开。
  • %setup -c---------------在解开源程序之前先创建目录。
  • %setup -bnum------------在包含多个源程序时,将第num个源程序解压缩。
  • %setup -T----------------不使用缺省的解压缩操作。

文件%files

定义软件包所包含的文件,分为三类:说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。这里会在虚拟根目录下进行,千万不要写绝对路径,而应用宏或变量表示相对路径。 如果描述为目录,表示目录中除%exclude外的所有文件。%defattr (-,root,root) 指定包装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是0644,可执行文件是0755

 概括

1. rpmbuild目录

默认位置  宏代码 名称 用途
~/rpmbuild/SPECS %_specdir Spec 文件目录 保存 RPM 包配置(.spec)文件
~/rpmbuild/SOURCES %_sourcedir 源代码目录 保存源码包(如 .tar 包)和所有 patch 补丁
~/rpmbuild/BUILD %_builddir 构建目录 源码包被解压至此,并在该目录的子目录完成编译
~/rpmbuild/BUILDROOT %_buildrootdir 最终安装目录 保存 %install 阶段安装的文件
~/rpmbuild/RPMS %_rpmdir 标准 RPM 包目录 生成/保存二进制 RPM 包
~/rpmbuild/SRPMS %_srcrpmdir 源代码 RPM 包目录 生成/保存源码 RPM 包(SRPM)

2. spec文件阶段

阶段 读取的目录 写入的目录 具体动作
%prep %_sourcedir %_builddir 读取位于 %_sourcedir 目录的源代码和 patch 。之后,解压源代码至 %_builddir 的子目录并应用所有 patch。
%build      
%install      
%check      
bin      
src      

 参考资料

1. 如何制作一个标准的 RPM 包

2. RPM打包原理、示例、详解及备查

2.

原文地址:https://www.cnblogs.com/sunbines/p/14619406.html