一、RPM打包的目的
二、RPM打包命令
三、spec文件简要说明
- RPM打包的关键之处就在于spec文件的编写
1、spec基本信息
- Name: 软件名称
- Version: 软件版本
- Release: 发布次数 如: 1%{?dist}
- Summary: 软件说明
- Group: 软件分组
- License: 授权模式,例如 GPL,即自由软件
- URL: 源码包的URL地址,可随意填写
- Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用
- BuildRoot: 编译过程中的中间存档目录,考虑到多用户的环境,一般定义为:
- %{_tmppath}/%{name}-%{version}-%{release}-root ,
- 后面可使用$RPM_BUILD_ROOT 方式引用
- BuildArch: 平台 %{_arch}
- BuildRequires: 编译过程依赖的工具
- Requires: 打包生成的rpm包安装时所依赖的软件包
- %description 说明文档
- %prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数
- %build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake,perl等
- %install 安装到BUILDROOT虚拟目录
- %clean 清理文件
- %files 将指定的文件添加到rpm包中,文档类型可用%doc,配置文件可 用%config
- %changelog 更新记录.格式: 第一行 "* 日期 作者 " 第二行 "- 更新内容"
- 最终的生成的rpm名称: {Name}-{Version}-{ReleSAE}-{BuildArch}.rpm
2、spec内部变量
在spec文件运行时,定义的宏会主动读取/usr/lib/rpm/macros中的变量
RPM_BUILD_DIR ~/rpmbuild/BUILD
RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT
3、spec文件示例(以git为例)
- Name: git
- Version: 2.10
- Release: 1%{?dist}
- Summary: this is the test code
- License: GPL
- URL: http://www.hao123.com
- Source0: %{name}-%{version}.tar.gz
- BuildRoot: %{_tmppath}/%{name}-%{version}-root
- BuildRequires: automake
- Requires: rpm
-
- %description %prep %setup -q %build autoconf ./configure --prefix=/opt/git/ make %{?_smp_mflags} %install make DESTDIR=$RPM_BUILD_ROOT install %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT" make clean %files %defattr (-,root,root) /opt/git/ %changelog
4、生成RPM包
- $rpmbuild -ba test.spec #生成RPM包
- 生成的RPM包在rpmbuild/RPMS目录下。