ti-enxame.com

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

Quando tento executar Rails console Eu recebo este erro:

/Users/TuzsNewMacBook/.rvm/gems/Ruby-2.3.7/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require':
 dlopen(/Users/TuzsNewMacBook/.rvm/rubies/Ruby-2.3.7/lib/Ruby/2.3.0/x86_64-darwin18/readline.bundle, 9): 
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

Uma pesquisa rápida me levou a este post e tentei algumas coisas:

brew reinstall postgresql (este é realmente o banco de dados para este projeto)

e

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

(minha versão do readline é 8)

e brew link readline --force

Mas nada disso foi corrigido.

Eu adicionei recentemente pry-coolline, guard e guard-livereload gems para o meu projeto, se isso faz alguma diferença (o console do Rails foi carregado muito bem antes deles). Estou correndo nos macos mais recentes.

(Atualização) Estou usando pry Rails como meu console Rails, se isso faz alguma diferença.

Qualquer ajuda? Obrigado.

106
Jonathan Tuzman

o erro parece ser gerado ao procurar por /usr/local/opt/readline/lib/libreadline.7.dylib.

Você já tentou vincular isso?

Então, algo como:

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

Tentei isso no macOS Mojave, Ruby 2.5.3p105 e Rails 5.2.2) e funcionou.

346
Hawz

Reinstalar minha Ruby parece ter corrigido:

rvm reinstall 2.3.7
39
Jonathan Tuzman

você pode tentar

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

você está no caminho certo, mas parece que Rails está procurando por libreadline.7.dylib e libreadline.7.dylib não está na pasta).

20
ericshao

Sim, a melhor resposta é reinstalar.

Você pode obter a versão facilmente digitando:

Ruby -v

Com rbenv, o comando é:

rbenv install 2.3.7

com rvm:

rvm reinstall 2.3.7
16
FreePender

Geralmente, em aplicativos Ruby, isso é causado por gemas que possuem extensões (as gemas que dizem "Construindo extensões nativas .."), que são construídas usando uma versão específica de, neste caso, readline.

Basicamente, existem duas soluções:

Você também pode vincular a versão 8 da gema à versão que está faltando. Isso funcionará em muitos casos, mas se a compatibilidade com versões anteriores estiver quebrada, não funcionará.

Ou, se a gema realmente suportar a versão 8, você pode reinstalar essa gema específica ou "limpá-la" executando gem pristine --all.

EDIT : No escopo do seu "o que eu tentei", reinstalar o PostgreSQL, também é um dos binários, criados usando uma versão específica, que também pode exigir uma reconstrução, para trabalhar com uma biblioteca do sistema, como readline.

4
Frederik Spang

Por isso, verifiquei algumas respostas aqui, mas acho que elas não podem funcionar com uma instalação do Vanilla Mojave para mac. Estou usando 10.14.4 enquanto eu fazia o seguinte:

  • obter homebrew de https://brew.sh

  • $ brew install coreutils: instala o pacote gnu coreutils para mac, queremos o greadlink disso porque o link de leitura do macOSX não é o mesmo que o link de leitura do gnu. É extremamente confuso, mas essa é a vida em macland.

  • $ echo 'alias readlink=greadlink' >> ~/.bash_aliases Achei que o macs readlink estava um pouco ausente, então substituí o readlink existente usando o greadlink como alias. (você pode tornar isso utilizável por todos os usuários por $ alias readlink=greadlink >> /etc/bashrc que permitirá que todos os usuários possam usá-lo.

  • $ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib Vinculei o já vinculado .8. _ em vez de '.8.0.' arquivo porque, se fosse atualizado para .8.1. meu readlink não quebrará ou perderá recursos da biblioteca. Tenho certeza de que iremos formatar nossos macs antes do lançamento do 9+.

2
Salyangoz

Tenho este problema:

dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.4.dylib

fazendo ...

cd /usr/local/opt/mpfr/lib/
ln -s libmpfr.dylib libmpfr.4.dylib

fez o truque para mim no macOS Catalina

2
Aris

Uma solução muito simples que não envolve a reconstrução do seu gemset RVM OR bibliotecas de vinculação sym.

Adicione ao seu Gemfile:

gem 'rb-readline'

Se você estiver fazendo grupos de empacotadores

group :development do
  gem 'rb-readline'
end

Então corra

> bundle

Deixe-me saber se isso não funcionar.

2
Bret Weinraub

Eu recomendaria não ligar manualmente as bibliotecas nativas. No OS X 10.4, o padrão inclui o caminho da biblioteca /usr/include não é mais usado e está bloqueado por SIP (dificultando a movimentação de itens).

A Apple envia um "instalador herdado" para você poder instalar os cabeçalhos no "local antigo", o que também resolverá o seu caminho para encontrar corretamente os cabeçalhos instalados via brew.

cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop && open ~/Desktop/macOS_SDK_headers_for_macOS_10.14.pkg`

Veja aqui uma descrição detalhada do que está acontecendo .

0
codenamev

Meu problema era o mesmo ao executar lftp.

Apenas executando brew upgrade resolveu meu problema, pois foi atualizado (entre outros):

readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2
0
Benjamín Valero