Como extrair RPM do banco de dados RPM no Red Hat Enterprise Linux

8

Existe uma maneira de extrair um RPM instalado de um banco de dados RPM no Red Hat Enterprise Linux para reproduzir o .rpmarquivo original ?

John em MD
fonte
Por que este título foi modificado? Red Hat é o nome do software não RedcHat
Ramhound

Respostas:

7

Se você quiser salvar uma cópia do pacote como atualmente instalado antes de atualizá-lo ou removê-lo, use rpm --repackage- ele salvará os RPMs em / var / tmp ou / var / spool / repackage ou em outro local, dependendo da sua configuração.

Caso contrário, existe rpmrebuild, o que faz exatamente o que você pede.

Palavra de cautela: com nenhuma dessas ferramentas, você obtém exatamente o mesmo de *.rpmonde você começou. Quaisquer alterações nos arquivos instalados pertencem ao pacote estarão nos RPMs gerados.

efémero
fonte
11
Eu acredito que vale a pena notar que rpm --repackageirá Re-package the files before erasing rpm.org/max-rpm-snapshot/rpm.8.html Quase corri este comando cegamente, mas olhou para os documentos relacionados em primeiro lugar.
Kevin Meredith
rpm --repackageparece não estar disponível em sistemas mais novos (por exemplo, RHEL 7). rpmrebuildestá disponível no EPEL para RHEL 7 e fez o truque para mim.
Jayhendren
1

Não é possível produzir o arquivo rpm original, ele foi extraído e possivelmente descartado. O banco de dados rpm possui informações sobre quais arquivos estão instalados e suas somas de verificação, permissões e os scripts postinst:

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

lhe dará algumas informações.

Se você deseja obter um rpm do repositório, recomendo usar o yumdownloader, do pacote yum-utils.

yum install yum-utils
yumdownloader packagename

Isso fará o download da rpm mais recente, não da instalada atualmente.


fonte