RPM 是在 Linux 下广泛使用的软件包管理器,由 Red Hat 开发。它的全称是 RPM Package Manager,和 PHP、GNU 一样,是一个递归的缩写。RPM 软件包后缀名是.rpm
。将 RPM 解包后,便可以得到软件的本体。
创建相关目录
mkdir /root/rpmbuild/BUILDROOT -p
mkdir /root/rpmbuild/SPECS -p
cd /root/rpmbuild
echo "%_topdir /root/rpmbuild" >> ~/.rpmmacros
安装rpmrebuild及rpmbuild
yum install rpm-build -y
wget https://jaist.dl.sourceforge.net/project/rpmrebuild/rpmrebuild/2.15/rpmrebuild-2.15.tar.gz
tar -zxvf rpmrebuild-2.15.tar.gz -C /root/rpmbuild
安装准备重新打包的rpm
rpm -ivh xxxxxx.rpm
提取RPM包spec文件
rpm -qa|grep xxxxxx
cd /root/rpmbuild
# packageName名称为查看的rpm安装名称
./rpmrebuild.sh -s SPECS/abc.spec packageName
# 卸载掉安装的rpm包 packageName名称为查看的rpm安装名称
rpm -e packageName
替换或修改RPM包内容
解压原RPM包
cd /root/rpmbuild
# 将rpm包放到/root/rpmbuild目录下
rpm2cpio xxxxxx.rpm |cpio -idv
将相应包拷贝到BUILDROOT目录下
-
通过rpmbuild -ba /root/rpmbuild/SPECS/abc.spec命令执行编译,根据错误信息将相应的文件拷贝到BUILDROOT下相应目录
rpmbuild -ba /root/rpmbuild/SPECS/abc.spec # 错误信息如下 Processing files: xxx-20220717154314.0.0-1.x86_64 error: File not found: /root/rpmbuild/BUILDROOT/xxx-20220717154314.0.0-1.x86_64/etc/systemd/system/xxx.service error: File not found: /root/rpmbuild/BUILDROOT/xxx-20220717154314.0.0-1.x86_64/usr/local/bin/xxx RPM build errors: File not found: /root/rpmbuild/BUILDROOT/xxx-20220717154314.0.0-1.x86_64/etc/systemd/system/xxx.service File not found: /root/rpmbuild/BUILDROOT/xxx-20220717154314.0.0-1.x86_64/usr/local/bin/xxx # 那么此处应该拷贝两个文件/etc/systemd/system/xxx.service /usr/local/bin/xxx mkdir BUILDROOT/xxx-20220717154314.0.0-1.x86_64/etc/systemd/system -p mkdir xxx-20220717154314.0.0-1.x86_64/usr/local/bin -p cp /etc/systemd/system/xxx.service BUILDROOT/xxx-20220717154314.0.0-1.x86_64/etc/systemd/system/xxx.service cp /usr/local/bin/xxx BUILDROOT/xxx-20220717154314.0.0-1.x86_64/usr/local/bin/xxx
-
修改或替换需要调整的文件
生成RPM包
生成的RPM位置在/root/rpmbuild/RPMS目录下
rpmbuild -ba /root/rpmbuild/SPECS/abc.spec
评论区