Homebrew: सहानुभूति नहीं कर सकता,/usr/स्थानीय/बिन लिखने योग्य नहीं है




(10)

HomeBrew स्थापित करते समय, HomeBrew एक निर्भरता स्थापित करते समय निम्नलिखित मुद्दों को प्रदर्शित कर रहा है:

Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/a2x
/usr/local/bin is not writable.

You can try again using:
  brew link asciidoc

उन लोगों के लिए जो /usr/local/sbin लिए देख रहे हैं, वे लेखन योग्य त्रुटि नहीं हैं:

अद्यतन: यह /usr/local/someOtherFolderName उदा /usr/local/include । आपको बस उस फ़ोल्डर को बनाना होगा:

  • sudo mkdir someOtherFolderName

पहले sbin फ़ोल्डर बनाएँ, ध्यान दें कि इसके लिए sudo विशेषाधिकार की आवश्यकता होती है

  • cd /usr/local

  • sudo mkdir sbin

  • sudo chown -R $(whoami) $(brew --prefix)/*

  • brew link yourPackageName


अन्य उत्तर सही हैं, जहां तक ​​वे जाते हैं, लेकिन वे इस बात का जवाब नहीं देते हैं कि यह समस्या क्यों हो सकती है, और उस मूल कारण को कैसे संबोधित किया जाए।

कारण

इस समस्या के दो संभावित कारण हैं:

  1. होमब्रेव इंस्टॉलेशन उस उपयोगकर्ता के साथ किया गया था जिसे आप वर्तमान में उपयोग कर रहे हैं। Homebrew को उम्मीद है कि केवल मूल रूप से इसे स्थापित करने वाला उपयोगकर्ता ही इसका उपयोग करना चाहेगा।
  2. आपने कुछ सॉफ़्टवेयर स्थापित किए हैं जो काढ़ा का उपयोग किए बिना / usr / स्थानीय को लिखते हैं। यही कारण है कि brew doctor सुझाव देते हैं, अगर आप इसे चलाते हैं।

उपाय

मल्टीयूज़र होमब्रे

यदि आपके पास कई उपयोगकर्ता खाते हैं, और आप चाहते हैं कि उनमें से एक से अधिक का उपयोग करने में सक्षम हो, तो आपको कुछ चरणों के माध्यम से चलने की आवश्यकता है, अन्यथा आपको उपयोगकर्ताओं को स्विच करने पर हर बार होमब्रे फ़ाइल संरचना का स्वामित्व बदलना होगा, और यह एक महान विचार नहीं है।

विस्तृत निर्देश online पाया जा सकता है, लेकिन इसका त्वरित उत्तर यह है:

  1. एक समूह बनाएं जिसका नाम है काढ़ा:

    1. सिस्टम वरीयताएँ खोलें
    2. खातों पर क्लिक करें
    3. "+" पर क्लिक करें (यदि आवश्यक हो तो पहले अनलॉक करें)
    4. नए खाते के अंतर्गत समूह चुनें
    5. काढ़ा डालें
    6. समूह बनाएं पर क्लिक करें
  2. काढ़ा समूह का चयन करें, और उस उपयोगकर्ता खाते को जोड़ें जिसे आप इसका उपयोग करना चाहते हैं।
  3. / usr / स्थानीय फ़ोल्डर समूह स्वामित्व बदलें: sudo chgrp -R brew /usr/local
  4. समूह के रूप में / usr / स्थानीय में लिखने की अनुमति बदलें: sudo chmod -R g+w /usr/local
  5. होमब्रेक कैश डायरेक्टरी समूह को बदलें: sudo chgrp -R brew /Library/Caches/Homebrew
  6. होमबॉव कैश निर्देशिका अनुमतियाँ बदलें: sudo chmod -R g+w /Library/Caches/Homebrew

एकल उपयोगकर्ता होमब्रे

यदि आप Homebrew के साथ एक से अधिक उपयोगकर्ता का उपयोग करने की कोशिश नहीं कर रहे हैं, तो brew doctor के सुझावों के आधार पर अन्य उत्तरों द्वारा प्रदान किया गया समाधान संभवतः पर्याप्त है:

sudo chown -R $(whoami) /usr/local

sudo chown -R $(whoami) /Library/Caches/Homebrew

सत्यापन

इन चरणों के बाद, brew doctor को किसी भी उपयोगकर्ता द्वारा काढ़ा समूह में सफलता की सूचना देनी चाहिए, यह मानकर कि आपने नया समूह सदस्यता लागू करने के लिए (और यदि आप बहुउद्देशीय मार्ग गए थे) लागू करने के लिए वापस लॉग इन किया है। यदि आपने एकल उपयोगकर्ता होमब्रेव के लिए चीजों को ठीक किया है, तो लॉग आउट और बैक-इन जरूरी नहीं होना चाहिए क्योंकि आपके किसी भी ग्रुप मेंबरशिप में बदलाव नहीं हुआ है।


ऐसा इसलिए है क्योंकि वर्तमान उपयोगकर्ता को उस पथ में लिखने की अनुमति नहीं है। तो, r / w (पढ़ने / लिखने) की अनुमतियों को बदलने के लिए आप या तो 1. टर्मिनल, या 2. ग्राफिकल "गेट इन्फो" विंडो का उपयोग कर सकते हैं।

1. टर्मिनल का उपयोग करना

Google टर्मिनल से chmod / chown (चेंज मोड / चेंज मालिक) कमांड का उपयोग कैसे करें

2. चित्रमय 'जानकारी प्राप्त करें' का उपयोग करना

आप उस फ़ोल्डर / फ़ाइल पर राइट क्लिक कर सकते हैं जिसे आप अनुमतियाँ बदलना चाहते हैं, फिर गेट इन्फो खोलें जो आपको नीचे की तरह एक विंडो दिखाएगा जिसमें आप आसानी से r / w अनुमतियां बदल सकते हैं:

यदि संभव हो तो अपने अस्थायी काम के बाद अनुमति को "केवल पढ़ने के लिए" वापस बदलने के लिए याद रखें


किसी विशेष आदेश को चलाने के बजाय, मैं brew doctor को चलाने और सभी चेतावनियों को गंभीरता से लेने की सलाह brew doctor । ऐसी अन्य समस्याएं भी हो सकती हैं, जिन पर आप अटक सकते हैं, जो इस प्रश्न पर कब्जा नहीं कर सकते हैं।

इसके अलावा, जैसा कि काढ़ा समय के साथ अपडेट हो जाता है, विशेष आदेश मान्य हो सकते हैं या नहीं भी रह सकते हैं। brew doctor , हालांकि, यह सुनिश्चित करेगा कि आप समस्या निवारण के लिए उठें।


मेरी समस्या थी

Error: Could not symlink share/man/man7/ABORT.7
/usr/local/share/man/man7 is not writable.

chown ने मदद नहीं की, लेकिन मैंने चल रहे brew doctor सलाह का पालन किया और इस चेतावनी ने मेरी मदद की:

Warning: Broken symlinks were found. Remove them with `brew prune`:
/usr/local/share/man/man3/* 

brew prune बाद सभी ठीक काम किया!


मेरे लिए समाधान brew update चलाने के लिए था।

तो, यह पहले करो।

यह होमब्रे से परिचित लोगों के लिए सामान्य अभ्यास हो सकता है, लेकिन मैं उन लोगों में से नहीं हूं।

संपादित करें: मुझे पता चला कि मुझे उसी प्रश्न के लिए @ किन्थ के उत्तर द्वारा सुझाए गए brew doctor को चलाने की आवश्यकता है।

एक सामान्य समस्या निवारण वर्कफ़्लो इस तरह दिखाई दे सकता है: 1. brew update 2. यदि वह brew doctor को चलाने में मदद नहीं करता है और उसके निर्देशों का पालन करता है 3. यदि वह स्टैक ओवरफ़्लो में मदद नहीं करता है।


मैंने सोफोस एंटी-वायरस उपयोगकर्ताओं के लिए निम्नलिखित प्रासंगिक पाया है:

https://.com/a/32981184

https://community.sophos.com/products/free-antivirus-tools-for-desktops/f/17/t/10029

संक्षेप में, सोफोस कुछ / usr / स्थानीय निर्देशिकाओं की अनुमति बदल रहा है। सोफोस ने इसे पैच किया है और इसे 9.4.1 संस्करण के साथ शामिल किया गया है।


मैक ओएस हाई सिएरा को चलाने के दौरान इस मुद्दे पर चलने वालों के लिए (इस पद के 4 साल बाद दी गई) - मेरे द्वारा बताए गए कदमों ने इस समस्या को हल कर दिया। अनिवार्य रूप से सिर्फ काढ़ा स्थापना रद्द करने और पुनः स्थापित करने की रूपरेखा।

https://medium.com/@mrkdsgn/brew-error-on-macos-high-sierra-check-you-have-permission-to-write-to-usr-local-e8bd1c6a22d4

उन चरणों को चलाने के बाद, brew link ने एक आकर्षण की तरह काम किया!


यदि आपके पास आपके द्वारा इंस्टॉल किए जा रहे पैकेज के लिए पहले से ही एक निर्देशिका /usr/local , तो आप इस निर्देशिका को हटाने का प्रयास कर सकते हैं।

मेरे मामले में मैंने पहले पैकेज का उपयोग किया था जिसे मैं काढ़ा का उपयोग किए बिना स्थापित करने की कोशिश कर रहा था, और फिर इसे अनइंस्टॉल कर दिया था। उस पिछली स्थापना से एक निर्देशिका /usr/local/<my_package>/ बचा था। मैंने इस फोल्डर ( sudo rm -rf /usr/local/<my_package>/ ) को sudo rm -rf /usr/local/<my_package>/ और उसके बाद sudo rm -rf /usr/local/<my_package>/ लिंक लिंक सफल रहा।


एलेक्स के जवाब के बाद मैं इस मुद्दे को हल करने में सक्षम था; ऐसा लगता है कि यह स्थापित किए जा रहे पैकेजों के लिए गैर-विशिष्ट है, लेकिन homebrew फ़ोल्डरों की अनुमति के बिना।

sudo chown -R `whoami`:admin /usr/local/bin

कुछ पैकेजों के लिए, आपको इसे /usr/local/share या /usr/local/opt करने की आवश्यकता हो सकती है:

sudo chown -R `whoami`:admin /usr/local/share
sudo chown -R `whoami`:admin /usr/local/opt




homebrew