Как заставить Ruby / Homebrew / RVM работать на Yosemite?

123

После установки Yosemite мне не удалось запустить brew или ruby.

Я получил эту ошибку при обновлении 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

получение этой ошибки на 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 `'
Теги:
homebrew
osx-yosemite

11 ответов

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.
  • 4
    Это дает Please, commit your changes or stash them before you can merge. ошибка при попытке brew update к сожалению.
Показать ещё 9 комментариев
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

Если вы еще не внесли никаких изменений в brew, вот что я рекомендую. В противном случае прочтите ниже.

  • cd /System/Library/Frameworks/Ruby.framework/Versions/
  • sudo ln -s Current 1.8
  • brew update
  • sudo unlink 1.8

Уже внесены изменения в файлы brew и застряли в беспорядке git

Я попытался отредактировать /usr/local/Library/brew.rb, но локальное изменение в моем репозитории git не позволяло brew update отбрасывать обновления. Я попробовал некоторые другие решения, упомянутые на этой странице и с других сайтов, и я закончил с беспорядком git, и все, что я хотел сделать, это отменить все, что я сделал, с brew.

Я совершил свои изменения, но это ухудшило ситуацию. В конце концов, мне пришлось отменить мои коммиты и git reset --hard HEAD~1, пока я не был на правильном деле. У меня был беспорядок неверсированных файлов (я изменил права на файлы в /usr/Local ), поэтому я сделал git clean -f -d, который удалил все неперевернутые файлы и каталоги и вернул меня туда, где я начал, прежде чем внес какие-либо изменения.

  • 3
    Этот ответ сработал (включая отмену беспорядка в git), когда в результате голосования с наибольшим количеством голосов у меня возникла проблема с git.
  • 0
    Очень полезно после обновления вашей системы! Спасибо
Показать ещё 1 комментарий
35

Шаги по исправлению:

  • Установите инструменты командной строки для Xcode 6

  • Переустановите brew:

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  • После установки brew rvm будет работать:

    rvm install ruby
    

Работал для меня, yahoo!

  • 0
    я получил рубин и работает, но это все еще не работает для меня: stackoverflow.com/questions/24113251/…
  • 0
    Я полностью удалил rvm и nginx и переустановил их после установки инструментов разработчика Xcode 6. Теперь это работает как шарм.
Показать ещё 2 комментария
34

Редактирование script означает brew update не будет работать; есть локальные изменения для отслеживаемых файлов, которые приводят к сбою git pull.

Я сделал это, и я подозреваю, что он чище:

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

Нет претензий от brew doctor.

  • 0
    Когда я делаю это, я получаю ошибку о неотслеживаемых файлах, которые должны быть перемещены перед объединением. Это все файлы в библиотеке / формула /.
  • 0
    Предполагая, что вы ничего не редактировали, когда это происходит со мной, это означает, что мне нужно запустить brew doctor и следовать некоторым инструкциям. Проблема в том, что brew doctor вероятно, не работает для вас, если вы здесь. Вы можете просто быть в состоянии git stash и продолжать.
7

Это конгломерат из ответов на другие должности, а также немного копания в Google, но я решил, что я бы сказал, что полный ответ находится в одном месте. В частности, это позволяет работать теперь, но также позволяет делать brew обновления как обычно и снова получает все чистое.

  • Открыть /usr/local/Library/ brew.rb(emacs/vi/nano/whatever)
  • Измените первую строку следующим образом: #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0. Вы просто меняете "1.8", который был в этой строке, на "Текущий" (убедитесь, что вы сохранили капитал "C", иначе git будет запутан позже).
  • cd $(brew --repository)
  • git add Library/brew.rb
  • git commit -m "upgrading to ruby 2.0"
  • brew update (или sudo brew update, если ваш brew настроен только для системных изменений с помощью sudo)

Кредит: многое из этого произошло от здесь, хотя я действительно рекомендую не делать git commit -am в вашей/usr/локальной папке.

  • 0
    Это единственное решение, которое сработало для меня. Именно из-за таких частых супер уродливых беспорядков я ухожу от Ruby и Rails для своего следующего приложения.
3

Как и предыдущий: 1) Переход на текущий 2) установить xcode 6

Если у вас есть дополнительные проблемы с brew и ruby, это должно помочь: Каким-то образом brew нуждается в рубине на версии 1.8, поэтому создайте папку:

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
  • 0
    Спасибо! Это было единственное решение, которое работало для меня;)
2

Взгляните на этот учебник здесь: http://ryantvenge.com/2014/09/ruby-homebrea-yosemite/

Это сработало для меня!

  • 0
    Хотя эта ссылка может ответить на этот вопрос, то лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы.
1

Я зафиксировал это следующим образом:

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

Примечание. Выполняйте только нижеследующее, если вы закончите полностью состояние с ошибкой, так как это очень ОПАСНО

В качестве примера я продолжал получать

$sudo ln -s Ток 1.8

$brew update

/usr/local/Library/brew.rb: 18: in ': undefined help метода? для [ "update" ]: Array (NoMethodError)

Я просто получаю это... (независимо от того, какая команда просто отключает "обновление" с помощью команды) Я решил проблему, попросив папку друзей /usr/local. Затем я сделал резервную копию моей папки /usr/local.

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

Затем я переместил его /usr/local на мой

sudo mv ~/Downloads/local/usr/local

Примечание. Вероятно, вы потеряете некоторые данные, поэтому сделайте резервную копию.

0

brew Ошибка обновления может быть исправлена ​​следующим образом:

sudo chown -R $USER:admin /usr/local
cd /usr/local
git reset --hard origin/master
brew update

https://github.com/Homebrew/homebrew/issues/19140

-2

У меня возникли проблемы с установкой Ruby с использованием менеджеров пакетов. Справедливости ради этих программ я признаю, что у меня мало опыта с ними и не прилагал усилий, чтобы копать глубже, как это делали большинство других респондентов. Я ленив и предпочитаю использовать двоичный установщик, доступный для большинства опций и многих пакетов. К сожалению, Ruby, похоже, не снабжает его.

Я обнаружил, что ruby-build проста в установке (автономная - не плагин), и она построила Ruby из источников без ошибок и поместила ее туда, где я этого хотел.

Bingo - easy:) Это похоже на хорошую альтернативу для тех из нас, кто управляет пакетами, бросил вызов убеждению.

Charlie

Ещё вопросы

Сообщество Overcoder
Наверх
Меню