Como forçar manualmente o recarregamento de arquivos de um pacote RPM?

2

Este é um reenvio do Stack Overflow, considerando que este site pode ser um alvo melhor.

Após uma atualização de distribuição do Fedora (27- > 28) com dnf , tentei resolver manualmente os conflitos entre as versões do pacote (necessário para manter as versões antigas do sistema operacional; a versão do SO eficaz é selecionada no tempo de inicialização no menu GRUB2) .

As verificações de segurança de

dnf impediram a remoção de pacotes conflitantes e usei rpm -e xxx --force para fazer isso. Eu inadvertidamente removi a glibc e o PC imediatamente errou.

Eu quero evitar a reconstrução do meu computador a partir do zero porque

  1. Não me lembro exatamente de todos os aplicativos que instalei anos atrás (eles foram atualizados automaticamente pelo upgrade do sistema dnf)
  2. haveria um enorme trabalho de configuração em / etc para restaurar configurações personalizadas para o meu ambiente de rede, além dos servidores na máquina

Usando um disco de recuperação, eu poderia inicializar e examinar o disco rígido. Tudo parece relativamente "limpo". Os arquivos do pacote glibc estão simplesmente ausentes.

Eu não consegui completar chroot para a raiz anterior (para executar rpm -i glibc ) porque chroot tenta lançar /bin/bash que está faltando.

Eu encontrei Como eu extraio o conteúdo de um rpm? no StackOverflow, mas isso não responde a minha pergunta, porque eu quero o que o rpm faria, mas em outro "root".

Existe uma maneira de dizer ao rpm para fazer seu trabalho usual, mas para instalar arquivos em, digamos, /mnt/hard_disk/ em vez de / ?

Eu cuidarei depois da consistência e integridade do banco de dados do pacote.

    
por ajlittoz 11.05.2018 / 22:08

2 respostas

3

chroot pode receber um comando para executar. Isso pode funcionar:

chroot /mnt/hard_disk rpm -i glibc*.rpm

Além disso, rpm tem a opção --root , por isso esta é outra opção:

rpm -i --root /mnt/hard_disk glibc*.rpm
    
por 12.05.2018 / 00:46
2

Existe uma maneira de fazer isso, embora não use o comando rpm . Você precisará ter o binário rpm2cpio disponível e, em seguida, simplesmente:

# cd /mnt/hard_disk
# rpm2cpio <rpmfile> | cpio -idmv

Como você mencionou, você precisará lidar com problemas de integridade do RPMDB posteriormente, mas isso colocará os arquivos em seu lugar. Existem inúmeras páginas web com informações e mais detalhes sobre isso disponíveis através de uma simples pesquisa no google, uma delas é link .

    
por 11.05.2018 / 22:27

Tags