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?

hbejgel
fonte
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

dafunkeemonkee
fonte
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.

Stephen
fonte
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
anvy zhang
fonte
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
Troy
fonte
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.

sindhu_sp
fonte
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
Jon
fonte
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
Alex Palcuie
fonte
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
Eugeny Maksimov
fonte
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
8

Nenhuma dessas soluções funcionou para mim; Eu tive que correr:

brew upgrade bash

from: https://github.com/Homebrew/homebrew-core/issues/5799

Anthony Dahanne
fonte
na minha el Capitan após a atualização para 10.11.6 tenho esse erro também cada aplicativo tempo aberto terminal, já resolvido pelo bash atualização
azul
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.

Mark Pruce
fonte
5

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

Micah Bales
fonte
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.

zegomesjf
fonte
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.

Yuanqi Cao
fonte
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
Priince Abalogu
fonte
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

finx
fonte
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

ph4n70m
fonte
2

Os seguintes comandos funcionaram para mim:

brew reinstall postgresql
brew postgresql-upgrade-database
nilansh bansal
fonte
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.

Hustlion
fonte
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
sp89
fonte
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.

user9869932
fonte
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.

Erik Trautman
fonte