Как заставить 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 ″ на« Текущий », чтобы он выглядел так:

#!/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/

raz0r
источник
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
10
Буква «C» должна быть написана с заглавной буквы для Current#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Diablo
@Diablo Я считаю, что это было обновлено в 10.10.1. В более ранней версии буква "C" не была заглавной. Спасибо.
raz0r
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 не позволяли получить brew updateобновления. Я пробовал некоторые другие решения, упомянутые на этой странице и с других сайтов, и в итоге я получил git беспорядок, и все, что я хотел сделать, это отменить все, что я сделал для варки.

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

Джейсон Р
источник
3
Этот ответ сработал (включая отмену git mess), где, поскольку ответ, получивший наибольшее количество голосов, оставил мне проблему с git.
Steve M
Очень полезно после обновления вашей системы! Спасибо
пристрастие к программированию
Это не удается в El Capitan с «ln: операция не разрешена» из-за режима без root. Вы можете найти обходной путь здесь: apple.stackexchange.com/questions/196224/…
Хорхе Ортис,
37

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

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

  2. Переустановите варево:

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

    rvm install ruby

У меня сработало, yahoo!

Эдем
источник
У меня есть Ruby, но он все еще не работает для меня: stackoverflow.com/questions/24113251/…
eden
Я полностью удалил rvm и nginx и переустановил их после установки инструментов разработчика Xcode 6. Теперь это работает как шарм.
wout
1
Это сработало и для меня, просто хотел уточнить, как запустить эту команду для шага 1: xcode-select --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 /.
septerr
Предполагая, что вы ничего не редактировали, когда это происходит со мной, это означает, что мне нужно запустить brew doctorи выполнить некоторые инструкции. Проблема в том, что, brew doctorвероятно, у вас не получится, если вы здесь. Вы можете просто git stashпродолжать и продолжать.
Отто
7

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

  1. Откройте /usr/local/Library/brew.rb (emacs / vi / nano / что угодно)
  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.

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

Как было сказано ранее: 1) перейти на текущий 2) установить xcode 6

Если у вас возникли дальнейшие проблемы с brew и ruby, это должно помочь: Каким-то образом brew нуждается в ruby ​​версии 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
Ванесса Бёнер
источник
Спасибо! Это было единственное решение, которое сработало для меня;)
alejandromp
2

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

У меня это сработало!

user790999
источник
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится.
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 update

/usr/local/Library/brew.rb:18:in ': помощь по неопределенному методу?' для [«обновление»]: массив (NoMethodError)

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

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

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

sudo mv ~ / Загрузки / местный / usr / местный

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

абв123
источник
-1

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

Мне показалось, что Ruby-build легко установить (автономно, а не плагин), он без ошибок собирал Ruby из исходных кодов и размещал его там, где я хотел.

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

Чарли

Чарльз Паркер
источник