Як змусити Ruby / Homebrew / RVM працювати над Yosemite?


118

Після встановлення Yosemite я не зміг запустити пивоваріння або рубін.

Я отримував цю помилку під час оновлення варіння:

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


14
коли я вношу ці зміни, я отримую помилку "Homebrew вимагає Leopard або вище. Для підтримки Tiger дивіться: github.com/mistydemeo/tigerbrew ", хоча я працюю на йосеміті
науковість

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

Я оновився до 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

Якщо ви ще не внесли жодних змін у заварку, ось що я рекомендую. Інакше читайте далі нижче.

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

Вже внесені зміни, щоб заварити файли та застрягли в безладді?

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

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


3
Ця відповідь спрацювала (включаючи скасування git mess) там, де в якості голосової відповіді відповідь залишив мене з проблемою git.
Стів М

Дуже корисно після оновлення системи! Спасибі
кодування залежно від

Це не вдається в Ель-Капітані з "ln: операція не дозволена" через режим без корінь. Ви можете знайти вирішення тут: apple.stackexchange.com/questions/196224/…
Хорхе Ортіз

37

Кроки, щоб виправити це:

  1. Встановіть інструменти командного рядка для Xcode 6

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

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

    rvm install ruby

Працював для мене, Yahoo!


У мене рубін працює і працює, але це все ще не працює для мене: stackoverflow.com/questions/24113251/…
eden

Я повністю видалив rvm та nginx та перевстановив їх після встановлення інструментів для розробників Xcode 6. Зараз це працює як шарм.
wout

1
Це теж працювало для мене, просто хотілося уточнити, як запустити цю команду для кроку 1: xcode-select --встановити
James Toomey

33

Редагувати сценарій означає brew update, що не вийде; є місцеві редагування відстежуваних файлів, що призводить git pullдо відмови.

Я зробив це, і я підозрюю, що він чистіший:

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

Ніяких скарг від brew doctor.


Коли я це роблю, у мене з’являється помилка щодо відслідковуваних файлів, які потрібно перемістити перед об'єднанням. Це всі файли у бібліотеці / формулі /.
септер

Якщо припустити, що ви нічого не редагували, коли це трапляється зі мною, це означає, що мені потрібно запуститись 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", яке було в цьому рядку, на "Поточне" (переконайтеся, що ви зберігаєте заголовок "С", інакше 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 папці.


Це єдине рішення, яке працювало на мене. Саме тому, що я часто зустрічаюся з такими супер-потворними помилками, я віддаляюся від Рубі та Рейлів для свого наступного додатка.
Дебора

3

Як і раніше, сказане: 1) Змінити на поточний 2) встановити xcode 6

Якщо у вас виникли подальші проблеми з варінням і рубіном, це повинно допомогти: Якимось сортам потрібен рубін у версії 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/

Це працювало для мене!


Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться.
буммі

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 ': допоможе невизначений метод? " для [“update”]: масив (NoMethodError)

Я просто отримую це… (незалежно від того, яка команда просто вимикає “оновити” командою) я вирішив проблему, попросивши /usr/localпапку приятелів . Потім я зробив резервну копію своєї /usr/localпапки.

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

Потім я перемістив його /usr/local до

sudo mv ~ / Завантаження / local / usr / local

Примітка. Ви, ймовірно, втратите деякі дані, тому обов'язково зробіть резервну копію.


-1

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

Мені було зручно встановити рубінову збірку (окремо - не плагін), і він створив Ruby з джерел без помилок і розмістив його там, де я цього хотів.

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

Чарлі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.