Как извлечь RPM из базы данных RPM в Red Hat Enterprise Linux

8

Есть ли способ извлечь установленный RPM из базы данных RPM в Red Hat Enterprise Linux для воспроизведения оригинального .rpmфайла?

Джон в MD
источник
Почему этот заголовок был изменен? Red Hat - это название программного обеспечения, а не RedcHat
Ramhound

Ответы:

7

Если вы хотите сохранить копию пакета, установленную в настоящий момент, перед обновлением или удалением, используйте rpm --repackage- он сохранит RPM в / var / tmp или / var / spool / repackage или в другом месте, в зависимости от вашей конфигурации.

В противном случае существует rpmrebuild, что делает именно то, что вы просите.

Слово предостережения: ни *.rpmс одним из этих инструментов вы не получите точно то же самое, с которого вы начали. Любые изменения в установленных файлах, принадлежащих пакету, будут в генерируемых RPM.

ephemient
источник
1
Я считаю , что стоит отметить , что rpm --repackageбудет Re-package the files before erasing rpm.org/max-rpm-snapshot/rpm.8.html я почти выполнил эту команду вслепую, но смотрели на связанных документах первым.
Кевин Мередит
rpm --repackageПо-видимому, недоступно в более новых (например, RHEL 7) системах. rpmrebuildдоступен в EPEL для RHEL 7 и сделал свое дело для меня.
Jayhendren
1

Создание оригинального rpm-файла невозможно, его извлекли и, возможно, выбросили. База данных rpm содержит информацию о том, какие файлы установлены, а также их контрольные суммы, разрешения и сценарии postinst:

# verify package contents
rpm -q packagename --verify
# read the scripts that run on installation and removal
rpm -q packagename --scripts

даст вам некоторую информацию.

Если вы хотите получить rpm из репозитория, я рекомендую использовать yumdownloader из пакета yum-utils.

yum install yum-utils
yumdownloader packagename

Это позволит загрузить последнюю версию, а не ту, которая установлена ​​в данный момент.


источник