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

После установки 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 `'

person eden    schedule 15.06.2014    source источник


Ответы (11)


Эту ошибку можно легко исправить, выполнив следующие действия:

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/

person raz0r    schedule 16.06.2014
comment
когда я вношу это изменение, я получаю сообщение об ошибке: Homebrew требует Leopard или выше. Информацию о поддержке Tiger см. по адресу: github.com/mistydemeo/tigerbrew, хотя я использую yosemite - person scientiffic; 21.10.2014
comment
это дает ошибку Please, commit your changes or stash them before you can merge. при попытке brew update к сожалению. - person Naoise Golden; 23.10.2014
comment
C должен быть написан с большой буквы для текущего #!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0 - person Diablo; 24.11.2014
comment
@Diablo Думаю, это было обновлено в версии 10.10.1. В более ранней версии буква C не писалась с большой буквы. Спасибо. - person raz0r; 24.11.2014
comment
Я только что попробовал это на 10.10 (не .10.10.1), и он не работал с текущим, но когда я изменил его на текущий, он работал нормально :) .... во всяком случае, ваш ответ решил это для меня: D - person Diablo; 24.11.2014
comment
У меня тоже заглавная С 10.10. (не 10.10.1) - person LeEnno; 25.11.2014
comment
Этот ответ только усложняет задачу :( Я предпочитаю новую установку. - person GusDeCooL; 20.12.2014
comment
Это не чисто, похоже на взлом - person ericn; 11.01.2015
comment
Я также получил Homebrew requires Leopard or higher - я последовал ответу ниже, установил инструменты командной строки xcode, и теперь он работает: - person greg; 05.02.2015
comment
я получаю $ sudo ln -s Current 1.8 $ brew update /usr/local/Library/brew.rb:18:in ': неопределенный метод help?’ for [“update”]:Array (NoMethodError) I just get this…(no matter what command just switch out “update” with the command) - person abc123; 27.02.2015
comment
Вы не можете просто зафиксировать, так как это приведет к конфликту слияния, и вы все равно не сможете обновиться. Ответ, который работает даже для обновлений, на самом деле принадлежит Отто, ниже: stackoverflow.com/a/26553294/784635 - person irakli; 11.03.2015

Я обновился до Yosemite и позже обнаружил, что 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, вот что я рекомендую. В противном случае читайте далее ниже.

  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, который удалил все неверсионные файлы и каталоги и вернул меня туда, где я начал, прежде чем я внес какие-либо изменения.

person Jason R    schedule 27.10.2014
comment
Этот ответ сработал (включая устранение беспорядка git), где, поскольку ответ с наибольшим количеством голосов оставил меня с проблемой git. - person Steve M; 23.12.2014
comment
Очень полезно после обновления вашей системы! Спасибо - person coding addicted; 11.02.2015
comment
Это не удается в El Capitan с ln: операция не разрешена из-за режима без рута. Вы можете найти обходной путь здесь: apple.stackexchange.com/questions/196224/ - person Jorge Ortiz; 16.02.2016

Шаги, чтобы исправить это:

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

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

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

    rvm install ruby
    

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

person eden    schedule 15.06.2014
comment
я запустил и запустил ruby, но это все еще не работает для меня: stackoverflow.com/questions/24113251/ - person eden; 16.06.2014
comment
Я полностью удалил rvm и nginx и переустановил их после установки инструментов разработчика Xcode 6. Теперь это работает как шарм. - person wout; 19.10.2014
comment
Это сработало и для меня, просто хотел уточнить, как запустить эту команду для шага 1: xcode-select --install - person James Toomey; 30.12.2014

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

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

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

Жалоб от brew doctor нет.

person Otto    schedule 24.10.2014
comment
Когда я это делаю, я получаю сообщение об ошибке о неотслеживаемых файлах, которые необходимо переместить перед слиянием. Все эти файлы находятся в папке Library/Formula/. - person septerr; 08.12.2014
comment
Предполагая, что вы ничего не редактировали, когда это происходит со мной, это означает, что мне нужно запустить brew doctor и следовать некоторым инструкциям. Проблема в том, что brew doctor, вероятно, не работает для вас, если вы здесь. Вы можете просто быть в состоянии git stash и продолжать. - person Otto; 08.12.2014

Это конгломерат ответов из сообщений других людей, а также немного копания в 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, если ваш brew настроен только на системные изменения с помощью sudo)

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

person Eli    schedule 24.10.2014
comment
Это единственное решение, которое сработало для меня. Именно из-за частых суперуродливых беспорядков, подобных этому, я отхожу от Ruby и Rails для своего следующего приложения. - person Deborah; 02.02.2015

Как и раньше: 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
person Vanessa Böhner    schedule 04.08.2014
comment
Спасибо! Это было единственное решение, которое сработало для меня;) - person alejandromp; 02.01.2015

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

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

person user790999    schedule 22.01.2015
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить основные части ответа здесь и указать ссылку для справки. . Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - person bummi; 23.01.2015

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

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

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

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

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

person gogasca    schedule 10.01.2015

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

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

$ sudo ln -s Текущая версия 1.8

$ сварить обновление

/usr/local/Library/brew.rb:18:in ': неопределенная справка по методу?’ for ["update"]:Array (NoMethodError)

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

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

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

sudo mv ~/Загрузки/локальные /usr/локальные

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

person abc123    schedule 04.03.2015

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

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

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

Чарли

person Charles Parker    schedule 25.04.2015