Homebrew अनुमतियाँ और कई उपयोगकर्ताओं को अद्यतन काढ़ा करने की आवश्यकता है


79

मैं Homebrew का उपयोग लायन (लायन सर्वर पर वास्तव में पैकेज इंस्टाल करने के लिए कर रहा हूं लेकिन यह बात नहीं होनी चाहिए)

Homebrew एक उपयोगकर्ता के तहत स्थापित किया गया था। अब एक अलग उपयोगकर्ता एक पैकेज जोड़ना चाहेगा और Homebrew खुश नहीं है:

$ brew update
fatal: Unable to create '/usr/local/.git/index.lock': Permission denied
Error: Failure while executing: git checkout -q master

क्या यह बुरा माना जाता है? मुझे लगा कि /usr/local/आपके इंस्टाल के लिए उपयोग करने का एक फायदा यह है कि आपको इसकी आवश्यकता नहीं है sudo। लेकिन स्पष्ट रूप से हम करते हैं।

होमबॉव को संशोधित करने की आवश्यकता वाले सभी उपयोगकर्ता व्यवस्थापक समूह के सदस्य हैं । इसलिए, मैं chmod -R g+w /usr/local/डर सकता था लेकिन इससे कुछ गड़बड़ होगी या सुरक्षा के मुद्दे पैदा होंगे?

सलाह?

$ ls -al /usr/local/.git/
total 432
drwxr-xr-x  14 ladmin  admin     476 Feb 24 11:48 .
drwxrwxr-x  14 root    admin     476 Feb  9 15:27 ..
-rw-r--r--   1 ladmin  admin      94 Feb 24 11:48 FETCH_HEAD
-rw-r--r--   1 ladmin  admin      23 Feb 24 11:48 HEAD
-rw-r--r--   1 ladmin  admin      41 Feb  9 15:28 ORIG_HEAD
drwxr-xr-x   2 ladmin  admin      68 Feb  9 15:27 branches
-rw-r--r--   1 ladmin  admin     218 Feb  9 15:27 config
-rw-r--r--   1 ladmin  admin      73 Feb  9 15:27 description
drwxr-xr-x  12 ladmin  admin     408 Feb  9 15:27 hooks
-rw-r--r--   1 ladmin  admin  200272 Feb 24 11:48 index
drwxr-xr-x   3 ladmin  admin     102 Feb  9 15:27 info
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 logs
drwxr-xr-x   4 ladmin  admin     136 Feb  9 15:27 objects
drwxr-xr-x   5 ladmin  admin     170 Feb  9 15:27 refs

जवाबों:


99

क्या यह बुरा माना जाता है? मुझे लगा कि आपके इंस्टाल के लिए usr / local / का उपयोग करने के फायदे में से एक यह है कि आपको sudo की आवश्यकता नहीं है। लेकिन स्पष्ट रूप से हम करते हैं।

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

होमब्रे को प्रशासित करने के लिए लोगों को यहां सूडो चलाने की जरूरत नहीं है। आपको बस कुछ अनुमतियों को बदलने की आवश्यकता है। चूंकि आपके पास पहले से ही है:

होमबॉव को संशोधित करने की आवश्यकता वाले सभी उपयोगकर्ता व्यवस्थापक समूह के सदस्य हैं।

आपको दो और काम करने होंगे:

  1. सुनिश्चित करें कि सब कुछ /usr/localसमूह के अंतर्गत आता है admin; तथा
  2. सुनिश्चित करें कि समूह का कोई भी व्यक्ति adminकुछ भी लिख सकता है /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

और adminसमूह के किसी भी उपयोगकर्ता को मशीन पर होमब्रेव स्थापना का प्रबंधन करने में सक्षम होना चाहिए। यदि आपको किसी उपयोगकर्ता को व्यवस्थापक समूह में जोड़ना है तो इसे इस तरह पूरा किया जा सकता है:

 dseditgroup -o edit -a <username> -t user admin

