如何修改现有的 RPM 文件以在 Fedora 11 系统上安装

如何修改现有的 RPM 文件以在 Fedora 11 系统上安装

我有一个安装在生产系统上的 RPM,我想修改它,以便 OS 安装程序在安装后不必对系统进行任何更改。该发行版相当旧(遗憾的是我们无法将其更新为较新的版本)- Fedora 11。

有没有什么方法可以让我解压 RPM、更改文件,然后重新打包?

我见过的其他解决方案参考了我没有的实用程序“mock”和“mc”。

答案1

如果您要解压的 rpm 包适用于 Fedora 11 或更早版本,则 Fedora 11 {rpm, rpm2cpio} 可以使用以下命令提取文件unPack_rpm.sh

#!/bin/bash
# Purpose: Unpack RPM archives (by @unSpawn)
# Args: /path/to/archive
# Deps: Bash, GNU utils, RPM
rpmDetails() { for Q in changelog provides requires scripts triggers triggerscripts; do 
 rpm -q -p --${Q} "${f}" 2>&1 | grep -v NOKEY > "${Q}.log"; done; }
rpmUnpack() { f=$(readlink -f "${f}"); file "${f}"|grep -q "RPM.v" && \
 { d=$(basename "${f}" .rpm); d="./${d:=ERROR_$$}"; mkdir -p "${d}" && \
 { cd "${d}" && rpm2cpio "${f}" | cpio -idmv && rpmDetails "${f}"; }; }; }
for f in $@; do rpmUnpack "${f}"; done
exit 0

编辑完解压的文件后,将顶层目录复制到 BUILDROOT/ 。如果rpmbuild -bb name.spec报告“未找到”,请在 BUILDROOT/ 内创建具有所需应用程序名称的文件夹,并将文件复制到那里。然后rpmbuild -bb name.spec再次运行。

我推荐的 rpmbuild 设置:http://www.linuxquestions.org/questions/linux-software-2/need-rpm-package-for-php-version-5-2-7-and-up-on-redhat-5-1-a-766486/#13

相关内容