修改RPM包内容,重新打包

本文转载自:https://www.cnblogs.com/felixzh/p/10564895.html

1.安装rpmrebuild 和安装rpmbuild

rpmrebuild下载链接: https://sourceforge.net/projects/rpmrebuild/files/rpmrebuild/2.12-1/

rpmbuild直接用yum安装 :yum install rpm-build

2.创建目录解压rpmrebuild文件到/data/rpmbuild中
mkdir -p /data
mkdir -p /data/rpmbuild
mkdir -p /data/rpmbuild/BUILDROOT
mkdir -p /data/rpmbuild/SPECS
cd /data/rpmbuild
echo "%_topdir /data/rpmbuild" >> ~/.rpmmacros
tar -zxvf rpmrebuild-2.14.tar.gz
3.安装准备重新打包的rpm
rpm -ivh xxxxxx.rpm
4.反编译提取SPEC文件
查看rpm安装名称
rpm -qa|grep xxx

./rpmrebuild.sh -s SPECS/abc.spec ccc
ccc 为查看的rpm安装名称
5.替换或修改rpm包中的文件
解压原版RPM包
rpm2cpio xxxxxx.rpm |cpio -idv

接下来可根据需求替换修改解压后的文件后

6.修改abc.spec
vi /data/rpmbuild/SPECS/abc.spec

例如: 原内容为

%attr(0644, root, root) "/usr/lib/123.jar"

删除了123.jar,添加了新的456.jar,包权限为0644,用户是root,用户组也是root

删除%attr(0644, root, root) "/usr/lib/123.jar"

增加 %attr(0644, root, root) "/usr/lib/456.jar"

保存aba.spec

7.编译RPM包

rpmbuild -ba /data/rpmbuild/SPECS/abc.spec

生成的RPM位置在/data/rpmbuild/RPMS/

更多RPM打包原理可参考:https://www.ibm.com/developerworks/cn/linux/l-rpm/

在 Linux 系统中,解压 RPM 重新打包是一个涉及多个步骤的过程,主要用于修改软件内容重新构建特定版本的软件。以下是详细的操作方法。 ### 解压 RPM RPM 是一种用于 Red Hat 及其衍生发行版(如 CentOS、Fedora)的软件格式。要解压 RPM ,可以使用 `rpm2cpio` 和 `cpio` 工具将 RPM 文件转换为 CPIO 格式并提取其中的内容: ```bash rpm2cpio package.rpm | cpio -div ``` 上述命令会将 RPM 中的文件释放到当前目录下,通常以 `/usr`、`/etc` 等目录结构呈现。此时,可以对这些文件进行任意修改[^3]。 ### 修改 RPM 内容 完成解压后,可以根据需要修改其中的文件。例如,如果解压的是内核开发,则可以在 `./usr/src/kernels/` 目录下找到相关的源代码文件,并对其进行编辑。 ### 重新打包 RPM 重新打包修改后的文件为新的 RPM ,通常需要以下几个步骤: 1. **准备 SPEC 文件** SPEC 文件是 RPM 构建过程的核心配置文件,含软件的元数据和构建指令。可以通过从原始 RPM 提取 SPEC 文件,或者手动编写一个新的 SPEC 文件来实现。提取 SPEC 文件的方法如下: ```bash rpm -i package.rpm ``` 这会将 SPEC 文件安装到默认的 RPMBUILD 路径中,通常是 `~/rpmbuild/SPECS` 目录下。 2. **更新文件结构** 将修改后的文件重新放置到 RPMBUILD 的 `BUILDROOT` 目录中,确保符合 SPEC 文件中定义的路径结构。 3. **执行重新打包操作** 使用 `rpmbuild` 命令根据 SPEC 文件重新构建 RPM : ```bash cd ~/rpmbuild/SPECS rpmbuild -bb package.spec ``` `-bb` 参数表示只构建二进制 RPM ;如果希望同时构建源码,可以使用 `-ba` 参数[^2]。 4. **验证新生成的 RPM ** 使用以下命令验证新构建的 RPM 是否完整且无错误: ```bash rpm -qp package.rpm ``` 此外,还可以使用 `rpm -qlp package.rpm` 查看内的文件列表,确认修改是否已正确应用[^1]。 ### 示例:重新打包 Redis RPM 假设用户已经解压了 `redis-6.x.rpm` 并对其配置文件进行了修改,接下来可按照以下步骤重新打包: 1. 提取 SPEC 文件: ```bash rpm -i redis-6.x.rpm ``` 2. 修改 `~/rpmbuild/SPECS/redis.spec` 中的相关参数,如版本号或依赖关系。 3. 执行构建命令: ```bash cd ~/rpmbuild/SPECS rpmbuild -ba redis.spec ``` 4. 新生成的 RPM 会在 `~/rpmbuild/RPMS/x86_64/` 目录下找到。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值