Quando tento executar rails console
, 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 nenhum desses consertou.
Recentemente pry-coolline
, adicionei guard
e guard-livereload
gems ao meu projeto, se isso faz alguma diferença (o console do Rails carregava bem antes desses). Estou usando os macos mais recentes.
(Atualização) Estou usando pry rails como meu console de trilhos, se isso faz alguma diferença.
Qualquer ajuda? Obrigado.
ruby-on-rails
libreadline
Jonathan Tuzman
fonte
fonte
brew reinstall readline
Respostas:
o erro parece ser lançado durante a pesquisa
/usr/local/opt/readline/lib/libreadline.7.dylib
.Você já tentou criar um link simbólico para isso?
Então, algo como:
Experimentei isso no macOS Mojave, ruby 2.5.3p105 e Rails 5.2.2 e funcionou.
fonte
ln
não são coisas sobre as quais eu realmente conheço: /cd /usr/local/opt/readline/lib
brew link readline --force
criar os links em/usr/local/opt/readline/lib
.brew link readline --force
de Candland, que funcionou para mimReinstalar minha versão Ruby parece ter corrigido:
fonte
rbenv install 2.5.1
funcionou para mim no meu contexto. Isso foi de lado depois de eu ter corridosudo xcode-select -s /Library/Developer/CommandLineTools
para consertar um problema que estava enfrentando em outro lugar. fwiwbundle install
reinstalar as gemas com extensões nativas.você pode tentar
você está no caminho certo, mas parece que rails está procurando por libreadline.7.dylib e libreadline.7.dylib não está na pasta.
fonte
Sim, a melhor resposta é reinstalar.
Você pode obter a versão facilmente digitando:
Com
rbenv
, o comando é isto é:com
rvm
:fonte
rbenv install <ruby-version>
falhou com "rake" de conflitos de rake com o executável instalado de conflito de redis-rack . Tive que correrrbenv uninstall <ruby-version> && rbenv install <ruby-version>
Uma solução muito simples que não envolve a reconstrução de seu conjunto de gemas RVM OU bibliotecas de links simbólicos.
Adicione ao seu Gemfile:
Se você estiver fazendo grupos de bundler
Então corra
Deixe-me saber se isso não funcionar.
fonte
Na maioria das vezes em aplicativos Ruby, isso é causado por gems que têm extensões (as gems dizendo "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ê pode fazer um link simbólico da versão 8 da gema para a versão ausente. Isso funcionará em muitos casos, mas se a compatibilidade com versões anteriores for interrompida, não funcionará.
Ou, se a gem realmente suporta a versão 8, você pode reinstalar aquela gem específica, ou "intacta" executando
gem pristine --all
.EDITAR : No escopo do seu "o que eu tentei", reinstalar o PostgreSQL, também está um dos binários, construído usando uma versão específica, que também pode exigir uma reconstrução, para funcionar com uma biblioteca do sistema, como readline.
fonte
Tenho este problema:
fazendo ...
funcionou para mim para o macOS Catalina
fonte
Verifiquei algumas respostas aqui, mas não acho que elas funcionem com a instalação do Mac Vanilla Mojave. Estou usando 10.14.4 enquanto fazia estes:
obter homebrew em https://brew.sh
$ brew install coreutils
: isso instala o pacote gnu coreutils para mac, queremos fazergreadlink
isso porque o readlink do macOSX não é o mesmo que o readlink do GNU. É extremamente confuso, mas essa é a vida em macland.$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
Eu descobri que o readlink do macs está um pouco faltando, então eu substituí o readlink existente criando um alias para greadlink. (você pode tornar isso utilizável por todos os usuários, o$ alias readlink=greadlink >> /etc/bashrc
que permitirá que cada usuário seja capaz de usá-lo.$ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
.8.
Vinculei o arquivo já vinculado em vez de '.8.0.' porque se fosse para ser atualizado para.8.1.
então meu link de leitura não quebraria ou perderia recursos na biblioteca. Tenho certeza que vamos formatar nossos macs antes do lançamento do 9+.fonte
Eu não recomendaria criar links simbólicos manuais para bibliotecas nativas. Aas do OS X 10.4, o caminho da biblioteca de inclusão padrão
/usr/include
não é mais usado e é bloqueado pelo SIP (tornando difícil mover as coisas).A Apple envia um “instalador legado” para que você possa instalar os cabeçalhos no “local antigo”, o que também resolverá o seu caminho para localizar corretamente os cabeçalhos instalados via
brew
.Veja aqui um artigo detalhado sobre o que está acontecendo .
fonte
libreadline.8.dylib
criar um link simbólico manual para olibreadline.7.dylib
qual estava faltando. ou seja, comando de execução:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Meu problema era o mesmo durante a execução
lftp
.Apenas correr
brew upgrade
já resolveu meu problema, pois foi atualizado (entre outros):fonte
Contexto: Isso aconteceu quando tentei instalar o tig, mas acho que é um problema comum que você pode ter e que precisa vincular manualmente o software instalado ao caminho correto que outro software deseja.
Se você não conseguir encontrar readline instalado em seu Mac, você deve executar
Depois de instalar o deadline, o brew solicitará que você o vincule. Mas na verdade você não pode ligar executando
Mesmo você não pode ligar executando
O Mac OS o avisará que isso é extremamente perigoso e o impedirá de fazer.
A última versão do readline é a versão 8, então você verá a mensagem de erro como
A cerveja instalada termina em
Portanto, você deve vinculá-lo manualmente ao local desejado pelo software usando o comando ls
Aproveitar!
fonte