Como forçar o RPM a instalar um pacote e NÃO substituir arquivos que conflitam

3

Eu tenho um pacote antigo fornecido pelo fornecedor que estou tentando instalar no CentOS 7. Ele instala coisas em / usr / lib, mas há um conflito com o próprio diretório / usr / lib.

O diretório / usr / lib como instalado:

ls -ld /usr/lib
dr-xr-xr-x. 42 root root 4096 Jun 10 08:44 /usr/lib   

O diretório / usr / lib conforme especificado no pacote:

rpm -qlpv <package file>
drwxr-xr-x    2 root    root  0 Jun 22  2006 /usr/lib

Eu poderia usar --replacefiles com rpm para fazê-lo continuar, mas isso não é realmente a coisa certa a fazer aqui. Em vez disso, eu gostaria que o rpm simplesmente ignorasse a instalação do diretório / usr / lib (já está lá, afinal), e apenas instale o conteúdo.

A opção --excludepath não parece realmente fazer nada (ainda recebo o erro) e (de acordo com a saída -vv) excluiria a maioria do pacote de qualquer maneira.

Por enquanto, em um ambiente de teste, posso fazer --replacefiles, mas sinto que deve haver uma maneira "mais correta" de lidar com essa situação.

NOTA: Obter um pacote de fornecedor atualizado está na minha lista de tarefas, mas não vai acontecer por algum tempo, então eu preciso de uma solução melhor a curto prazo.

    
por Michael Kohne 10.06.2016 / 17:10

1 resposta

3

Eu sugiro instalá-lo em outro diretório com rpm --prefix e extrair o material que você precisa. Como alternativa, você pode extraí-lo diretamente com rpm2pcio package.rpm | cpio -idmv .

Usar --prefix pelo menos tem o benefício de executar qualquer script de pós-instalação, etc ... no RPM.

Espero que isso ajude!

    
por 10.06.2016 / 17:23

Tags