Biblioteca não carregada: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

Acabei de instalar o posgresql com homebrew e quando digito o comando

psql

Estou tendo o erro a seguir:

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
[1]    69711 trace trap  psql

Alguém tem alguma idéia sobre o que está errado?


1
Parece que está vinculado ao readline, mas não está presente. Você desinstalou o readline depois? Como exatamente você instalou o PostgreSQL com homebrew? (Passos, comandos).
— Craig Ringer

1
Provavelmente resolvido por stackoverflow.com/questions/42356309/... que tem uma resposta mais sucinta do que a maioria dos abaixo (você provavelmente não precisa reinstalar postgres!)
— thclark

Respostas:


373

Eu estava recebendo exatamente o mesmo erro, mas as respostas acima não funcionaram para mim. Eu tive que reinstalar o postgresql.

brew reinstall postgresql


5
Este fez isso por mim no El Capitan #
— Sebastian Sastre

6
Meu problema parece ter sido relacionado à instalação python usando bebida
— guyarad

6
Cuidado ao fazer isso se você ainda não estiver na versão mais recente do Postgres. Você precisará reinstalar os velhos Postgres ao lado do novo e, em seguida, fazer umapg_upgrade
— dazonic

7
Isso é muito pesado, se você não quiser perder seus bancos de dados locais. Eu tive sorte com 'brew switch readline 6.3.8'
— Christopher Johnson

4
Se você acha que reinstalar o psql é um passo radical para o que parece ser um pequeno bug, você não está sozinho. Esta resposta: stackoverflow.com/a/41476592/839876 parece abordar o problema real que a maioria dessas respostas soluciona.
— Frandroid 19/09/2017

127

O principal problema é que o postgresql estava tentando encontrar a versão libreadline.6.2.dylibbut your readlineis 7.0, portanto, apenas a lib do 7 está vinculada.

Eu não acho que atualizar o postgresql seja uma boa idéia, não é fácil e pode causar muitos problemas, especialmente quando você já possui dados do banco de dados.

O que eu faço é mudar a versão do readline. Quando você verifica brew info readline, você encontrará versões diferentes, a minha é 6.3.8, então eu mudo para essa versão executando:

$ brew switch readline 6.3.8

Ele mudará para 6.3.8 e criará o link:

Cleaning /usr/local/Cellar/readline/6.3.8
Cleaning /usr/local/Cellar/readline/7.0.1
Opt link created for /usr/local/Cellar/readline/6.3.8

Nesse caso, toda a lib vinculada se torna a versão 6 e a linha de comando funciona:

$ ls /usr/local/opt/readline/lib/
libhistory.6.2.dylib    libhistory.dylib    libreadline.a
libhistory.6.3.dylib    libreadline.6.2.dylib   libreadline.dylib
libhistory.6.dylib  libreadline.6.3.dylib
libhistory.a        libreadline.6.dylib

No entanto, se você tiver aplicativos diferentes usando a versão diferente do readline, acho que você deve considerar a atualização.


Atualização: 02/02/2019

E se a versão antiga não estiver instalada?

Homebrewnão fornece uma maneira de instalar a fórmula da versão antiga. E desde a v2.0.0, ele será executado brew cleanupcomo comportamento padrão a cada 30 dias. Portanto, você pode atualizar acidentalmentebrew e excluir a versão antiga.

Aqui estão as etapas para instalar a versão antiga:

  1. Vá para o homebrew-corediretório:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Verifique o hash para ver a fórmula antiga:
    $ git log master -- Formula/readline.rb
  1. Encontre a versão correspondente do valor do hash
    commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
    Author: BrewTestBot <brew-test-bot@googlegroups.com>
    Date:   Wed Aug 15 21:51:16 2018 +0000

        readline: update 7.0.5 bottle.
  1. Saída para a fórmula antiga:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Reinstale a fórmula:
    $ brew reinstall readline
  1. Redefinir o repo

Após essas etapas, você pode reinstalar a versão antiga da fórmula.


1
E eu - se você não tem outras dependências no readline 7, essa é definitivamente a abordagem menos perturbadora.
— atraiu

isso funcionou para mim também, me salvou de atualizar postagens
— Rich

Trabalhou para mim também ... solução mais limpa muito mais do que atualizar toda a databse
— sromit