(उस उपयोगकर्ता को विशेषाधिकारों के लिए फिर से लॉगिन करने की आवश्यकता होगी)।

मशीन पर पवित्रता के लिए, आप होमब्रे के अपने स्वयं के कांटे बनाने पर विचार कर सकते हैं और स्थानीय कांटे के लिए अपने स्थानीय होमब्रॉ गिट रिपॉजिटरी बिंदु पर रख सकते हैं । इससे आप अपने पर्यावरण के लिए Homebrew को अनुकूलित कर सकते हैं और उन पैकेजों के संस्करणों को नियंत्रित कर सकते हैं जिन्हें लोग brewकमांड के साथ इंस्टॉल करने में सक्षम हैं । कई लोगों को इंस्टॉल करने के साथ आप संस्करण समस्याओं या निर्भरता के मुद्दों में चला सकते हैं।


1
मेरे पास एक ही समस्या है और सुझाव के अनुसार समूह के स्वामित्व और समूह अनुमतियों को बदल दिया है। brew doctorअभी भी शिकायत है कि उदाहरण के /usr/local/includeलिए मैं लिखने योग्य नहीं है, भले ही मैं मैन्युअल रूप से सत्यापित कर सकता हूं कि मैं यहां एक फ़ाइल (उदाहरण के लिए echo "hello" > /usr/local/include/testfile) लिख सकता हूं । मैं एडमिन ग्रुप का सदस्य हूं। डिबगिंग के लिए कोई विचार?
एमजीडी

2
इस समाधान ने मेरे लिए काम किया, लेकिन यह होमब्रे के स्थानीय कैश को संबोधित नहीं करता है। मैं दौड़ने का सुझाव भी देता हूं:chmod -R g+w /Library/Caches/Homebrew
ड्रू दारा-अब्राम्स

मैं इस पर एक ब्लॉग पोस्ट पाया blog.strug.de/2012/06/my-homebrew-multi-user-setup और उस से एक स्क्रिप्ट अनुकूलित raw.githubusercontent.com/steshaw/shelly/master/bin/...
स्टीवन शॉ

2
ऐसा लगता है कि Homebrew ने वर्तमान उपयोगकर्ता की निर्देशिका में कैश को बदल दिया है। बस देखा: ==> एक काढ़ा अद्यतन करते समय माइग्रेटिंग / लाइब्रेरी / कैश / होमब्रेव टू / यूजर्स /ब्लूचैन.आदमिन/Library/Caches/Homebrew ...। अगर मैं इसे सही ढंग से व्याख्या कर रहा हूं, तो इसका मतलब है कि हमें अब होमब्रे के लिए विश्व स्तर पर लेखन योग्य कैश डायर के बारे में चिंता करने की आवश्यकता नहीं है।
एंडारेथ

