readline 오류로 인해 "rails 콘솔"을 실행할 수 없습니다.


88

rails console이 오류로 인해 실행할 수 없습니다 .

localhost:TwitterForZombies wiz$ rails c
/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `require': dlopen(/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError)
  Referenced from: /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
  Reason: image not found - /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

homebrew를 통해 readline을 설치했습니다. rvm 대신 rbenv를 계속 사용하고 싶습니다.

제 질문을 읽어 주셔서 감사합니다.


답변:


279

최근에 homebrew와 libreadline.7.x.dylib / libreadline.6.x.dylib에서 같은 문제가 발생했습니다.

다음을 실행하여 해결했습니다.

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

출처 : https://github.com/rails/rails/issues/26658


1
무슨 해킹 :)하지만 지금은 잘 작동합니다 : D 감사합니다!
haslo

18
심볼릭 링크를 사용하여 실제로 다른 (주요!) 버전 번호를 사용하도록 시스템을 속이는 것은 일반적으로 나쁜 생각입니다. 더 많은 지식을 가진 사람이 위의 수정이 안전한 이유를 설명 할 수 있다면 좋을 것입니다.
Pistos 2016

당신은 전설입니다. 감사합니다. @wiz가 당신을 맞았어야했습니다!
Nick Schwaderer

1
libreadline 6.3과 7.0 사이의 변경 사항에 대한 간단한 검토는 소프트웨어가 문서화되지 않았거나 버그가있는 동작에 의존하는 경우에 예상되는 주요 변경 사항으로 보이는 것을 보여주지 않습니다. 그런 점에서이 솔루션을 시도하는 것이 편합니다.
Lyndsy Simon

58

Homebrew는 훌륭하지만 가끔 다른 움직이는 부분과 잘 어울리지 않습니다.

A는 brew update && brew upgrade에서 가져온 libreadline.7.x.dylib자동으로 제거하는 동안 libreadline.6.x.dylib루비는 여전히 의존 하였다.

문제를 해결하는 더 영리한 방법이있을 수 있지만 무차별 대입이 저에게 효과적이었습니다.

$ rbenv uninstall 2.3.1
$ rbenv install 2.3.1
$ cd /path/to/my/app
$ bundle

위의 내용은 rbenv ruby-build와 물론 존재한다고 가정합니다 bundler. 2.3.1사용중인 루비 버전으로 교체하십시오 .

다른 홈브류 관리 라이브러리에서도 유사한 문제가 발생할 수 있습니다 (예 : 이에 대한 내 답변 참조 ).


나에게도 똑같은 일이 일어 났습니까? Homebrew가 일부 libs가 Homebrew가 제공하는 일부 이전 버전에 연결되어 있음을 알 수있는 방법이 없는지 궁금합니다.
slhck

2
이것은 gem install bundlerrbenv 설치 후 El Capitan에서 저에게 효과적이었습니다.
handwovensole

brew update && brew upgrade다시 실행할 때 오류가 발생 합니까?
Frank Fang

1
@FrankFang,이 특정 오류뿐만 아니라 그렇지 않을 수도 있습니다. a가 brew upgrade이전 라이브러리를 최신 버전 으로 교체 할 때마다 시스템의 다른 프로그램이 불평 할 가능성이 있습니다.
Giuseppe

26

저는 OSX, ruby2.3.0, rails5에 있습니다. 추가 gem 'rb-readline'내에 Gemfile고정이 문제를 해결합니다.


1
gem rb-readline이 저에게 효과적이었습니다. 나는 그것을 : development, : test 그룹에 추가했습니다-멋진 빠른 수정!
tnum

21

Ruby 2.1.0과 rails 4.0에서 같은 오류가 발생했습니다. 많은 것을 검색하고 시도한 후에 마침내 잘 작동합니다.) 다음은 내가 한 일입니다.

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

다른 방법 :

brew update
brew uninstall readline
brew install readline

autolibs 명령은 RVM이 모든 종속성을 강제로 설치하므로 걱정할 필요가 없습니다.

도움이 되었기를 바랍니다.


2
필요하지 않을 수도 있습니다 cleanup rvm. reinstall루비 버전 뿐입니다 .
스왑

20

Sachin이 암시했듯이 readline을 설치 한 다음 Ruby를 다시 설치하는 것이 이상적인 접근 방식이지만 rbenv의 세부 사항은 약간 다릅니다. 파일 경로가 주어지면 Mac을 사용하는 것 같으므로 다음이 도움이 될 것입니다.

brew install readline ruby-build
env CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install 1.9.3-p286

이것은 루비 빌드 위키 와 빠른 Google 검색 에서 가져 왔습니다 .


이것을 한 후에 다시 해시하는 것을 잊지 마세요
iGbanam

2
readline을 사용하여 기존 Ruby 버전을 다시 설치 한 후 다음과 같은 명령을 실행하면 bundle install"확장 프로그램이 빌드되지 않았기 때문에 bcrypt-3.1.11 무시"와 같은 많은 경고가 표시되었습니다. 에 대한 답변에서 제안 이 질문에 , gem pristine --all한 번에 그 모든 오류를 수정했습니다.
Rory O'Kane

8

Mac, El Captain버전을 사용하면 다음 을 수행하는 것만으로도 고칠 수 있습니다.

rvm reinstall your_ruby_version

(처럼 rvm reinstall ruby-2.3.1)

이것이 도움이되기를 바랍니다. 행운을 빕니다!


이것이 내가해야 할 전부였습니다.
Pistos 2016

그러면 현재 버전이 다시 설치됩니다.rvm reinstall $(rvm current)
CTS_AE

이것은 가장 간단한 해결책이지만 다시 설치하는 데 시간이 걸립니다. 그래도 최선의 접근 imho.
f055

1

github 사용자 @enderahmetyurt에서 가져 왔습니다 (이것은 나를 위해 일한 유일한 솔루션입니다).

해결 방법 : 추가 gem 'rb-readline'에 Gemfile에 개발 그룹설치 번들 .

어리석은 "readline"오류에 대한 가장 쉬운 솔루션입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.