Homebrew त्रुटियों में स्थापना


112

आरवीएम और रूबी को स्थापित करने का प्रयास 1.9.2

मैंने पहले से ही homebrew और git इंस्टॉल किया है, लेकिन मुझे पूर्ण अपडेट नहीं मिल सकी क्योंकि मुझे अनुमति में त्रुटियां मिलीं। हिम तेंदुए को फिर से स्थापित किया और अनुमतियों की मरम्मत की।

अब ऐसा होता है ...

$ काढ़ा स्थापित wget

त्रुटि: लिखने के लिए / usr / स्थानीय / तहखाने नहीं कर सकते


stackoverflow.com/questions/4804169/… को स्वीकृत उत्तर के रूप में चिह्नित किया जाना चाहिए - मुझे डर है कि जो आगंतुक यह नहीं देखते हैं कि इस प्रश्न का उत्तर नहीं दिया गया है वे आगे बढ़ेंगे
dmo

जवाबों:


274

sudo chown -R $USER /usr/local

आपको अपने आप को /usr/local/उस लाइन का उपयोग करने का अधिकार देना होगा। होमब्रे को स्थापित करने के लिए आधिकारिक डॉक्स के शीर्ष पर रूबी वन-लाइनर का उपयोग करने के बाद मुझे खुद ऐसा करना पड़ा। मेरे लिए एक जादू की तरह काम किया। यह आपको sudoHomebrew के साथ की आवश्यकता होगी केवल समय होना चाहिए ।

मुझे यकीन नहीं है कि माणिक वन-लाइनर ऐसा करता है। अगर यह किया, तो मेरे सिस्टम पर कुछ और के /usr/localबाद से नियंत्रण कर लिया ।

