首页 > Linux系统管理 > rpm打包总结02-spec文件

rpm打包总结02-spec文件

2014年10月21日

rpm打包总结02-spec文件
http://blog.chinaunix.net/uid-16844903-id-3826775.html
本节主要介绍spec文件中涉及的部分变量,宏的含义和用法.
参考http://rpm.org/

基本信息
Name: 软件名称
Version: 软件版本
Release: 发布次数 如: 1%{?dist}
Summary: 软件说明

Group: 软件分组
License: 授权模式,例如 GPL
URL: 源码包的URL地址
Source0: 源码包,可指定多个,下面可用%{SOURCE0}变量引用
BuildRoot: 编译过程中的中间存档目录 如: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildArch: 平台 %{_arch}
BuildRequires:编译过程依赖的工具
Requires: 所依赖的软件包

最终的rpm名称:
{Name}-{Version}-{Relesae}-{BuildArch}.rpm

“段落”说明
名称 解释
%description 说明文档
%prep 准备部分,比如创建目录,解压源码包等,可使用%setup内部函数
%build 在BUILD目录编译,可使用%configure内部函数,或者其他编译工具,如cmake, perl等
%install 安装到BUILDROOT虚拟目录
%clean 清理文件
%files 将指定的文件添加到rpm包中,如果有遗漏,会报错退出. 文档类型可用%doc,配置文件可用%config
%changelog 更新记录.格式: 第一行 “* 日期 作者 ” 第二行 “- 更新内容”

内部变量
注意,用define命令定义的宏命令时,用#号注释是无效的.
定义的宏会读取下面文件中已设置的变量.
/usr/lib/rpm/macros

变量/宏 说明
RPM_BUILD_DIR ~/rpmbuild/BUILD
RPM_BUILD_ROOT ~/rpmbuild/BUILDROOT (例如 /home/lianjie.ning/rpmbuild/BUILDROOT/Percona-Server-x.x.x-relxx.x.qunar.rhel6.x86_64)
%{_sysconfdir} /etc
%{_sbindir} /usr/sbin
%{_datadir} /usr/share
%{_mandir} /usr/share/man
%{_libdir} /usr/lib64
%{_prefix} /usr
%{_bindir} /usr/bin
%{_localstatedir} /usr/var

经验之谈
编译完成后不检查依赖
AutoReqProv: no
不生成debuginfo
%define debug_package %{nil}
删除rpm软件后,目录如何销毁
在%file段落内的文件,在删除软件后,都会自动销毁.
如果在%post段落创建文件,则需要在%postun段落,单独执行删除命令
手动解压
在%prep段落,如果%setup函数的解压效果不能满足需求,可手动执行tar zxvf 或者gunzip命令解压

本文的评论功能被关闭了.