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