0%

rpm2rpm 打包步骤

本文主要介绍将 rpm 包解压后,修改里面的文件,然后重新打包成 rpm 的过程。

准备环境

  • 安装rpm-build包
1
yum install rpm-build -y
  • 安装rpmdevtools
1
yum install rpmdevtools -y
  • 创建工作空间
1
rpmdev-setuptree

查看工作目录

  • 创建 BUILDROOT目录
1
mkdir /root/rpmbuild/BUILDROOT

完整目录结构

解压 rpm 包

  • 复制文件

复制需要修改的 rpm 包至 /root/rpmbuild/BUILDROOT/ 目录,

  • 解压 rpm 包
1
2
cd /root/rpmbuild/BUILDROOT
rpm2cpio zookeeper_3_0_1_0_187-3.4.6.3.0.1.0-187.noarch.rpm | cpio -idv
  • 提取 spec 文件
1
rpmrebuild --package --notest-install --spec-only=zookeeper.spec zookeeper_3_0_1_0_187-3.4.6.3.0.1.0-187.noarch.rpm

注:这里用到了rpmrebuild工具,具体可查看:使用rpmrebuild从rpm包中提取spec文件,有下载链接和使用方法。

  • 移动 SPEC 文件
1
mv zookeeper.spec /root/rpmbuild/SPECS/
  • 删除原 rpm 包
1
rm -rf zookeeper_3_0_1_0_187-3.4.6.3.0.1.0-187.noarch.rpm

修改内容

查看解压后的文件内容,

按自己需要进行修改,

  • 如果只是需要替换同名文件,则直接进行替换即可;
  • 如果需要增加文件或文件夹,则需要在 zookeeper.spec 中按原有格式添加文件或文件夹;
  • 如果需要删除文件或文件夹,也需要在 zookeeper.spec 中删除相应的文件或文件夹。
  • 如果修改的文件较多,也可以将原有的 %files 内容改为
    1
    2
    3
    %files
    %defattr(-,root,root,-)
    /usr/hdp/3.0.1.0-187

重新打 rpm 包

修改好文件后,重新打包成 rpm 文件,

1
2
cd /root/rpmbuild/SPECS
rpmbuild -ba --buildroot /root/rpmbuild/BUILDROOT/ zookeeper.spec

执行完成后在 /root/rpmbuild/RPMS 目录中查看新的 rpm 包