У меня есть RPM, который мы устанавливаем в наших производственных системах, и я хотел бы изменить его, чтобы установщик ОС не вносил никаких изменений в систему после установки. Дистрибутив довольно старый (и, к сожалению, мы не можем обновить его до более нового) - Fedora 11.

Есть ли способ для меня, чтобы иметь возможность распаковать RPM, изменить файл, а затем перепаковать его?

Другие решения, которые я видел, ссылаются на утилиты "mock" и "mc", которых у меня нет.

1 ответ1

0

Если пакет 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

После того, как вы отредактировали распакованные файлы, скопируйте верхний каталог / directory в BUILDROOT /. Когда / if rpmbuild -bb name.spec сообщает "not found", создайте папку с именем приложения, которое запрашивается внутри 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-а-766486/# 13

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .