Ruby / Homebrew / RVM이 Yosemite에서 작동하도록하는 방법은 무엇입니까?


118

Yosemite를 설치 한 후 brew 또는 ruby를 실행할 수 없습니다.

양조 업데이트에서이 오류가 발생했습니다.

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

irb에서이 오류가 발생합니다.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in mkdir': Permission denied - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14 (Errno::EACCES) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:infu_mkdir'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in block (2 levels) in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:inreverse_each'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in block in mkdir_p' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:ineach'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in mkdir_p' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:210:inwrite_gem_make_out'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:132:in build_error' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:171:inrescue in build_extension'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:156:in build_extension' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:inblock in build_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in each' from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in block in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:inuse_ui'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in build_extensions' from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:inbuild_extensions'
from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in contains_requirable_file?' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:inblock in find_inactive_by_path'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in each' from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:infind'
from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in find_inactive_by_path' from /Library/Ruby/Site/2.0.0/rubygems.rb:185:intry_activate'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:150:in block in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:158:inblock in each_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:167:in each_sublocale' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:157:ineach_localized_path'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:145:in search_file' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:124:infind'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:108:in load' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/locale.rb:32:ininitialize'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:in new' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:114:ininit_config'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb/init.rb:16:in setup' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.rb:380:instart'
from /usr/bin/irb:12:in `'

답변:


281

이 오류는 다음 단계에서 쉽게 수정할 수 있습니다.

1) 터미널 열기

2) 유형 nano /usr/local/Library/brew.rb

3) 첫 번째 줄에서 "1.8"을 "Current"로 변경하면 다음과 같이 표시됩니다.

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

http://blog.ic3man.gr/2014/06/homebrew-ruby-bad-interpreter-no-such-file-or-directory/ 를 통해


14
이렇게 변경하면 "Homebrew에는 Leopard 이상이 필요합니다. Tiger 지원에 대해서는 github.com/mistydemeo/tigerbrew "라는 오류 메시지가 표시됩니다. yosemite를 실행 중임에도
scientiffic

4
이것은 제공 Please, commit your changes or stash them before you can merge.당신이하려고 할 때 오류가 brew update불행하게도.
Naoise Golden 2014

10
Current의 경우 "C"는 대문자 여야합니다#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo

@Diablo 나는 이것이 10.10.1에서 업데이트되었다고 생각합니다. 이전 버전에서는 "C"가 대문자로 표시되지 않았습니다. 감사.
raz0r 2014

1
나는 또한 Homebrew requires Leopard or higher-나는 아래의 대답에 따라 xcode 명령 줄 도구를 설치하고 이제 작동합니다. stackoverflow.com/a/24225960/1062936
greg

39

나는 요세미티로 업데이트했고 나중에 brew깨 졌다는 것을 알게되었습니다 .

/usr/local/bin/brew: /usr/local/Library/brew.rb: 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory /usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

아직 양조를 변경하지 않았다면 여기에 제가 권장하는 것이 있습니다. 그렇지 않으면 아래를 더 읽으십시오.

  1. cd /System/Library/Frameworks/Ruby.framework/Versions/
  2. sudo ln -s Current 1.8
  3. brew update
  4. sudo unlink 1.8

이미 brew 파일을 변경하고 git 엉망이 되었습니까?

편집을 시도했지만 /usr/local/Library/brew.rb내 git repo에 대한 로컬 변경으로 인해 brew update업데이트가 중단 되지 않았습니다 . 이 페이지와 다른 사이트에서 언급 한 다른 솔루션을 시도해 보았고 결국 엉망진창으로 끝났고 내가 원하는 것은 내가 양조 한 모든 것을 취소하는 것뿐이었습니다.

나는 변화를 저질렀지만 상황을 악화시켰다. 결국 나는 내 커밋을 취소 git reset --hard HEAD~1하고 올바른 커밋이 될 때까지 해야했다 . 버전이 지정되지 않은 파일도 엉망이 되었기 때문에 (/ usr / Local에서 파일 권한을 변경했습니다) git clean -f -d버전이 지정되지 않은 모든 파일과 디렉토리를 제거하고 변경하기 전에 시작했던 곳으로 돌아가는 작업을했습니다.


3
이 답변은 (git mess 취소 포함) 가장 많이 투표 한 답변으로 git 문제가 발생했습니다.
Steve M

시스템 업그레이드 후 매우 유용합니다! 덕분에
중독 코딩

루트없는 모드로 인해 "ln : 작업이 허용되지 않음"으로 El Capitan에서 실패합니다. 당신은 여기에서 해결 방법을 찾을 수 있습니다 apple.stackexchange.com/questions/196224/...
호르헤 오티즈

37

수정 단계 :

  1. Xcode 6 용 명령 줄 도구 설치

  2. Brew 재설치 :

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  3. brew가 설치되면 rvm이 작동합니다.

    rvm install ruby

나를 위해 일 했어, 야후!


나는 루비를 설치하고 실행했지만 이것은 여전히 ​​나를 위해 작동하지 않습니다 : stackoverflow.com/questions/24113251/…
eden

rvm과 nginx를 완전히 제거하고 Xcode 6 개발자 도구를 설치 한 후 다시 설치했습니다. 이제 매력처럼 작동합니다.
wout

1
이 단지 1 단계에 대해이 명령을 실행 명확히 싶어, 너무 나를 위해 일한 : --install을 엑스 코드는 - 선택
제임스 투미

33

스크립트를 편집하면 brew update작동하지 않습니다. 추적 된 파일에 대한 로컬 편집으로 인해 git pull실패합니다.

나는 이것이 더 깨끗하다고 ​​생각한다.

cd /usr/local/Library
git pull -q origin refs/heads/master:refs/remotes/origin/master

에 대한 불만이 없습니다 brew doctor.


이렇게하면 병합 전에 이동해야하는 추적되지 않은 파일에 대한 오류가 발생합니다. 이들은 모두 Library / Formula /에있는 파일입니다.
9

당신이 아무것도 편집하지 않았다고 가정하면, 그것이 나에게 발생하면 실행 brew doctor하고 몇 가지 지침을 따라야 함을 의미 합니다. 문제는 brew doctor아마도 당신이 여기 있다면 당신에게 효과가 없다는 것입니다. 당신은 할 수 git stash있고 계속할 수 있습니다.
Otto

7

이것은 다른 사람들의 게시물의 답변과 Google에 대한 약간의 정보를 모아 놓은 것입니다.하지만 완전한 답변이 한곳에 모이도록 올려 놓을 것이라고 생각했습니다. 특히 이것은 지금 일을 할 수있게 해주지 만, 평소처럼 양조 업데이트를하고 모든 것을 다시 깨끗하게 할 수있게 해줍니다.

  1. /usr/local/Library/brew.rb(emacs/vi/nano/whatever)를 엽니 다.
  2. 읽을 첫 번째 줄을 변경하십시오 #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0.. 그 줄에있는 "1.8"을 "Current"로 변경하는 것입니다 (대문자 "C"를 유지해야합니다. 그렇지 않으면 git가 나중에 혼동 될 것입니다).
  3. cd $(brew --repository)
  4. git add Library/brew.rb
  5. git commit -m "upgrading to ruby 2.0"
  6. brew update(또는 sudo brew update양조가 sudo로 시스템 변경 만 수행하도록 설정된 경우)

신용 : 많은 부분이 여기 에서 나왔지만 git commit -am/ usr / local 폴더에서 하는 것은 권장하지 않습니다 .


이것은 나를 위해 일한 유일한 솔루션입니다. 다음 앱을 위해 Ruby와 Rails에서 멀어지고있는 것은 이와 같은 잦은 매우 추악한 엉망 때문입니다.
Deborah

3

이전에 말한 것처럼 1) 현재로 변경 2) xcode 6 설치

이제 brew와 ruby에 더 많은 문제가 있다면 이것이 도움이 될 것입니다. brew는 버전 1.8에서 ruby가 필요하므로 폴더를 만드십시오 :

sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin

심볼릭 링크를 만듭니다.

sudo ln -s /usr/bin/ruby /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

감사! ); 이것은 나를 위해 일한 유일한 솔루션이었다
alejandromp

2

여기에서이 자습서를 살펴보십시오. http://ryantvenge.com/2014/09/ruby-homebrea-yosemite/

그것은 나를 위해 일했습니다!


이 링크가 질문에 답할 수 있지만 여기 에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다 . 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다.
bummi

1

나는 이것을 다음과 같이 고쳤다 :

  1. sudo chown -R $(whoami):admin /usr/local
  2. cd $(brew --prefix) && git fetch origin && git reset --hard origin/master


0

참고 : 이는 매우 위험하므로 완전히 실패한 상태가되는 경우에만 아래를 수행하십시오.

예를 들어 나는 계속

$ sudo ln -s 현재 1.8

$ brew 업데이트

/usr/local/Library/brew.rb:18:in ': undefined method help?' for [ "update"] : Array (NoMethodError)

나는 단지 이것을 얻는다. (어떤 명령이 명령으로“업데이트”를 전환하든 상관없이) 나는 친구 /usr/local폴더를 요청함으로써 문제를 해결했다 . 그런 다음 내 /usr/local폴더를 백업했습니다 .

sudo mv / usr / local /usr/local.orig

나는 그를 /usr/local나의 것으로 옮겼다.

sudo mv ~ / Downloads / local / usr / local

참고 : 일부 데이터가 손실 될 수 있으므로 반드시 백업하십시오.


-1

패키지 관리자를 사용하여 Ruby를 설치하는 데 문제가있었습니다. 이 프로그램에 대해 공정하게, 나는 그들에 대한 경험이 거의 없음을 인정하고 대부분의 다른 응답자들이 그랬던 것처럼 더 깊이 파헤 치려고 노력하지 않았습니다. 나는 게으르고 대부분의 opsys 선택과 많은 패키지에 사용할 수있는 바이너리 설치 프로그램을 사용하는 것을 선호합니다. 불행히도 Ruby는 하나를 제공하지 않는 것 같습니다.

ruby-build는 설치하기 쉬웠고 (플러그인이 아닌 독립형), 오류없이 소스에서 Ruby를 빌드하고 원하는 곳에 배치했습니다.

빙고-쉬움 :) 이것은 패키지 관리자가 설득에 도전 한 사람들에게 좋은 대안처럼 보입니다.

야경

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