如何在Ubuntu系统上安装rpmdevtools并构建RPM包?
在Ubuntu上构建RPM包的完整入门流程
兄弟,我明白你在Ubuntu上搞RPM打包的痛苦——毕竟Ubuntu是deb系发行版,默认和RPM那套工具生态不怎么适配,先帮你解决最开始的依赖安装问题,再一步步带你走完从环境搭建到打包完成的全流程:
一、先搞定依赖安装的坑
你遇到的yum命令报错很正常,因为yum是RHEL/CentOS这类rpm系发行版的包管理器,Ubuntu根本没预装;而apt-get找不到rpmdevtools,大概率是没启用Ubuntu的universe源。按下面的步骤来:
- 启用universe源并更新apt索引:
sudo add-apt-repository universe sudo apt update
- 安装RPM打包所需的核心工具:
sudo apt install rpm rpmdevtools alien
rpm:提供RPM包的基础管理能力rpmdevtools:包含rpmdev-setuptree这类构建必备工具alien:可以在deb和rpm包格式之间转换,方便你在Ubuntu上测试rpm包
二、搭建RPM构建环境
RPM打包需要标准的目录结构,用一条命令就能自动生成:
rpmdev-setuptree
执行后,你的~/rpmbuild目录下会出现以下子目录:
BUILD:构建过程中临时存放文件的目录RPMS:最终生成的二进制RPM包存放位置SOURCES:存放软件源码包(比如tar.gz)的目录SPECS:存放SPEC配置文件(打包核心)的目录SRPMS:生成的源码RPM包存放位置
三、准备待打包的软件源码
把你要打包的软件整理成标准的源码包格式(比如myapp-1.0.tar.gz),然后放到~/rpmbuild/SOURCES目录下。如果是自己写的脚本或者简单程序,也可以手动打包:
# 假设你的软件文件都在当前目录的myapp-1.0文件夹里 tar czf myapp-1.0.tar.gz myapp-1.0 mv myapp-1.0.tar.gz ~/rpmbuild/SOURCES/
四、编写SPEC配置文件(核心步骤)
SPEC文件是RPM打包的灵魂,所有打包规则、安装逻辑都在这里定义。进入SPECS目录新建一个myapp.spec文件(文件名和软件名对应):
cd ~/rpmbuild/SPECS touch myapp.spec
然后用编辑器打开,填入以下示例内容(根据你的软件修改):
Name: myapp Version: 1.0 Release: 1%{?dist} Summary: 一个测试用的简单应用 License: GPLv3 URL: https://example.com/myapp Source0: %{name}-%{version}.tar.gz %description 这是一个在Ubuntu上用于练习RPM打包的测试应用,包含一个简单的执行脚本。 %prep # 自动解压源码包到BUILD目录 %setup -q %build # 如果是编译型软件,这里放编译命令(比如make);脚本类软件可以留空或加提示 echo "开始构建myapp..." %install # 将脚本安装到系统的/usr/bin目录(先放到构建根目录,最终打包时会同步到系统) install -Dm755 myapp %{buildroot}/usr/bin/myapp %files # 列出需要打包的文件路径 /usr/bin/myapp %changelog * Tue Oct 10 2024 你的名字 <your.email@example.com> - 1.0-1 - 首次发布myapp的RPM包
简单解释几个关键段:
%prep:预处理阶段,负责解压源码%build:构建阶段,编译代码(脚本类可以跳过)%install:安装阶段,定义文件要放到系统的哪个位置%files:明确要打包进RPM的文件列表
五、构建RPM包
一切准备就绪后,进入SPECS目录执行构建命令:
cd ~/rpmbuild/SPECS rpmbuild -ba myapp.spec
-ba参数表示同时构建二进制RPM包和源码RPM包- 构建成功后:
- 二进制RPM包会出现在
~/rpmbuild/RPMS/$(arch)/目录下(比如x86_64架构就是~/rpmbuild/RPMS/x86_64/) - 源码RPM包会出现在
~/rpmbuild/SRPMS/目录下
- 二进制RPM包会出现在
六、测试安装RPM包
在Ubuntu上测试RPM包有两种方式:
- 直接用rpm命令安装:
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/myapp-1.0-1ubuntu1.x86_64.rpm
- 转换成deb包安装(更符合Ubuntu的使用习惯):
sudo alien -i ~/rpmbuild/RPMS/x86_64/myapp-1.0-1ubuntu1.x86_64.rpm
七、常见问题排查
- 如果构建时提示缺少编译工具(比如gcc、make):直接用
apt install gcc make安装对应依赖 - 如果SPEC文件报错:仔细检查路径是否正确、命令是否存在,或者参考官方文档调整语法
内容的提问来源于stack exchange,提问作者Shah Ritesh
相关产品推荐
相关产品推荐

