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 |
参考资料
2.