Homebrew स्थापित करने के बाद OS X Lion पर अनुमतियों की त्रुटियों को कैसे हल करें


9

मैंने अभी स्नो लेपर्ड से शेर में अपग्रेड किया और होमब्रे को स्थापित करने की कोशिश कर रहा हूं। हालाँकि, इंस्टॉलेशन के बाद, मैं brew doctorइंस्टॉलेशन निर्देशों के अनुसार चलता हूं , और त्रुटियों की एक श्रृंखला को दर्शाता है कि / usr / स्थानीय निर्देशिकाएं लिखने योग्य नहीं हैं। उदाहरण के लिए:

Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/share

मुझे ये निर्देशिकाओं के एक समूह के लिए मिलता है:

You should probably `chown` /usr/local/include

You should probably `chown` /usr/local/share

You should probably `chown` /usr/local/share/man

मैं यह पता नहीं लगा सकता कि यह त्रुटि क्यों आ रही है, क्योंकि ऐसा लगता है कि मैं यूनिक्स समूह का हिस्सा हूं, जिसके पास इन निर्देशिकाओं के लिए अनुमति है:

Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x  4 root  admin  136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$

मैं क्या खो रहा हूँ?


जैसा कि सुझाया गया है, आप इन निर्देशिकाओं को अपने उपयोगकर्ता नाम पर "चाउन" क्यों नहीं करते हैं? उन्हें वैसे भी "जड़" से संबंधित नहीं होना चाहिए। कई उपयोगकर्ताओं के लिए आप समूह अनुमतियाँ भी बदल सकते हैं: apple.stackexchange.com/q/42127/14994
iolsmit

@ हिंसा: मैं एक ही समस्या है। हालाँकि, मैं यह नहीं देखता कि इसके बजाय मेरे पास क्यों /usr/localहोना चाहिए जब इस मशीन में कई व्यवस्थापक उपयोगकर्ता हैं। इसके अलावा, मेरे लिए उन स्थानों पर लिखना संभव है जिनके बारे में शिकायत है। कोई अन्य विचार? brew doctor
एमजीडी

जवाबों:


7

संपादित करें: समस्या अब Homebrew में ठीक हो गई है:

यदि आप अभी भी समस्या का अनुभव करते हैं, तो Homebrew को इस तरह अपडेट करें:

brew update

यदि आप जानना चाहते हैं कि समस्या क्या थी, तो मैंने अपना मूल उत्तर नीचे रखा है।


अभी के लिए परमिशन के मुद्दे पर ध्यान न दें

मैं ठीक उसी समस्या का सामना कर रहा हूं और मेरी राय में समस्या brew doctorआपके और मेरे इंस्टॉलेशन के बजाय है।

मुझे लगता है कि आपको अपने स्वामित्व को बदलने के बजाय इस मुद्दे पर ध्यान नहीं देना चाहिए /usr/local। वैकल्पिक रूप से, आप अपनी स्थानीय brew doctorस्क्रिप्ट को तब तक ठीक कर सकते हैं जब तक कि कोई फ़िक्स जारी न हो जाए। निचे देखो।

मैं इसे /usr/localविशिष्ट उपयोगकर्ता के स्वामित्व के लिए सही नहीं मानता । इस मशीन पर मेरे एक से अधिक व्यवस्थापक उपयोगकर्ता हैं। आपको मालिक और समूह के रूप में /usr/localस्वामित्व छोड़ना चाहिए root:admin

मेरी जांच

आपके लिए मेरे पास /usr/localमेरे उपयोगकर्ता द्वारा पूरी तरह से लिखने योग्य है जो adminसमूह का सदस्य भी है :

$ ls -ld /usr/local/
drwxrwxr-x  14 root  admin  476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd

आइए परीक्षण करें कि डायर वास्तव में योग्य है:

$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r--  1 mgd  admin  0 23 Jun 14:52 /usr/local/newfile

