2012-06-23 2 views
9

Я искал вокруг и не могу найти ни одной записи о ком-либо с этой проблемой.OSX Ошибка Homebrew: неинициализированная константа MACOS

Всякий раз, когда я пытаюсь запустить

$ brew update 

Я вознагражден с

/usr/local/bin/brew:34: uninitialized constant MACOS (NameError) 

Это не моя машина, и я нормально развиваться на системах Linux, так что это все немного странно для меня.

Любая помощь была бы принята с благодарностью! Скажите, пожалуйста, если есть дополнительная информация, которую я должен предоставить. Опять же, я не привык к доморощенным или OSX.

EDIT по просьбе Джамея

xiao:~ patrick$ brew doctor 
/usr/local/bin/brew:34: uninitialized constant MACOS (NameError) 
xiao:~ patrick$ brew --config 
/usr/local/bin/brew:34: uninitialized constant MACOS (NameError) 

... Не уверен, что мне нравится вся эта «здесь, используйте этот Макбука для проекта, он работает лучше» вещь ...

+0

Что находится в строке 34 этого файла (/ usr/local/bin/brew)? У моей строки 34 нет постоянной MACOS, но у нее есть MACOS_VERSION. Но в любом случае просмотр кода поможет узнать, что происходит. – nickgroenke

+0

Что дает вам «то, что варится»? – Usman

+0

@ user1087981 '34, если MACOS и MACOS_VERSION <10.5' @Usman ' $, который brew' '/ USR/местные/бен/brew' – pdel

ответ

3

Константа MACOS установлена ​​в globals.rb. Похоже, у вас может быть уборка с домашним животом.

Проверьте вывод brew doctor за любые предложения.

Если это не поможет, уточните результаты с brew --config.

Если все остальное не удается, вы можете попробовать повторно установить Homebrew.


UPDATE:

Поскольку это машина предыдущего пользователя убедитесь, что пользователь является владельцем /USR/локальный и все внутри. Исправьте его sudo chown -R $USER /usr/local.

+0

Изменено вопрос с результатами. Я склоняюсь к установке borked, хотя это была чья-то еще Dev-система, прежде чем я ее получил, и у меня все еще есть учетные записи и программное обеспечение от последнего проекта. Мне нужно поговорить с моим боссом, чтобы я сделал новую установку. Я знаю, что на нем что-то сломано, он падает, когда вы пытаетесь обновить систему. – pdel

1

У меня была схожая ошибка с "borked" установкой варева. Я удалил небольшой 5-строчный блок кода в сценарии/usr/local/bin/brew, начиная с линии MACOS. Это помогло мне удалить и в конечном итоге переустановить его.

10

Я уверен, что причиной этого является неудачная попытка восстановления Homebrew 0.9.5 из гораздо более ранней версии. В основном, если вы запустите brew update, а не sudo brew update, часть файлов обновляется, а другие нет. Вот что работает для меня:

  1. Edit /usr/local/bin/brew (это просто файл рубин, не скомпилированный двоичный, поэтому любой текстовый редактор будет делать). Вы найдете такой блок, как:

    if MACOS and MACOS_VERSION < 10.5 
        abort <<-EOABORT.undent 
        Homebrew requires Leopard or higher. For Tiger support, see: 
        https://github.com/mistydemeo/tigerbrew 
        EOABORT 
    end 
    

    Прокомментировать это. Даже если вы не знаете Ruby, вы, вероятно, можете понять, что он делает - он проверяет, есть ли у вас текущая версия OSX. Предполагая, что у вас do действительно есть эта версия, этот контроль здравомыслия не требуется. Brew все еще сломан, но по крайней мере теперь он будет загружаться достаточно далеко, чтобы давать сообщения об ошибках.

  2. Run sudo brew update, спойлер оповещения: это не удается, но на этот раз многозначительно сообщением об ошибке:

    $ brew update 
    error: Your local changes to the following files would be overwritten by merge: 
    [giant list of files here] 
    

    Ну, сегодня я узнал, что brew update просто обертка для git pull, потому что тот, кто работает git знает это сообщение об ошибке. Мы можем это исправить.

  3. Включите общедоступный git репозиторий с cd /usr/local и дайте команду git reset --hard FETCH_HEAD. This piece found here.

  4. Дайте команду sudo brew update. Homebrew теперь должен успешно обновляться и работать правильно!

После того, как система снова работает, вы можете увидеть, почему возникла такая ошибка. С одной стороны, usr/local/bin/brew был completely rewriten и даже не рубин больше, и большую часть своей конфигурации была перенесена в /usr/local/Library/brew.rb, которая больше не использует константы MACOS или MACOS_VERSION константы, так как они были заменены на более объектно ориентированного OS.mac и MacOS.version.

+2

Отличный ответ - большое спасибо! – lxt

Смежные вопросы