侧边栏壁纸
博主头像
程序员ZFIREH博主等级

心怀热爱,奔赴山河!

  • 累计撰写 17 篇文章
  • 累计创建 24 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Linux修改替换RPM包内容

程序员ZFIREH
2022-07-29 / 0 评论 / 1 点赞 / 9 阅读 / 504 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-07-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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目录下

  1. 通过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
    
  2. 修改或替换需要调整的文件

生成RPM包

生成的RPM位置在/root/rpmbuild/RPMS目录下

rpmbuild -ba /root/rpmbuild/SPECS/abc.spec
1

评论区