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

心怀热爱,奔赴山海

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

目 录CONTENT

文章目录

Linux修改替换RPM包内容

zhouhuo
2022-07-29 / 0 评论 / 1 点赞 / 520 阅读 / 0 字

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
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区