RPM包制作指导
更新时间:2026-06-04
安装打包依赖工具
制作RPM包必须安装rpm-build(rpm打包核心工具)、rpmdevtools(打包辅助工具,自动生成规范目录结构),无需其他额外依赖,所有依赖通过yum一键安装。
Plain Text
1# yum install -y rpm-build rpmdevtools gcc make -y
初始化RPM打包规范目录结构
Linux制作RPM包有强制的固定目录规范,所有源码、配置文件、打包规则必须放在指定目录中,通过以下命令自动生成全套规范目录,无需手动创建:
Plain Text
1# rpmdev-setuptree
执行后,会在当前用户家目录生成标准打包根目录:~/rpmbuild
查看规范目录结构
执行命令查看目录树,确认结构生成成功:
Plain Text
1# ls -l ~/rpmbuild/
目录功能说明:
- ~/rpmbuild/SOURCES :存放源码文件、压缩包、配置文件;
- ~/rpmbuild/SPECS :存放SPEC打包配置文件;
- ~/rpmbuild/BUILD :打包过程中,rpm自动解压源码、编译的临时目录;
- ~/rpmbuild/BUILDROOT :打包过程中生成的软件安装根目录;
- ~/rpmbuild/RPMS :打包成功后,最终生成的.rpm二进制软件包存放目录;
- ~/rpmbuild/SRPMS :生成的源码rpm包存放目录。
准备RPM打包的源码文件
本次我们制作一个最简单的可执行程序作为打包源码,无复杂依赖,零基础易理解,采用 C 语言编写 hello 程序(也可以是 Shell 脚本、Python 脚本,打包流程一致)。
- 进入源码存放目录
Plain Text
1# cd ~/rpmbuild/SOURCES
- 编写C语言源码文件 hello.c
Plain Text
1# vim hello.c
2#include <stdio.h>
3int main()
4{
5 printf("=================================\n");
6 printf(" 欢迎使用 自定义RPM包 DEMO !\n");
7 printf(" Hello RPM ! RPM打包测试成功 \n");
8 printf("=================================\n");
9 return 0;
10}
- 验证源码文件
Plain Text
1# ls -l hello.c
编写SPEC打包配置文件
SPEC文件是RPM打包的灵魂文件,后缀为.spec存放于~/rpmbuild/SPECS目录,所有打包规则:软件名称、版本、源码路径、编译命令、安装路径、文件权限、卸载规则等,全部在该文件中定义。
- 进入SPECS目录
Plain Text
1# cd ~/rpmbuild/SPECS
- 创建并编写SPEC配置文件
Plain Text
1# vim hello-rpm.spec
2# ==============================================
3# hello-rpm.spec RPM打包核心配置文件 (最简DEMO版)
4# 软件名:hello-rpm
5# 版本:1.0
6# 发布版本:1
7# ==============================================
8Name: hello-rpm
9Version: 1.0
10Release: 1%{?dist}
11Summary: A simple RPM demo program, print hello rpm info
12License: GPL
13Source0: hello.c
14
15%description
16This is a Linux RPM package production demo.
17Install this rpm package, you can run the 'hello-rpm' command anywhere.
18# 这是一个Linux下的RPM包制作DEMO,安装后可全局执行hello-rpm命令。
19
20%build
21# 编译阶段:执行gcc编译源码,生成可执行程序
22gcc %{SOURCE0} -o hello-rpm
23
24%install
25# 安装阶段:创建安装目录 + 复制可执行程序 + 赋予执行权限
26mkdir -p %{buildroot}/usr/bin
27install -m 755 hello-rpm %{buildroot}/usr/bin/hello-rpm
28
29%files
30# 指定需要打包的文件列表及对应权限
31/usr/bin/hello-rpm
32
33%changelog
34* Mon Dec 29 2025 root <root@localhost> 1.0-1
35- init package
SPEC 文件核心字段说明:
- Name:软件包名称,最终生成的rpm包名会包含该名称;
- Version:软件版本号,自定义即可;
- Release:发布版本号,第一次打包写1;
- Source0:源码文件路径,对应SOURCES目录下的hello.c;
- %build:编译段,执行源码编译命令,和手动编译一致;
- %install:安装段,定义软件安装到系统的路径(本次安装到/usr/bin,可全局执行);
- %files:打包段,指定要打包进rpm的文件,必须写绝对路径;
- %changelog:更新日志,记录版本变更,必填项。
关键说明:/usr/bin是系统环境变量目录,安装到该目录的程序,可在系统任意目录直接执行,无需写路径,是最常用的程序安装路径。
执行命令,生成RPM软件包
- 打包核心命令
当前目录在 ~/rpmbuild/SPECS,直接执行以下命令,开始打包:
Plain Text
1# rpmbuild -ba hello-rpm.spec
打包命令参数说明
- rpmbuild :Linux制作RPM包的核心命令;
- -ba :同时生成二进制+源码包
补充:-bs生成源码rpm包,-bb只编译生成二进制的rpm包。
- 打包成功的标准结果
Plain Text
1# ls -l /root/rpmbuild/SRPMS/hello-rpm-1.0-1.src.rpm
2# ls -l /root/rpmbuild/RPMS/x86_64/hello-rpm-1.0-1.x86_64.rpm
验证打包好的rpm包
- 安装自定义的RPM包
Plain Text
1# rpm -ivh ~/rpmbuild/RPMS/x86_64/hello-rpm-1.0-1.x86_64.rpm

- 验证RPM包安装效果
Plain Text
1# ./hello-rpm

- 卸载已安装的RPM包
Plain Text
1# rpm -evh hello-rpm

评价此篇文章