brew doctorकोड में आगे की जांच ने मुझे इस निष्कर्ष पर पहुंचाया कि रूबी फ़ंक्शन Pathname.writable?का उपयोग समस्या पैदा कर रहा है। इस इंटरैक्टिव रूबी सत्र पर विचार करें:

$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false

फंक्शन Pathname.writable?कहता /usr/localहै कि हम जानते हैं कि यह लेखन योग्य नहीं है।

Pathname.writable_real?इसके बजाय का उपयोग करने से सही परिणाम मिलता है - यह कहता है कि dir लिखने योग्य है:

>> Pathname('/usr/local').writable_real?
=> true

इसमें तय किया जाना चाहिए /usr/local/Library/Homebrew/cmd/doctor.rb। आप इसे अपने इंस्टॉलेशन में ठीक कर सकते हैं जबकि एक फिक्स की प्रतीक्षा कर रहे हैं।

दो कार्यों के बीच का अंतर (रूबी डॉक्स के अनुसार यहाँ और यहाँ हैं ):

लिखने योग्य? (file_name) → सही या गलत: यदि इस प्रक्रिया के प्रभावी उपयोगकर्ता आईडी द्वारा लिखित फ़ाइल योग्य है, तो सही है।

writable_real? (file_name) → true या false: यदि इस फ़ाइल का असली उपयोगकर्ता आईडी इस प्रक्रिया के नाम से कुख्यात है तो यह सही है।


एमबीडी की जांच और स्पष्टीकरण के लिए अंगूठे ... यह हाजिर है! ऐसा प्रतीत होता है कि एक समान मुद्दा github.com पर लगभग एक साल पहले उठाया गया था, लेकिन कभी भी (ठीक से?) हल नहीं किया गया था, कम से कम उपयोग न करके writable_real?... शायद यह एक पुल अनुरोध का समय है? :-)
पांडेनबेर्कर

फिक्स्ड: github.com/mxcl/homebrew/commit/…
mxcl

0

मेरा मानना ​​है कि आपको इसकी आवश्यकता है:

brew update

फिर brew doctorपुनः प्रयास करें।

आप अभी भी किसी भी निर्भरता के बारे में त्रुटियां प्राप्त कर सकते हैं जिसका आप उपयोग नहीं कर रहे हैं (मेरे मामले में जावा), जो ठीक है। अगर आपके पास Xcode के पूर्ण कमांड के बजाय Xcode के लिए कमांड लाइन टूल स्थापित है, तो आपको यह कहते हुए एक त्रुटि संदेश मिलेगा कि आपके पास एक अमान्य मार्ग है, लेकिन संदेश में दाईं ओर आप यह भी पढ़ेंगे कि यदि आपके पास कोई मान्य पथ नहीं है सिर्फ Xcode के लिए कमांड लाइन टूल्स का उपयोग कर रहे हैं, इसलिए यह ठीक भी है।

दूसरों के लाभ के लिए: यह ध्यान रखें कि काम करने के लिए ऐसा करते समय आपको एक व्यवस्थापक के रूप में लॉग इन करना होगा।


0

मैंने iolsmit's और Phil M के सुझावों के संयोजन का अनुसरण किया: मैंने इन निर्देशिकाओं को अपने उपयोगकर्ता नाम से जोड़ दिया, फिर उसके बाद फिर से भाग brew updateगया brew doctor। इससे सभी त्रुटि संदेशों से छुटकारा मिल गया और काढ़ा स्थापना अब अच्छी तरह से काम करने लगती है। तुम दोनों को धन्यवाद!


0

@ Mgd की जांच और स्पष्टीकरण के लिए अंगूठे ... यह हाजिर है!

ऐसा प्रतीत होता है कि एक समान मुद्दा github.com पर लगभग एक साल पहले उठाया गया था, लेकिन कभी भी (ठीक से?) हल नहीं किया गया था, कम से कम उपयोग न करके writable_real?... शायद यह एक पुल अनुरोध का समय है? :-)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.