2012-06-23 15 views
9

मैंने थोड़ी सी खोज की है और इस समस्या के साथ किसी और का कोई रिकॉर्ड नहीं दिख रहा है।ओएसएक्स होमब्रू त्रुटि: अनियमित स्थिर मैकोज़

जब भी मैं

$ brew update 

मैं पुरस्कृत कर रहा हूँ को चलाने के लिए

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

साथ यह मेरी मशीन नहीं है कोशिश करते हैं और मैं सामान्य रूप से Linux सिस्टम पर विकसित तो यह सब एक सा मेरे लिए अजीब है।

किसी भी मदद की सराहना की जाएगी! कृपया मुझे बताएं कि मुझे कोई अतिरिक्त जानकारी प्रदान करनी चाहिए या नहीं। फिर, मैं होमब्री या ओएसएक्स के लिए उपयोग नहीं किया जाता है।

संपादित जेमिया के अनुरोध पर

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

कि फाइल (/ usr/स्थानीय/bin/काढ़ा) की लाइन 34 पर क्या है? मेरी लाइन 34 में निरंतर मैकोज़ नहीं है लेकिन इसमें MACOS_VERSION है। लेकिन वैसे भी, कोड को देखते हुए यह जानने में मदद मिलेगी कि क्या हो रहा है। – nickgroenke

+0

क्या करता है 'जो काढ़ा' प्रदान करती है? – Usman

+0

@ user1087981 '34 यदि MacOS और MACOS_VERSION <10.5' @Usman ' $ जो परिणाम के साथ '/ usr/स्थानीय/bin/brew' – pdel

उत्तर

3

MACOS स्थिर globals.rb में सेट है। ऐसा लगता है कि आपके पास होमब्रू की बोर्क्ड स्थापना हो सकती है।

किसी भी सुझाव के लिए brew doctor के आउटपुट की जांच करें।

यदि यह मदद नहीं करता है तो brew --config के परिणामों के साथ अपडेट करें।

यदि अन्य सभी विफल हो जाते हैं तो आप होमब्रू को पुनः स्थापित करने का प्रयास करना चाहेंगे।


अद्यतन:

चूंकि यह एक पिछले उपयोगकर्ता की मशीन सुनिश्चित करें कि आपके उपयोगकर्ता /usr/स्थानीय के मालिक और सब कुछ के भीतर है बनाना था। sudo chown -R $USER /usr/local के साथ इसे ठीक करें।

+0

सवाल अपडेट किया गया brew'। मैं हालांकि स्थापित borked की ओर झुकाव रहा हूँ, यह किसी और के देव प्रणाली से पहले मुझे मिल गया था और अभी भी पिछले परियोजना से खातों और उस पर सॉफ्टवेयर है। मुझे अपने मालिक को एक नया इंस्टॉल करने में मदद करने की ज़रूरत है। मुझे इस तथ्य के बारे में पता है कि कुछ चीजें इस पर टूट गई हैं, जब आप सिस्टम को आजमाते हैं और अपडेट करते हैं तो यह दुर्घटनाग्रस्त हो जाता है। – pdel

1

मुझे ब्रूड की "बोर्कड" स्थापना के साथ एक ही त्रुटि थी। मैंने मैकोज़ लाइन से शुरू/usr/local/bin/brew स्क्रिप्ट में कोड के छोटे 5 लाइन ब्लॉक को हटा दिया। यह चाल मुझे अनइंस्टॉल करने और अंततः इसे पुनर्स्थापित करने की अनुमति देने के लिए किया था।

10

मुझे पूरा यकीन है कि इसका मूल कारण होमब्रे 0.9.5 के पहले संस्करण से असफल अपग्रेड प्रयास है। असल में, यदि आप sudo brew update के विपरीत brew update चलाते हैं तो फ़ाइलों का एक हिस्सा अपडेट किया जाता है, जबकि अन्य नहीं होते हैं। यहां बताया गया है मेरे लिए काम किया है:

  1. संपादित /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 
    

    टिप्पणी करें। यहां तक ​​कि यदि आप रूबी को नहीं जानते हैं, तो शायद आप यह जान सकते हैं कि यह क्या कर रहा है-यह देखने के लिए जांच कर रहा है कि आपके पास ओएसएक्स का वर्तमान संस्करण है या नहीं। मान लीजिए कि वास्तव में इस संस्करण में है, यह सैनिटी चेक आवश्यक नहीं है। ब्रू अभी भी टूटा हुआ है, लेकिन कम से कम अब यह त्रुटि संदेश देने के लिए काफी लोड हो जाएगा।

  2. भागो 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 के लिए एक आवरण क्योंकि जो कोई काम किया है गिट के साथ त्रुटि संदेश जानता है। हम इसे भी ठीक कर सकते हैं।

  3. cd /usr/local के साथ होमब्रू गिट भंडार में स्विच करें और git reset --hard FETCH_HEAD आदेश दें। This piece found here

  4. आदेश sudo brew update दे। होमब्रू को अब सफलतापूर्वक अद्यतन करना चाहिए और ठीक से काम करना चाहिए!

एक बार सिस्टम फिर से काम कर रहा है, तो आप वास्तव में देख सकते हैं कि ऐसा क्यों हुआ होगा। एक के लिए, usr/local/bin/brewcompletely rewriten कर दिया गया है और अब और भी रूबी नहीं है, और इसके विन्यास के सबसे /usr/local/Library/brew.rb जो अब स्थिरांक MACOS या MACOS_VERSION स्थिरांक का उपयोग करता है, के रूप में वे और अधिक वस्तु उन्मुख OS.mac और MacOS.version ने ले ली है में ले जाया गया है।

+2

ग्रेट उत्तर - बहुत बहुत धन्यवाद! – lxt

संबंधित मुद्दे