Quando alguém iria querer voltar para qualquer outra versão readlineinstalada? Que outras desvantagens existem para fazer isso?
— Kenny Evitt

Eu tenho apenas uma linha de leitura instalada e meu checkout local da linha de leitura contém apenas 8.0, e o log não possui nenhuma versão mais antiga confirmada, mesmo depois de buscar tudo. Parece que é impossível instalar uma versão mais antiga do readline para mim, e a atualização do postgres pode ser a única opção #
— Andy Ray

78

Se a situação é que você tem uma versão mais alta readline dizer 7.0. Você consegue fazer isso

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib

5
Eu tive que criar um link chamado "libreadline.6.dylib", mas essa foi a única sugestão que funcionou para mim.
— precisa saber é o seguinte

1
Isso em conjunto com brew uninstall --force gawke depois brew install gawkfoi o que me colocou em funcionamento. Você também pode ser capaz de simplesmentebrew reinstall --force gawk
— Csteele5

1
Um bom. Estou executando o postgres 10.6, que espera o libreadline.7.dylib, mas eu havia acabado de instalar o pg_topupgrade do libreadline para 8.0 e quebrou o psql. Eu usei o seu truque, exceto tornou um link simbólico ln -s libreadline.8.0.dylib libreadline.7.dylib
— Davos

Excelente, obrigado. Isso funcionou no MacOS Mojave sem ter que desinstalar e reinstalar o PostgreSQL (o que seria uma verdadeira dor).
— crmpicco

46

Se você não possui o readline instalado, primeiro instale-o:

brew install readline

Para mim, estava recebendo esse erro, apesar de ter o readline instalado. Reinstalar o readline fez o truque:

brew reinstall readline

6
reinstalar readline não fazê-lo para mim, mas desinstalação / instalação bashfez:brew install --build-from-source bash
— whatbird

Descobri que tinha que remover toda a versão do readline primeiro (desinstalação de cerveja --force readline). Depois que eu reinstalado-lo, eu tive que forçar ligação com "ligação bebida --force readline"
— Wilhelm

Reinstalar o bash também foi a correção para mim, mas, no meu caso, a linha "referenciada de" mencionou o bash especificamente.
— mbafford

Depois de instalar o MacOS Sierra, eu encontrei esse problema. Eu fiz as duas coisas brew reinstall readline(para obter a bebida específica da Sierra) e enquanto estava na mesma brew reinstall postgresql94. As pessoas disseram para reinstalar o bash, mas eu nunca tive isso para começar. Portanto, essa resposta e a resposta escolhida funcionaram para mim.
— Risa_risa

brew reinstalação readline funcionou para mim depois de mudar para outras versões (que já trabalhou no passado) não funcionava mais após a atualização para psql9.6
— bkunzi01

31

Isso funcionou para mim

brew switch readline

Isso exibirá as versões que você instalou. Escolha um deles. Eu escolhi 7.0.5

Então eu corri

brew switch readline 7.0.5

A versão readline foi atualizada e psqlfuncionou sem problemas.


2
Também funcionou para mim. O psql estava tentando carregar libreadline.7.dylib, mas eu estava usando o readline 8.0.0. A mudança de 8.0.0 para 7.0.5 resolveu o problema. Espero que a criação de um link simbólico (como outros fizeram) também funcione, se eu quiser permanecer no 8.0.0. Mas ter um link de versão mais recente para uma versão mais antiga é enganoso e pode causar outros problemas.
— Dennis

Como você encontrou essa solução? Estou muito impressionado!
— Kuzdu

1
Tentei o mesmo, mas obtive o seguinte erro: O readline não possui a versão "7.0.5" na adega. Tentei preparar a instalação do readline 7.0.5, mas mostra o seguinte erro: Nenhuma fórmula disponível com o nome "7.0.5". @ Dennis
— Mahesh Mesta

23

isso funcionou para mim

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

Este foi o meu problema também. Eu não usei o brew e estava faltando o link sym após a atualização mais recente. Obrigado!
— 30518 Matt

Agradável! Meu erro exato reclamou em 6.2, meu comando é um pouco diferente. O erro foi dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, então eu usei ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
— Tyler Collier

20

A solução é forçar o vínculo da readline novamente.

brew remove readline
brew install readline
brew link readline --force

relink não funcionou para mim, mas a reinstalação do postgresql funcionou.
— Konstantin Tikhonov

