2012-06-23 45 views
9

Tôi đã tìm kiếm xung quanh một chút và dường như không tìm thấy bất kỳ hồ sơ nào của bất kỳ ai khác về vấn đề này.Lỗi OSX Homebrew: hằng số không xác định MACOS

Bất cứ khi nào tôi cố gắng chạy

$ brew update 

Tôi đang thưởng bằng

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

Đây không phải là máy tính của tôi và tôi thường phát triển trên hệ thống Linux vì vậy đây là tất cả một chút kỳ lạ đối với tôi.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều! Vui lòng cho tôi biết nếu tôi có bất kỳ thông tin bổ sung nào. Một lần nữa, tôi không quen với homebrew hoặc OSX.

EDIT theo yêu cầu của 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) 

... Không chắc tôi thích này hoàn toàn "ở đây, sử dụng macbook này cho dự án, nó hoạt động tốt hơn" điều ...

+0

Có gì trên dòng 34 của tệp đó (/ usr/local/bin/brew)? Dòng 34 của tôi không có MACOS liên tục nhưng nó có MACOS_VERSION. Nhưng dù sao, nhìn vào mã sẽ giúp biết những gì đang xảy ra. – nickgroenke

+0

'brew nào' mang lại cho bạn? – Usman

+0

@ user1087981 '34 nếu MACOS và MACOS_VERSION <10.5' @Usman ' $ mà brew' '/ usr/local/bin/brew' – pdel

Trả lời

3

Hằng số MACOS được đặt trong globals.rb. Có vẻ như bạn có thể cài đặt Homebrew.

Kiểm tra kết quả của brew doctor để biết bất kỳ đề xuất nào.

Nếu điều đó không giúp bạn cập nhật kết quả của brew --config.

Nếu vẫn thất bại, bạn có thể muốn thử cài đặt lại Homebrew.


UPDATE:

Vì đây là máy của người dùng trước đó đảm bảo người dùng của bạn là chủ sở hữu của /usr/local và tất cả mọi thứ bên trong. Sửa chữa nó với sudo chown -R $USER /usr/local.

+0

Cập nhật câu hỏi với kết quả. Tôi đang nghiêng về phía cài đặt borked mặc dù, đây là hệ thống dev của người khác trước khi tôi nhận nó và vẫn có tài khoản và phần mềm trên nó từ dự án cuối cùng. Tôi cần nói chuyện với sếp của tôi để cho tôi cài đặt mới. Tôi biết một thực tế là một số công cụ bị hỏng trên nó, nó đổ vỡ khi bạn thử và cập nhật hệ thống. – pdel

1

Tôi đã gặp lỗi tương tự với việc cài đặt bia "borked". Tôi đã xóa khối mã 5 dòng nhỏ trong tập lệnh/usr/local/bin/brew bắt đầu bằng dòng MACOS. Điều đó đã làm các trick để cho phép tôi gỡ bỏ cài đặt và cuối cùng cài đặt lại nó.

10

Tôi khá chắc chắn nguyên nhân gốc rễ của việc này là nỗ lực nâng cấp không thành công đối với Homebrew 0.9.5 từ phiên bản cũ hơn nhiều. Về cơ bản, nếu bạn chạy brew update như trái ngược với sudo brew update một phần của tệp được cập nhật, trong khi những tệp khác thì không. Đây là những gì làm việc cho tôi:

  1. Sửa /usr/local/bin/brew (nó chỉ là một tập tin Ruby, không phải là một nhị phân được biên dịch, vì vậy bất kỳ soạn thảo văn bản sẽ làm). Bạn sẽ tìm thấy một khối như:

    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 
    

    Nhận xét điều này. Ngay cả khi bạn không biết Ruby, bạn có thể có thể biết điều này đang làm gì - nó kiểm tra xem bạn có phiên bản OSX hiện tại hay không. Giả sử rằng bạn do trên thực tế có phiên bản này, kiểm tra sanity này là không cần thiết. Brew vẫn bị hỏng, nhưng ít nhất giờ nó sẽ tải đủ xa để đưa ra thông báo lỗi.

  2. Run sudo brew update, spoiler alert: nó không thành công, nhưng lần này với một thông báo lỗi có ý nghĩa:

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

    Vâng, hôm nay tôi biết được rằng brew update chỉ là một wrapper cho git pull vì bất cứ ai đã từng làm việc với git biết rằng thông báo lỗi. Chúng ta cũng có thể sửa lỗi này.

  3. Chuyển sang kho lưu trữ git homebrew với cd /usr/local và cung cấp lệnh git reset --hard FETCH_HEAD. This piece found here.

  4. Cung cấp lệnh sudo brew update. Homebrew giờ đây nên cập nhật thành công và hoạt động bình thường!

Khi hệ thống hoạt động trở lại, bạn thực sự có thể thấy lý do tại sao một lỗi như thế này sẽ xảy ra. Đối với một, usr/local/bin/brewcompletely rewriten và thậm chí không còn là Ruby nữa và hầu hết cấu hình của nó đã được chuyển thành /usr/local/Library/brew.rb không còn sử dụng các hằng số MACOS hoặc MACOS_VERSION hằng số, vì chúng đã được thay thế bằng đối tượng hướng OS.macMacOS.version.

+2

Câu trả lời hay - cảm ơn rất nhiều! – lxt

Các vấn đề liên quan