AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 497105
Accepted
Tyler Durden
Tyler Durden
Asked: 2019-01-28 18:14:35 +0800 CST2019-01-28 18:14:35 +0800 CST 2019-01-28 18:14:35 +0800 CST

Como lidar com problemas de biblioteca compartilhada em um pacote que não funciona

  • 772

Instalei o bind-tools, a alternativa do Arch linux ao dnsutils, mas nenhuma das ferramentas funciona, todas falhando com o erro:

host: error while loading shared libraries: libidn2.so.4: cannot open shared object files: No such file or directory

Esse problema com libidn2.so.4 parece ser um problema recente (janeiro de 2019) com compilações de pacotes do Arch e aparentemente produziu alguns resultados bastante assustadores, como tornar todo o sistema não inicializável .

Minhas perguntas são: (1) a abordagem correta é apenas esperar até que o mantenedor do bind-tools corrija esse problema ou tentar corrigi-lo eu mesmo? e (2) o que exatamente está acontecendo? O bind-tools requer libidn2.so.4 mas não o instala? Como os mantenedores poderiam cometer tal erro?

arch-linux package-management
  • 2 2 respostas
  • 5767 Views

2 respostas

  • Voted
  1. Best Answer
    Ed Grimm
    2019-01-28T19:04:23+08:002019-01-28T19:04:23+08:00

    Eu não executo o Arch Linux, então estou me arriscando um pouco nisso.

    O artigo ao qual você vinculou indica que é um link simbólico ausente, em vez de um pacote ausente. Isso faz sentido, porque normalmente no Linux, as bibliotecas compartilhadas terão pelo menos dois octetos de número de versão após o '.so', e o erro menciona apenas um.

    Minha sugestão é que você corra

    ls -l /usr/lib/libidn2.so*
    

    e veja o que retorna. Se ele apenas retornar

    /usr/lib/libidn2.so
    

    e não menciona nada mais específico, então eu recomendaria executar

    ln -s /usr/lib/libidn2.so /usr/lib/libidn2.so.0
    ln -s /usr/lib/libidn2.so /usr/lib/libidn2.so.4
    

    Estou sugerindo a execução de ambos, porque parece que seu programa está procurando a versão principal quatro da biblioteca, mas o artigo que você mencionou está procurando a versão principal zero. Essa correção basicamente cria dois apelidos para o arquivo /usr/lib/libidn2.so, um com .0 e outro com .4.

    Se você vir que existe um /usr/lib/libidn2.so.something.something, e o /usr/lib/libidn2.so é um link simbólico para ele, pode fazer mais sentido criar um link simbólico para o arquivo mais específico. Eu realmente não sei qual caminho seria necessariamente melhor.

    Outra opção para você seria fazer o downgrade do seu libidn2 para o anterior a esse problema.

    No que diz respeito a como isso poderia acontecer - parece que o mantenedor do libidn2 para Arch Linux cometeu um erro. O que me deixa perplexo não é que isso tenha acontecido, mas... esse bug foi adicionado 12 dias atrás. Um bug que pode ser corrigido apenas com alguns links simbólicos manuais deve levar horas para ser corrigido, não semanas. Não quero menosprezar os mantenedores do Arch Linux; Eu não tenho idéia do que está acontecendo do lado deles das coisas. É apenas... frustrante. Meu palpite é que esta é apenas a ponta do iceberg desta história. De qualquer forma, pessoas são pessoas, e todos cometemos erros. Alguém provavelmente já está se culpando por isso e não precisa da nossa ajuda para fazer isso.

    • 2
  2. eschwartz
    2019-01-30T10:15:14+08:002019-01-30T10:15:14+08:00

    Como esse é o tipo de erro que aparece muito no Arch Linux, escrevi um script especializado para analisar pacotes e determinar se eles foram compilados corretamente. (Em 95% dos casos, o pacote Arch Linux é construído corretamente): https://github.com/eli-schwartz/dotfiles/blob/master/bin/pkg-list-linked-libraries

    Executando isso no pacote bind-tools e procurando por libidn2 mostra que a versão mais recente do bind-tools está vinculada a libidn.so.4:

    $ pkg-list-linked-libraries bind-tools libidn2
    ==> checking linked libraries for bind-tools-9.13.5-4-x86_64.pkg.tar.xz ...
    /usr/bin/dig
      NEEDED               libidn2.so.4
    /usr/bin/host
      NEEDED               libidn2.so.4
    /usr/bin/nslookup
      NEEDED               libidn2.so.4
    

    De onde vem essa biblioteca?

    $ pacman -Qo /usr/lib/libidn2.so.4
    /usr/lib/libidn2.so.4 is owned by libidn2 2.1.0-1
    

    O pacote bind-tools no Arch requer o pacote libidn2 como uma dependência, de acordo com a saída de pacman -Si bind-tools, o que é muito bom, pois depende dele.

    As versões dos dois pacotes nos repositórios oficiais do Arch Linux no momento da redação deste artigo correspondem à versão de bind-tools e libidn2 que verifiquei acima:

    $ expac -S '%n %v' libidn2 bind-tools
    libidn2 2.1.0-1
    bind-tools 9.13.5-4
    

    Então, você claramente tem a versão mais recente do bind-tools instalada. Mas você afirma que não tem as bibliotecas libidn2 que os binários exigem. Por que não? Qual é a sua versão do libidn2 que está instalada atualmente? Verifique a saída de pacman -Q libidn2.

    Como o pacote funciona para milhares de outras pessoas, minha conclusão é que seu sistema está quebrado e você precisa atualizar seu sistema adequadamente para instalar a versão mais recente do libidn2. Consulte https://wiki.archlinux.org/index.php/System_maintenance#Partial_upgrades_are_unsupported para obter detalhes sobre por que isso pode acontecer, o que fazer para corrigi-lo adequadamente e por que o link simbólico não apenas não é a solução, mas também quebra seu sistema mais longe.

    Quanto ao bug da parábola, esse é exatamente o problema oposto. Uma distribuição Linux completamente diferente que não é o Arch Linux, falhou em reconstruir seus pacotes usando o novo libidn2 e, como resultado, esses pacotes foram vinculados erroneamente ao libidn2.so.0

    Se você está realmente sofrendo com o bug do Parabola, então você não está usando o Arch Linux e precisa especificar que está realmente usando o Parabola, porque senão as pessoas não saberão como ajudá-lo.

    • 1

relate perguntas

  • archlinux efi netboot kernel "ip" não funciona?; systemd "Falha ao iniciar o Switch Root."

  • Instale o pacote ncdf4 R com shell script

  • Como alguém pode configurar o áudio no Arch Linux suportando vários programas que emitem áudio ao mesmo tempo sem criar um asoundrc?

  • Por que às vezes é necessário importar chaves manualmente?

  • Carregar dispositivo na inicialização

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve