2012-06-23 11 views
9

Szukałem trochę i nie mogę znaleźć żadnej innej osoby z tym problemem.Błąd Homeboks OSX: niezainicjowana stała MACOS

Ilekroć próbuję uruchomić

$ brew update 

jestem nagrodzony

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

To nie jest mój komputer, a ja normalnie rozwijać w systemach Linux, więc to wszystko jest nieco dziwne dla mnie.

Każda pomoc będzie bardzo ceniona! Proszę powiedzieć, czy są jakieś dodatkowe informacje, które powinienem podać. Znowu nie jestem przyzwyczajony do homebrew ani OSX.

EDIT na wniosek Jamea

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) 

... Nie wiem, lubię ten cały "tu użyć tego macbook dla projektu, to działa lepiej" rzecz ...

+0

Co to jest linia 34 tego pliku (/ usr/local/bin/brew)? Moja linia 34 nie ma stałego MACOS, ale ma MACOS_VERSION. Ale w każdym razie, patrząc na kod, pomógłby wiedzieć, co się dzieje. – nickgroenke

+0

co daje Ci "napój"? – Usman

+0

@ user1087981 '34 czy MacOS i MACOS_VERSION <10.5' @Usman ' $ które brew' '/ usr/local/bin/brew' – pdel

Odpowiedz

3

Stała MACOS jest ustawiona na globals.rb. Wygląda na to, że możesz mieć zszokowaną instalację Homebrew.

Sprawdź wyjście brew doctor pod kątem jakichkolwiek sugestii.

Jeśli to nie pomoże, zaktualizuj wyniki o brew --config.

Jeśli wszystko inne zawiedzie, możesz spróbować ponownie zainstalować Homebrew.


UPDATE:

Ponieważ był to maszyna poprzedniego autora upewnić się, że użytkownik jest właścicielem /usr/local i wszystko wewnątrz. Napraw to za pomocą sudo chown -R $USER /usr/local.

+0

zaktualizowała pytanie z wyników. Jestem jednak skłonny do instalowania zepsutego, to był system do obsługi kogoś innego, zanim go otrzymałem i nadal ma konta i oprogramowanie na nim z ostatniego projektu. Muszę porozmawiać z moim szefem, żeby pozwolił mi zrobić nową instalację. Wiem, że niektóre rzeczy są na nim uszkodzone, ulega awarii podczas próby aktualizacji systemu. – pdel

1

Miałem podobny błąd z "zepsutą" instalacją naparu. Usunąłem mały 5-wierszowy blok kodu w skrypcie/usr/local/bin/brew zaczynając od linii MACOS. To pozwoliło mi odinstalować i ostatecznie zainstalować ponownie.

10

Jestem prawie pewny, że główną przyczyną tego jest nieudana próba aktualizacji Homebrew 0.9.5 z dużo wcześniejszej wersji. Zasadniczo, jeśli uruchomisz brew update w przeciwieństwie do sudo brew update część plików zostanie zaktualizowana, podczas gdy inne nie. Oto co pracował dla mnie:

  1. Edit /usr/local/bin/brew (to tylko plik Ruby, a nie skompilowany binarny, więc dowolny edytor tekstu zrobi). Znajdziesz blok taki jak:

    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 
    

    Skomentuj to. Nawet jeśli nie znasz Ruby, prawdopodobnie możesz intuicyjnie sprawdzić, co to robi - sprawdza, czy masz aktualną wersję OSX. Zakładając, że masz do w rzeczywistości mają tę wersję, to kontrola poczytalności nie jest konieczne. Napar nadal się psuje, ale przynajmniej teraz załaduje się wystarczająco daleko, aby przekazać komunikaty o błędach.

  2. Run sudo brew update, spoiler alert: to się nie powiedzie, ale tym razem z sensowny komunikat o błędzie:

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

    Cóż, dzisiaj dowiedziałem się, że brew update jest tylko nakładką na git pull bo każdy, kto pracował z git wie, że komunikat o błędzie. Możemy to naprawić.

  3. Przejdź do repozytorium gita domowego homebrew pod numerem cd /usr/local i wydaj polecenie git reset --hard FETCH_HEAD. This piece found here.

  4. Podaj polecenie sudo brew update. Homebrew powinien teraz poprawnie aktualizować i działać poprawnie!

Po ponownym uruchomieniu systemu można w zasadzie zobaczyć, dlaczego wystąpiłby błąd podobny do tego. Z jednej strony, usr/local/bin/brew został completely rewriten i nie jest już nawet Ruby, a większość jego konfiguracji została przeniesiona do /usr/local/Library/brew.rb który nie używa stałych MACOS lub MACOS_VERSION stałe, tak jak zostały one zastąpione przez bardziej zorientowane OS.mac i MacOS.version obiektu.

+2

Świetna odpowiedź - wielkie dzięki! – lxt

Powiązane problemy