इस समस्या वाले उच्च सिएरा उपयोगकर्ताओं के लिए अब आपको इसका उपयोग करने की आवश्यकता है: sudo chown -R $(whoami) $(brew --prefix)/*ऊपर दिए गए आदेशों के बजाय। इसे यहां
जेफ क्रैनबर्ग

7

आप व्यवस्थापक समूह के माध्यम से, या किसी अन्य उपयोगकर्ता समूह के माध्यम से एक से अधिक उपयोगकर्ता के लिए होमब्रेव अनुमतियां सक्षम कर सकते हैं। इसे कॉन्फ़िगर करने के लिए यहां थोड़ा विस्तारित नुस्खा है:

समूह को स्थानीय होमब्रेव निर्देशिका को स्थापित करने की आवश्यकता है। तो आवंटित / usr / स्थानीय करने के लिए व्यवस्थापक समूह (या अपनी पसंद के समूह) और समूह लिखने की अनुमति सक्षम:

chgrp -R admin /usr/local
chmod -R g+w /usr/local

इस समूह को होमबॉव के स्थानीय कैश फ़ार्मुलों और स्रोत फ़ाइलों / लाइब्रेरी / कैश / होमब्रेव के लिए अनुमतियों की आवश्यकता है :

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

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

Leif Hanack ने एक समान समाधान ब्लॉग किया है , जहां वह उद्देश्य के लिए समर्पित उपयोगकर्ता समूह काढ़ा बनाता है और कॉन्फ़िगर करता है ।

--Update 2015-08-20

मैंने हाल ही में होमबॉव एक्सेस के साथ एक अतिथि खाता स्थापित करने के लिए इस उत्तर का फिर से उपयोग किया। दूसरे व्यवस्थापक खाते से पीपा का उपयोग करने के लिए मुझे निम्नलिखित कमांड भी चलाने थे:

chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask

4

मैं बस स्वीकृत उत्तर पर टिप्पणी करने वाला था (लेकिन अभी तक इसके लिए प्रतिष्ठा नहीं है।)

Caskroom.io के उपयोगकर्ता के रूप में , मैं भी जोड़ने की सलाह दूंगा :

sudo chown -R admin /opt/homebrew-cask
sudo chmod -R g+w /opt/homebrew-cask
sudo chmod -R g+w  /Library/Caches/Homebrew/

पीपा के बाद से, homebrew के लिए एक बहुत ही उपयोगी विस्तार, अपनी सभी फ़ाइलों को डालता है /opt/homebrew-cask


1
क्या /optमुझे लगता है कि आप का मतलब है /usr/local? जैसा कि /optहाल ही में ओएस एक्स इंस्टॉल पर मौजूद नहीं है, होमब्रेव इंस्टॉल के बाद भी।
forquare

2016 के जून में, Homebrew-Cask (एक काढ़ा विस्तार) ने अपने Caskroom फ़ोल्डर के लिए डिफ़ॉल्ट स्थान को स्थानांतरित कर दिया /usr/local(या अधिक सटीक रूप से $(brew --prefix)) /opt/homebrew-caskइसलिए यह उत्तर अब मूट है, लेकिन इसे लिखे जाने पर मान्य था। देखें ले जाएँ डिफ़ॉल्ट caskroom स्थान # 21603
ज़ेन

1

आपको मार्ग को अनुमति देने की आवश्यकता है। कमांड लाइन में इसे चलाएं और आप जाना ठीक रहेगा। इसने मेरे लिए काम किया:

sudo chown -R $ USER / usr / स्थानीय


0

मैं समूह की अनुमति सेट करने के लिए मतदान करूंगा - और मुझे लगता है कि यह वही है जो इसके लिए है और इसमें सुरक्षा समस्या नहीं होनी चाहिए।

  • Sudo का उपयोग न करें।

tl; ड्र सूडो खतरनाक है, और आपने वैसे भी sudo के बिना TextMate.app स्थापित किया है।

होमब्रे को सुडो का उपयोग किए बिना काम करने के लिए डिज़ाइन किया गया है। आप इसका उपयोग करने का निर्णय ले सकते हैं लेकिन हम दृढ़ता से ऐसा नहीं करने की सलाह देते हैं। यदि आपने सूडो का उपयोग किया है और बग में चलते हैं तो इसका कारण हो सकता है। कृपया बग रिपोर्ट तब तक दर्ज न करें जब तक कि आप sudo का उपयोग किए बिना होमब्रे को खरोंच से पुनर्स्थापित करने के बाद इसे पुन: पेश नहीं कर सकते।


तो, आपकी सलाह होगी sudo chmod -R g+w /usr/local/?
Meltemi

हां, लेकिन आप इनमें से किसी एक का उपयोग करके दूसरी राय मांग सकते हैं: IRC (irc: //irc.freenode.net/#machomebrew); मेलिंग सूची (homebrew@librekind); ट्विटर ( twitter.com/machomebrew )
iolsmit
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.