14

Parece-me que o problema é sobre a atualização do pacote readline. O postgres tentou usar o /usr/local/opt/readline/lib/libreadline.7.dylib no meu caso. Então, acabei de criar um link simbólico para a versão existente da biblioteca /usr/local/opt/readline/lib/libreadline.8.dylib.

trabalhou para mim:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib

Isso funcionou para mim. Eu estou no psql versão 9.6.3 e readline 8.
— lacostenycoder

É certo que essa é uma maneira hacky de corrigir o problema, mas eu estava enfrentando esse problema depois que algumas atualizações não relacionadas aumentaram minha versão do readline de 7 para 8, e uma reinstalação completa do Postgres não era algo que eu queria resolver agora. Esta é uma solução pequena e o risco de algo impactante mudar na linha de leitura parece pequeno, então vou continuar com isso por enquanto e seguir em frente. Irá relatar se houver algum problema na linha.
— Scott Roth

Obrigado pelo comentário, eu concordo com esta questão. Eu tive muitos problemas depois de atualizar para o macos catalina, então não quis me aprofundar nessa questão e usar o hack.
— Eugeny Maksimov


6

A resposta acima não funcionou para mim, então eu queria postar o que acabou por funcionar. Com base em um tópico que encontrei aqui , tive que desinstalar o readline e instalá-lo novamente, mas da fonte.

brew uninstall readline
brew install --build-from-source readline

Depois disso, o erro do psql desapareceu.


5

Eu tive esse problema, e a chave para mim era reinstalltanto readlinee postgres. Depois que o postgres foi reinstalado, o problema foi resolvido.


5

Outra maneira de corrigir o psql é atualizar o postgresql em execução, brew upgrade postgresqljá que a versão mais recente usará a versão readline 7.


4

Eu tive esse problema quando atualizei o readline para a versão 7 por acidente. Eu desinstalei o readline e o brew lembrar que 6.3.8 ainda está instalado. Parece que a versão 7 não está funcionando com o PSQL no momento.


4

Eu tentei todos esses comandos do terminal e nada funcionou, então decidi corrigi-lo manualmente ..

Abra o localizador e pressione command + shift + g

Go to this folder /usr/local/opt/readline/lib/

você deve ver várias versões desses arquivos

libreadline.6.dylib
libreadline.7.0.dylib

renomeie qualquer um deles para a biblioteca que não estiver carregada

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib

Funciona bem para mim
— mike_dz

3

Eu tentei todas as respostas de visualizações, e nada funcionou. A única coisa que realmente funcionou para mim foi:

brew link postgresql


2

Isso me ajudou: desinstalar todo o readline e postgresql

exportar CPPFLAGS = -I / usr / local / opt / readline / incluir exportar LDFLAGS = -L / usr / local / opt / readline / lib

e instale o posqtgresql


2

Os seguintes comandos funcionaram para mim:

brew reinstall postgresql
brew postgresql-upgrade-database


0

Você pode tentar brew doctorver o que diz.

Possivelmente tudo que você precisa é brew link --overwrite bash.

Para mim, eu acabei de atualizar o brew, pois o OS X EL Capitan tinha um upgrade de segurança que afecta minha /usrpasta. Durante a atualização de preparação, o link do bash está quebrado, e é isso que brew doctorme diz.

Então eu apenas corro brew link --overwrite bashe está tudo bem.


0

Convém verificar se há alguma outra coisa ligada a ele postgresql. Eu já havia vinculado ao pacote postgres93 , que em maio de 17 não é suportado e foi removido. Remover esse link e depois vincular novamente funcionou para mim:

brew unlink postgresql93
brew link postgresql

0

No meu caso, a resposta correta não resolveu o problema.

O problema começou após a execução brew doctore a adição export PATH="/usr/local/bin:$PATH"ao meu arquivo ~ / .zshrc.

Removendo

export PATH="/usr/local/bin:$PATH" 

de ~/.zshrcresolvido.


0

Por alguma razão desconhecida, quando esse erro apareceu na próxima versão do Readline, meu RVM parecia incapaz de localizar o caminho certo, independentemente de como eu o ligasse, lançando:

Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

Acabei adicionando a gema rb-readlineao meu Gemfile e fazendo outra bundle installe ela começou a funcionar.

Eu ... só não sei.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.