Как исправить brew после обновления OSX до Yosemite?

181

Я столкнулся с некоторой проблемой с Homebrew. Я повысил до Йосемити. После обновления доморощенный кажется сломанным.

Я бы запустил любую команду 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 26: /usr/local/Library/brew.rb: Undefined error: 0

Как это решить?

Ранджит Рамачандра
источник
Я только что обновился с Mac OS X 10.8 до 10.10 (Yosemite), и после обновления доморощенный работает нормально. Либо эта проблема была исправлена, либо в обновлении моей ОС было что-то другое, чем все остальные, публикующие здесь.
Иц

Ответы:

239

Я решил поискать это и обнаружил, что есть проблема . Проблема закрыта, но невозможно просто запустить, brew updateпотому что вы все равно получите ту же ошибку.

Итак, вот что вам нужно сделать:

cd /usr/local/Library
git pull origin master

Если у вас есть изменения в каталоге (/ usr / local / Library), git pull выдаст ошибку. В этом случае вам придется извлечь ветку master и принудительно установить ее как master:

git fetch --all
git reset --hard origin/master

Это улучшит ваш домашний напиток, и вы сможете снова использовать его.

Если вы установили Homebrew от имени пользователя, не являющегося пользователем root, вам нужно сделать cdэто /Users/yourusername/homebrew/Libraryвместо /usr/local/Library.

Ранджит Рамачандра
источник
20
еще одна причина, по которой мне нравится иметь менеджер пакетов, созданный на git :)
spinlock
3
Именно так. Любите программное обеспечение, которое просто запускается из исходного кода и может быть обновлено с помощью git pull
Ранджит Рамачандра,
7
Странно, я получаю это фатально: не git-репозиторий (или любой из родительских каталогов): .git
Габриэль Р.
2
Я получаю эту ошибку:error: cannot open .git/FETCH_HEAD: Permission denied
sixty4bit
6
Попробуйsudo git pull origin master
Ранджит Рамачандра
48

Я нашел это решение :

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

cd /System/Library/Frameworks/Ruby.framework/Versions
sudo ln -s Current 1.8
brew update
sudo rm 1.8
Элиас Замария
источник
2
В отличие от принятого ответа, это действительно сработало.
Пол
Это единственное, что у меня сработало 10.10.3
пользователь
Также работает для 10.10.4
Ральфонсо
Ошибка прерывания: сбой при выполнении: git pull -q origin refs /heads / master: refs / remotes / origin / master
itsazzad
Это сработало для меня, хотя был также еще один шаг: stackoverflow.com/questions/26501126/…
JussiR
22

Версия и расположение Ruby изменились с новой версией Mac OS X.

Чтобы это исправить, отредактируйте /usr/local/Library/brew.rb.

В первой строке заменить 1.8на Current, т. Е. Из:

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

чтобы:

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
Габриэль Р.
источник
Это ломается, brew updateпотому что теперь у вас есть незафиксированное изменение.
Кэмерон Прайс-Остин
1
… Но для этого brew updateнужно применить исправление, которое я предложил. Я никогда не использовал brew updateдо сих пор, поэтому я даже не инициализировал репо. Не могу вспомнить, как я его даже установил.
Габриэль Р.
3

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

Drux
источник
1

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

Хотя это все отличные ответы, для меня было проще просто переустановить brew.

Сначала я выполнил инструкции по:

http://brew.sh/

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

Я не хочу печатать конкретные команды, так как они имеют тенденцию немного меняться в зависимости от установки устройства.

РОП
источник