मणि स्थापित करना या RubyGems को अपडेट करना अनुमति त्रुटि के साथ विफल रहता है



Answers

--user-install का उपयोग --user-install बजाय --user-install जोड़ने का प्रयास करें:

gem install mygem --user-install
Question

एक मणि स्थापित करने की कोशिश कर रहा है ( gem install mygem ) या अद्यतन RubyGems ( gem update --system ) इस त्रुटि के साथ विफल रहता है:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

किसी को भी यह हल करने का विचार है?




यह देखने के लिए जांचें कि आपका रूबी संस्करण सही है या नहीं। यदि नहीं, तो इसे बदलें।

यह मेरे लिए काम करता है:

$ rbenv global 1.9.3-p547
$ gem update --system



sudo gem update --system
sudo gem install (gemfile)



आप ऐसा क्यों नहीं करते:

sudo gem update --system



दो मार्ग हैं: या तो आरबीएनवी या आरवीएम का प्रयोग करें। नीचे दोनों के लिए व्यंजन हैं। ऐसा करने से पहले, आप शायद रत्नों के लिए स्थानीय दस्तावेजों की स्थापना बंद करना चाहते हैं।

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

फिर:

install rbenv

install ruby-build

चलाएँ:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

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

इसके बजाय वैकल्पिक उपयोग 'आरवीएम' के लिए: आरवीएम रन स्थापित करने के लिए :

rvm install 2.1.2
rvm use 2.1.2
gem update --system

इसका एक ही परिणाम है, आप स्थानीय रूबी और जेम सिस्टम के साथ समाप्त होते हैं जो सिस्टम संस्करणों में हस्तक्षेप नहीं करता है। होमब्रू, या ओवर-राइडिंग सिस्टम libs आदि की कोई आवश्यकता नहीं है।




मेरे लिए काम:

sudo gem uninstall cocoapods

sudo gem install cocoapods



सीडी / लाइब्रेरी / रूबी / जेम्स 2.0.0

खुला ।

जानकारी प्राप्त करें पर राइट क्लिक करें

लॉक को क्लिक करें

पासवर्ड रखें

सबकुछ पढ़ो और लिखो।




मैंने इसका इस्तेमाल किया और काम किया।

$ sudo chown myuser /var/lib/gems




हालांकि इनमें से बहुत से उत्तर सही हैं, और काम करेंगे, वे सबसे सही नहीं हैं क्योंकि वे असुरक्षित प्रथाओं के सेट का प्रतिनिधित्व करते हैं, या केवल आपको यह समस्या हल करने के लिए सिखाते हैं।

फ़ोल्डर के लिए सही लेखन अनुमति नहीं है एक आम समस्या है, आप इस बात से पीड़ित होंगे कि आप पाइथन पैकेज, नोड पैकेज, आदि स्थापित कर रहे हैं या नहीं।

sudo का उपयोग असुरक्षित है, क्योंकि यह पैकेज इंस्टॉलर को जो कुछ भी चाहता है उसे करने की अनुमति देता है, और जहां भी चाहें चीजें इंस्टॉल करता है। संक्षेप में, कोई ऐसा पैकेज लिख सकता है जो आपके कंप्यूटर में बैकडोर इंस्टॉल करता है और आपकी सभी क्रेडिट कार्ड की जानकारी चुरा लेता है।

आरबीएनवी जैसे वर्चुअल वातावरण का उपयोग करना सीखना एक बड़ी बात है कि कैसे करना है, क्योंकि यह आपको अपने एप्लिकेशन को पैकेज करने और इसे आसानी से बाहर भेजने की अनुमति देता है। मैं अत्यधिक वर्चुअल वातावरण का उपयोग करने की सलाह देते हैं। साथ ही, यदि आप वर्चुअल वातावरण से अकुशल हैं तो आप अपने सिस्टम पर बार-बार पैकेज इंस्टॉल कर सकते हैं, जिसे आप केवल वैश्विक स्तर पर इंस्टॉल कर सकते हैं, और वर्चुअल रूप से उपयोग कर सकते हैं। मुझे rbenv के बारे में पता नहीं है, लेकिन मैं वर्चुअलनेव के साथ बहुत कुछ करता हूं।

सच्चाई

जवाब chown , और chown आपको मुक्त कर देगा।

मुझे नहीं पता कि आपको कमांड लाइन पसंद है या नहीं, लेकिन यह किसी भी प्रोजेक्ट पर किसी भी उपकरण के साथ काम करेगा जो आपके सिस्टम में संकुल को एक हवा में स्थापित करता है।

जहां तक ​​मैं कह सकता हूं, chown गया है, परिवर्तन स्वामित्व के लिए खड़ा है।

इस जवाब की तलाश में आने का कारण यह है कि gem install ने आज इस त्रुटि को फेंक दिया:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

यह chown का उपयोग करने का एक सही अवसर है। आप देखते हैं कि रुबी ने हमें वह निर्देशिका दी है जिसकी इसे एक्सेस की आवश्यकता है, और ऐसा लगता है कि यह एक निर्देशिका है जो अक्सर इसका उपयोग करेगी।

इस मामले में, समस्या को हल करने के लिए केवल तीन चीजें जानने की जरूरत है, लेकिन chown बहुत अधिक शक्तिशाली है, और अब मैं आपको प्रदर्शित करने की तुलना में बहुत अधिक लचीलापन प्रदान करता हूं। अधिक जानकारी के लिए कृपया नीचे दिए गए स्रोत का संदर्भ लें।

दो चीजें

  1. उपयोगकर्ता नाम
  2. निर्देशिका

यदि आप एक शेल खोज रहे हैं तो उपयोगकर्ता नाम आसान है। बस प्रॉम्प्ट देखें। मेरा दिखता है:

breadly@breadly-desktop:~\Desktop

वर्तमान उपयोगकर्ता सिर्फ @ से पहले नाम है। हम त्रुटि संदेशों से निर्देशिका जानते हैं, लेकिन आपके पास दो विकल्प हैं। आप या तो ../gems/1.9.1 का उपयोग कर वर्तमान संस्करण में अपनी अनुमति को सीमित कर सकते हैं, या ../gems/1.9.1 का उपयोग करके सभी संस्करणों के रत्नों के लिए खुद को लिखने की अनुमति दे ../gems

वास्तव में स्वामित्व बदलने के लिए आदेश इस तरह दिखेगा।

chown -R $(whoami) /absolute/path/to/directory

-R को ध्वज के रूप में जाना जाता है और -R ध्वज आमतौर पर कुछ करने के लिए कमांड को बताता है, या दूसरे शब्दों में निर्देशिका में निहित हर चीज पर कमांड करता है, और निर्देशिका में निहित सभी चीजें हैं, और तब तक जब तक कुछ और नहीं है।




मुझे एक rbenv rehash करने की ज़रूरत थी ताकि यह मेरी स्थानीय जेम लाइब्रेरी को इंगित करे।

ऐसा लगता है कि आपको अपने मणि प्रबंधक को सिस्टम लाइब्रेरी पर इशारा करते हुए मिला है, इसलिए, अनुमतियों के साथ गड़बड़ करने की बजाय, अपने प्रबंधक के लिए स्थानीय रूप से इंगित करने के लिए "रीहाश" के बराबर करें।






Related