1. 准备目录结构和文件
首先请准备一个Linux环境,比如CentOS。
RPM打包使用的是rpmbuild命令,这个命令来自rpm-build包,这个是必装的。
yum install rpm-build
当然也可以直接安装rpmdevtools,这个工具还包含一些其他的工具,同时它依赖rpm-build,所以直接安装的话会同时把rpm-build装上。
yum install rpmdevtools
当然,根据不同的软件构建过程,还需要其他的编译打包工具,比如C语言的make、gcc,python的setuptools等,根据需要安装即可。
接下来需要创建正确的目录结构并将文件放入相应位置:
mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} cd ~/rpmbuild/SOURCES mkdir saicbaseline_download-1.0
将需要的文件放到~/rpmbuild/SOURCES
下
将你的文件放入临时目录中(按照.spec中的路径):
cd ~/rpmbuild/SOURCES/ mkdir -p saicbaseline_download-1.0/opt/dsa/prodis/bin mkdir -p saicbaseline_download-1.0/etc/prodis mkdir -p saicbaseline_download-1.0/etc/systemd/system cp saicbaseline_download saicbaseline_download-1.0/opt/dsa/prodis/bin/ cp saicbaseline_download.ini saicbaseline_download-1.0/etc/prodis/ cp saicbaseline_download.service saicbaseline_download-1.0/etc/systemd/system/
2. 创建压缩包
tar -czvf saicbaseline_download-1.0.tar.gz saicbaseline_download-1.0/ rm -rf saicbaseline_download-1.0/ # 清理临时目录
3. 将.spec文件放入正确位置
将你的.spec文件复制到SPECS目录:
cp saicbaseline_download.spec ~/rpmbuild/SPECS/
4. 构建RPM包
cd ~/rpmbuild/SPECS rpmbuild -ba saicbaseline_download.spec
5. 检查生成的RPM包
构建完成后,你可以在以下目录找到生成的RPM包:
~/rpmbuild/RPMS/noarch/saicbaseline_download-1.0-1.el7.noarch.rpm
注意事项:
- 确保你拥有
rpmbuild
工具,如果没有可以通过yum install rpm-build
安装 - 确保所有列在%files部分的文件都存在于正确的位置
- 如果构建过程中出现依赖错误,需要先安装相应的依赖包
- 你的.spec文件中引用了
/opt/dsa/tools/bin/servicemgr
,确保这个路径在构建环境中存在或修改为正确的路径
调试建议:
如果构建失败,可以查看详细的构建日志:
tail -f ~/rpmbuild/BUILD/saicbaseline_download-1.0/build.log
或者使用更详细的构建命令:
rpmbuild -ba --debug saicbaseline_download.spec
这样应该就能成功构建你的RPM包了。
P.S. 后附.spec文件
Name: saicbaseline_download Version: 1.0 Release: 1%{?dist} Summary: SAIC Baseline Download Service License: Apache URL: https://www.dsa.com.cn/ Source0: %{name}-%{version}.tar.gz Requires: systemd BuildRequires: systemd BuildArch: noarch %description SAIC Baseline Download Service for PRODIS system. %prep %setup -q %install mkdir -p %{buildroot}/opt/dsa/prodis/bin mkdir -p %{buildroot}/etc/prodis mkdir -p %{buildroot}/etc/systemd/system mkdir -p %{buildroot}/data/flash # 使用完整路径(从 BUILD 目录开始) install -m 755 %{_builddir}/%{name}-%{version}/opt/dsa/prodis/bin/saicbaseline_download %{buildroot}/opt/dsa/prodis/bin/ install -m 644 %{_builddir}/%{name}-%{version}/etc/prodis/saicbaseline_download.ini %{buildroot}/etc/prodis/ install -m 644 %{_builddir}/%{name}-%{version}/etc/systemd/system/saicbaseline_download.service %{buildroot}/etc/systemd/system/ %pre %post # Set permissions chown -R prodis:users /data/flash chmod 755 /data/flash # Reload systemd and enable service crm maintaince on /opt/dsa/tools/bin/servicemgr add saicbaseline_download /opt/dsa/tools/bin/servicemgr daemon-reload crm maintaince off %files %attr(755,prodis,users) /opt/dsa/prodis/bin/saicbaseline_download %config(noreplace) /etc/prodis/saicbaseline_download.ini %attr(644,root,root) /etc/systemd/system/saicbaseline_download.service %dir %attr(755,prodis,users) /data/flash %changelog * Wed May 28 2025 Lucas Zhang zhangyijie@dsa.com.cn - 1.0-1 - Initial package