简述

若要构建一个标准的 RPM 包,需要创建 .spec 文件,其中包含软件打包的全部信息。然后,使用 rpmbuild 命令,按照 spec 文件的配置,系统会按照步骤生成最终的 RPM 包。

另外,需要注意的是,在使用时,需要使用普通用户,一定不要用 root 用户。

过程

yum install rpmdevtools -y
rpmdev-setuptree
cp example.spec ~/rpmbuild/SPECS
cp example.tar.bz2 ~/rpmbuild/SOURCES/
rpmbuild -ba ~/rpmbuild/SPECS/example.spec

其中example.tar.bz2是源码包,编译步骤已经在example.spec中有所定义

制作RPM包

spec文件规范

序号

参数

详解 

1

Name

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

2

Version

版本号,后面可使用%{version}引用 ,一般是x.y.z的格式,其中xyz都是数字

3

Release

发行号,后面可使用%{release}引用 

默认设置为1%{?dist},即每次制作RPM包时递增1,dist代表的是特定操作系统,如el7代表centos7

4

Summary

对软件包的简要说明 

5

License

软件授权方式,如GPL(自由软件)或GPLv2,BSD 

6

URL

软件的主页 ,如:URL: http://example.com/

7

Source0

源代码包的名字 (默认都是*.tar.bz2方式的)

8

%prep

预处理用来执行一些解开源程序包的命令,为下一步的编译安装作准备 

9

%setup

解压源代码,将当前目录改为源代码解压之后产生的目录 

10

%build

编译软件包所要执行的命令 

11

%install  

安装软件包时将执行命令 

12

%clean

清理(作用同rm-rf $RPM_BUILD_ROOT) 

13

%files

软件包所包含的文件,包括说明文档(doc),配置文件(config)及执行程序 

14

%changelog

更新日志,每次软件的更新内容可以记录在此到这里,以便查用 

15

BuildRequires

制作过程中依赖的软件包

16

Requires

安装时所依赖的软件包

17

%if

……

%endif


rpmbuild目录

序号

默认位置

宏代码

名称

用途

1

~/rpmbuild/SPECS   

%_specdir

spec文件目录

保存RPM包配置(.spec)文件

2

~/rpmbuild/SOURCES 

%_sourcedir

源代码目录

保存源码包(如tar包)和所有patch补丁

3

~/rpmbuild/BUILD   

%_builddir

构建目录

源码包被解压至此,并在该目录的子目录完成编译

4

~/rpmbuild/BUILDROOT

%_buildrootdir

最终安装目录

保存%install阶段安装的文件

5

~/rpmbuild/RPMS

%_rpmdir

标准RPM包目录

生成保存二进制RPM包

6

~/rpmbuild/SRPMS   

%_srcrpmdir

源代码RPM包目录

生成保存源码RPM包(SRPM)

rpmbuild 构建 debuginfo包

在使用rpmbuild构建rpm包时,往往能够自动打出debuginfo包。如果不想要,可以

echo "%debug_package %{nil}" >> ~/.rpmmacros

如果不想拆分出debuginfo包,让binary包里就是带调试符号的,可以在spec文件头加上

%global debug_package %{nil}

如果想打出debuginfo包,而默认却打不出来,可以检查机器是否安装了redhat-rpm-config包,如果没有,就会因为缺少brp-compress工具而打不出debuginfo包

查看当前系统发行版

rpm -qi centos-release

rpm 包 制作ios 文件 rpm包怎么制作_linux

  • 查看大版本

rpm -q --qf %{Version} centos-release;echo


rpm 包 制作ios 文件 rpm包怎么制作_debian_02

  • 查看发行版本

rpm -q --qf %{Release} centos-release;echo


rpm 包 制作ios 文件 rpm包怎么制作_centos_03

  • 查看CPU架构

rpm -q --qf %{Arch} centos-release;echo


批量检测包是否安装

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' 
gcc \
gcc-c++ \
glibc \
glibc-devel

包名可以随意增加或替换