gnupg no Arch Linux quebrado desde a readline upgrade - não consigo encontrar libreadline.so.6

7

Acabei de atualizar o readline para uma nova versão principal:

$ grep readline.*7 /var/log/pacman.log 
[2016-11-15 21:53] [ALPM] upgraded readline (6.3.008-4 -> 7.0-1)

Como esse GNUPG está quebrado:

$ gpg 
gpg: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory

Isso também significa que não posso atualizar nenhum pacote. Como posso seguramente consertar minha instalação?

O que eu tentei até agora para fazer downgrade readline:

  • O pacote não está em /var/cache/pacman/pkg
  • A partir do PKGBUILD anterior falhou porque ele não se autoinicializa - ele depende do awk , que também está faltando libreadline.so.6 .
por l0b0 15.11.2016 / 23:23

6 respostas

4

Isso foi relatado para o Arch aqui .

A solução alternativa é executar

mkinitcpio -P

após a conclusão da atualização, mas antes da reinicialização.

Se você reinicializou antes de executar novamente o mkinitcpio, será necessário inicializar, uma chave USB e execute o mkinitcpio do chroot. O mais fácil é usar arch-chroot como no Instruções de instalação do Arch .

Eu não tive a chance de testar este método neste caso em particular, no entanto, fiz isso no passado.

    
por 16.11.2016 / 09:37
2

Corrigido por verificar e instalar manualmente uma versão mais antiga:

  1. Faça o download da versão anterior do Arch Linux Archive
  2. Copie o pacote e o arquivo de assinatura para outra máquina e verifique a assinatura
  3. Descompacte o pacote : sudo tar -xvpf readline-6.3.008-4-x86_64.pkg.tar.xz -C / --exclude .PKGINFO --exclude .INSTALL

Aviso: Outros pacotes podem conter scripts pré ou pós-instalação. Este não, mas considere-se avisado!

    
por 15.11.2016 / 23:56
2

Parece que libreadline.so.7 é compatível o suficiente para a maioria dos utilitários continuar funcionando após a execução:

sudo ln -s /usr/lib/libreadline.so.7 /usr/lib/libreadline.so.6

Depois disso, avisou-me que /usr/bin/bash: Symbol rl_readline_state has different size in shared object, consider re-linking , mas consegui atualizar pacman-key e atualizar libgcrypt para que novos pacotes fossem validados e, em seguida, pacman -S bash para reconstruir meu shell usando readline 7.0 .

Depois de ter apagado os incêndios do pacman do estilo Catch-22, limpe-os com:

sudo rm /usr/lib/libreadline.so.6
    
por 11.12.2016 / 18:24
0

Eu resolvo isso editando /etc/pacman.conf e descomentando ou adicionando essa linha em [options] :

SigLevel = Never

Salve e execute pacman -Syyu , atualiza o sistema e o repara. Em seguida, comente essa linha novamente e atualize o banco de dados.

    
por 17.11.2016 / 03:37
0

Eu fiz o que @chbrown sugere:

sudo ln -s /usr/lib/libreadline.so.7 /usr/lib/libreadline.so.6

(também tinha aviso de ligação)

Então eu tive um novo erro sobre o ca-certificates-utils, então tive que seguir isto: link

pacman -Sy --force  ca-certificates-utils

E então eu pude:

pacman -Syu

E todas as atualizações correram bem e o erro de ligação libreadline / libreadline foi corrigido.

    
por 16.09.2017 / 14:02
-2

Parece que você colocou seu sistema em um estado parcialmente atualizado, mas os upgrades parciais são não suportados . A solução é que:

A simple pacman -Syu to a properly synced mirror will fix the problem as long as pacman is not broken.

Seu problema é que pacman parece estar quebrado. Você pode ter sorte e consertar as coisas, simplesmente desativando a assinatura do pacote . Se você está preocupado com a segurança, pode baixar manualmente os pacotes necessários em outra máquina, verificar suas assinaturas e depois adicioná-los ao cache de pacotes na máquina quebrada.

Se, de fato, pacman estiver corrompido, você precisará reinstalar manualmente o pacman . Isso basicamente requer que você baixe as dependências do pacman e as extraia manualmente nos locais corretos. Quais pacotes precisam ser reinstalados depende do estado exato do seu sistema.

    
por 15.11.2016 / 23:59