- 以zookeeper举例:
- 安装rpmbuild
yum install rpm-build rpmdevtools
- 创建RPM构建目录
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
- 将需要打包的文件和目录压缩成%{name}-%{version}.tar.gz包放到~/rpmbuild/SOURCES下(压缩成tar包的的时候要以绝对路径的方式)
tar -zcf zookeeper-3.8.4.tar.gz /opt/zookeeper /usr/lib/systemd/system/zookeeper.service
mv zookeeper-3.8.4.tar.gz ~/rpmbuild/SOURCES/
- 创建spec文件 vim ~/rpmbuild/SPECS/zookeeper.spec
Name: zookeeper
Version: 3.8.4
Release: 1
Summary: 摘要信息
License: 许可证类型
Source0: %{name}-%{version}.tar.gz
BuildArch: x86_64
# 描述信息
%description
# 准备源代码(例如,解压源码包)
%prep
# 编译源代码
%build
# 将编译好的文件复制到构建根目录
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/opt/zookeeper
tar xfz $RPM_SOURCE_DIR/%{name}-%{version}.tar.gz -C $RPM_BUILD_ROOT/
# 定义需要包含在RPM包中的文件,并设置属性
%files
%defattr(-,root,root,-)
/opt/zookeeper/bin
/opt/zookeeper/conf
/opt/zookeeper/lib
/opt/zookeeper/logs
/usr/lib/systemd/system/zookeeper.service
#构建完成后
%clean
rm -rf $RPM_BUILD_ROOT
# 在目标系统安装RPM前
%pre
getent group zookeeper >/dev/null || groupadd --system zookeeper
getent passwd zookeeper >/dev/null || useradd --system -M -g zookeeper -s /sbin/nologin zookeeper
# 在目标系统安装RPM后
%post
systemctl daemon-reload
chown zookeeper. /opt/zookeeper -R
# 在目标系统卸载RPM前
%preun
systemctl stop zookeeper > /dev/null 2>&1
systemctl disable zookeeper
# 在目标系统卸载RPM后
%postun
rm -rf /opt/zookeeper
%changelog
* Tue Jun 25 2025
- Initial release
- 打成rpm包命令
rpmbuild -bb --define "dist %{nil}" ~/rpmbuild/SPECS/zookeeper.spec