संपादित करें : मैंने इसे पूरी तरह से याद किया, लेकिन @samvermette ने (मेरे उत्तर के उत्तर देखें): यदि आप इस आदेश को ऊपर चलाते हैं और होमब्रे के माध्यम से कुछ स्थापित किया है, जिसके लिए विशेष उपयोगकर्ता अनुमतियों की आवश्यकता होती है, जैसे mysql, उन अनुमतियों को वापस देना सुनिश्चित करें (जैसा कि उपरोक्त कमांड /usr/localआपके अंदर सब कुछ के लिए पुनरावर्ती स्वामित्व देता है ( $USER), mysql के मामले में, यह…

sudo chown -RL mysql:mysql /usr/local/mysql/data


16
कृपया ध्यान दें : यह कमांड mysqlउपयोगकर्ता से / usr / लोकल / mysql / डेटा का स्वामित्व हटाने वाली है । मेरे मामले में जिसने mysql को शुरू होने से रोका। इसे ठीक करें:sudo chown -RL mysql:mysql /usr/local/mysql/data
samvermette

24
मैं पहले से ही मेरे लिए सही अनुमति थी के sudo chown -R $USER /usr/local/Cellarरूप में उपयोग करके mysql मुद्दे से परहेज/usr/local/
पार्कर

1
काश, उपयोगकर्ता आते हैं और उपयोगकर्ता जाते हैं ... शायद किसी दिन इब्राहिम वापस आएगा और इसे चिह्नित करेगा। शायद। (शायद नहीं।)
बेन क्रीगर

4
मुझे यह जवाब पसंद नहीं है। यह मानता है कि केवल एक उपयोगकर्ता कभी भी सिस्टम का उपयोग करता है और उपयोगकर्ता को सब कुछ / usr / स्थानीय होना चाहिए, इसके बावजूद कि यह प्रश्न केवल होमब्रे के बारे में है। क्या मल्टीवर्स सिस्टम के साथ काढ़ा काम नहीं करता है? यह एक टेढ़ा जवाब है, भले ही यह काम करता हो। इसके अलावा, यह स्पष्ट नहीं करता है कि किसी उपयोगकर्ता ने इस स्थिति का सामना कैसे किया होगा। संकेत - मैंने विहित निर्देशों का उपयोग करके HomeBrew को स्थापित किया, फिर एक TimeMachine बैकअप (दूसरी मशीन पर) से पुनर्स्थापित किया। मुझे संदेह है कि यह पुनर्स्थापना थी जिसने फ़ाइल के स्वामित्व को बदल दिया।
जेसन आर। कोम्ब्स

1
मैं @ JasonR.Coombs से सहमत हूं; लोगों को व्यावहारिक और सुरक्षा प्रभाव को समझने के बिना इस मैला समाधान का उपयोग नहीं करना चाहिए। / Usr / स्थानीय में कोई भी सॉफ़्टवेयर अब आपके उपयोगकर्ता के अंतर्गत चलने वाली किसी भी चीज़ से अधिलेखित हो सकता है, सुरक्षा छेद खोल सकता है। यह पूरी तरह से संभव है कि आप पहले chown कमांड को नेत्रहीन रूप से चलाकर (MySQL के अलावा) कुछ और स्क्रू करेंगे, जिसके बाद उस बिंदु को पहचानने और उसे ठीक करने में बहुत देर हो जाएगी जो आपने अभी खराब किया है।
लूट

41

Mavericks में अपग्रेड करने के बाद मेरे पास यह समस्या थी, और त्रुटि संदेश को देखते समय यह पृष्ठ शीर्ष खोज परिणाम था। मैंने खोज जारी रखी और स्टैक ओवरफ्लो डॉट कॉम पर यह उत्तर मिला । संक्षिप्त रूप से कहें, तो यह है:

sudo chmod a+w /usr/local/Cellar

इसने मेरे लिए समस्या को ठीक कर दिया, और चूंकि यह केवल त्रुटि संदेश में निर्दिष्ट विशिष्ट पथ के लिए अनुमतियाँ बदलता है, ऐसा प्रतीत होता है कि अन्य प्रतिष्ठानों के साथ नकारात्मक दुष्प्रभाव नहीं हैं।

मैं यहाँ इस उत्तर को किसी और के लिए रख रहा हूँ जो इस पृष्ठ को पहले पा सकता है जैसे मैंने किया। हालांकि, क्रेडिट को जीडी पर जाना चाहिए ।


2
क्या इसे असुरक्षित माना जाता है, क्योंकि अब हर कोई / usr / लोकल / सेलर को लिख सकता है?
डेविड वेल्च

यह उत्तर उन पैकेजों के लिए विफल रहता है, जिन्हें अन्य फ़ोल्डरों (जैसे /usr/local/bin) तक पहुंच की आवश्यकता होती है ।
जेसन आर। कोम्ब्स

11

आप केवल व्यवस्थापक उपयोगकर्ताओं को लिखने की अनुमति दे सकते हैं /usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

चूँकि प्रत्येक उपयोगकर्ता जो व्यवस्थापक समूह से संबंधित है, नई निर्भरताएँ स्थापित करने में सक्षम होगा।


मल्टी-प्रशासक मशीनों के लिए एक बेहतर समाधान की तरह दिखता है (हालांकि मेरे / usr / स्थानीय / कामगार निर्देशिका को भी काम करने के लिए एस्पेल के लिए g + x की आवश्यकता है)।
जेम्स स्नू

1
'' काढ़ा लिंक '' चरण को सफलतापूर्वक पूरा नहीं करने से बचने के लिए 'त्रुटि' आप इस थ्रेड में क्या लागू कर सकते हैं , अर्थात् sudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDजहाँ DDDD है बिन , शेयर , लाइब्रेरी / लिंक्ड कैग्स , ऑप्ट
सुपर डिक

1
Awer के लिए Thnx, मुझे "sudo" का उपयोग करना था, इसलिए यदि ये कमांड काम नहीं करता है, तो इसे sudo के साथ उपसर्ग करने की कोशिश करें
MQoder



1

मैं यह सुनिश्चित करने का सुझाव देता हूं कि वर्तमान उपयोगकर्ता उस समूह का सदस्य है जो मालिक / usr / स्थानीय है। मैं डिफ़ॉल्ट रूप से मानता हूं, वह समूह है wheel। अपने आप को उस समूह का सदस्य बनाने के लिए:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

हालाँकि कुछ एक अशुभ हथौड़ा के रूप में, इसका इच्छित प्रभाव होता है - इसमें उन वस्तुओं तक पहुंच को सक्षम /usr/localकरना जो केवल उन्नत सदस्यों द्वारा उपयोग (पढ़ने / लिखने) के लिए हैं। इस दृष्टिकोण के ऊपर अन्य का लाभ है क्योंकि यह समूह की सदस्यता का लाभ उठाता है, होमब्रॉव का उपयोग करने के लिए सिस्टम पर कई (अधिकृत) उपयोगकर्ताओं को सक्षम करता है।


0

आपने Homebrew कैसे स्थापित किया? उनके आधिकारिक इंस्टॉलेशन निर्देशों में एक रूबी स्क्रिप्ट चलाना शामिल है। आपके लिए अनुमति के मुद्दों का ध्यान रखना चाहिए।

यदि आप कोई स्क्रिप्ट नहीं चलाना चाहते हैं, तो उस पृष्ठ का एक भाग "डेवलपर्स के लिए / usr / लोकल में इंस्टॉल करना" नामक है, जो / usr / स्थानीय निर्देशिका के लिए आवश्यक अनुमतियों में परिवर्तन को स्पष्ट करता है।


मैंने एक स्क्रिप्ट का उपयोग किया और इसे स्थापित किया लेकिन अभी भी इसे अपडेट करने में समस्याएं थीं। मैंने एक नए लैपटॉप पर उपयोगकर्ता डेटा को माइग्रेट किया। पहले github b / c से कुछ वर्कअराउंड करना था, स्क्रिप्ट पहले काम नहीं करती थी।
इब्राहिम

-3

संपादित करें : जैसा कि टिप्पणियों में उल्लेख किया गया है, होमब्रे के साथ सुडो का उपयोग करना एक बुरा विचार है, इसलिए निम्नलिखित उत्तर का उपयोग न करें!


यदि आप sudo के साथ कमांड निष्पादित करते हैं तो आप इस त्रुटि को भी रोक सकते हैं:

$ sudo brew install wget

लेकिन इस्तेमाल करने में सावधानी बरतें sudoक्योंकि आप बहुत सारी गलतियाँ कर सकते हैं।


यह दृष्टिकोण होमब्रे के देर से संस्करणों के साथ विफल होता है जो कि रूट के रूप में आह्वान को अस्वीकार करता है (सूडो के माध्यम से)।
जेसन आर। कोम्ब्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.