Extraindo vários arquivos rpm e sobrescrevendo arquivos existentes

0

Eu tenho um monte de arquivos rpm em um diretório, onde todos os arquivos rpm são extraídos como / usr / .. Eu gostaria de extrair todos os arquivos rpm e substituir arquivos existentes.

Eu normalmente faço isso com file-roller -f * .rpm que traz a GUI para pedir ao local para extrair e depois fazer seu trabalho. Como rolo de arquivo está falhando em 14.04 (última vez que fiz isso foi em 12.04) im procurando outra maneira de fazer este trabalho

Se eu usar a GUI de rolagem de arquivo (selecionando todos os arquivos rpm no nautilus) e dizer extrair aqui, isso resultará em várias pastas usr, usr (1), usr (2) ... usr (102).

Existe algum aplicativo ou outra maneira que eu possa usar?

    
por user252296 04.06.2014 / 18:22

1 resposta

1

A maneira mais fácil de extrair o conteúdo dos pacotes RPM é combinar o rpm2cpio e comandos do cpio . Isso fornece uma maneira de linha de comando de descompactar um RPM no diretório atual para obter o conteúdo do pacote, ignorando os metadados e dependências do pacote.

Por exemplo, para descompactar todos os RPMs no diretório atual, use

for rpm in *.rpm; do rpm2cpio $rpm | cpio -idm; done

Isso também extrairá o conteúdo para o diretório atual, e todos os arquivos pertencerão ao usuário atual, assim como extrair um tarball como um usuário normal.

O comando cpio só pode extrair arquivos para o diretório atual, assim os arquivos sempre serão extraídos no diretório onde o cpio é executado. Para colocar o conteúdo em um diretório diferente, você poderia usar

for rpm in *.rpm; do rpm2cpio $rpm | ( cd /path/to/dir && cpio -idm ); done

ou

for rpm in /path/to/packages/*.rpm; do rpm2cpio $rpm | cpio -idm; done
    
por Mike Miller 04.06.2014 / 19:18