यदि कोई अनुमतियाँ त्रुटि के साथ विफल होता है तो मणि को कैसे स्थापित करें या रूबीगम्स को अपडेट करें


559

मैं gem install mygemरूबीजम्स का उपयोग करके या अपडेट करके एक मणि स्थापित करने का प्रयास कर रहा हूं gem update --system, और यह इस त्रुटि के साथ विफल होता है:

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

क्या किसी को यह पता है कि इसे कैसे हल किया जाए?


5
यहाँ मेरा समाधान है: stackoverflow.com/questions/34071868/…
लांसपी

2
मेरी त्रुटि इसलिए हुई क्योंकि im कर रहा है: मणि अद्यतन कोकोपोड्स सही: सुडोल रत्न अद्यतन कोकोपोड्स
अभिषेक थपलियाल

60
sudo chown -R $USER /Library/Ruby/Gems/
वास्कॉर्ट

2
बस इस आदेश का उपयोग करते हुए मेरे लिए काम किया: सुदो रत्न ने मायगेम को स्थापित किया
जयप्रकाश दुबे

1
मैं zsh खोल का उपयोग कर रहा था और यह ~ / .zshrc में पथ की समस्या थी। मैंने फ़ाइल के अंत में इस लाइन का उपयोग किया और इसने मेरे लिए काम किया: PATH = "$ HOME / .rbenv / shims: $ PATH"
निर्यात करें

जवाबों:


317

आपके पास /Library/Ruby/Gems/1.8 निर्देशिका में अनुमतियाँ नहीं हैं।

वास्तव में इसका मतलब है कि, आपको वहां लिखने की अनुमति नहीं है।

यह Apple द्वारा स्थापित रूबी का संस्करण है, अपने स्वयं के उपयोग के लिए। हालांकि यह मामूली संशोधन करने के लिए ठीक है कि यदि आप जानते हैं कि आप क्या कर रहे हैं , क्योंकि आप अनुमतियों की समस्या के बारे में निश्चित नहीं हैं, तो मैं कहूंगा कि उस ट्रैक के साथ जारी रखना अच्छा नहीं है।

इसके बजाय, मैं दृढ़ता से सुझाव दूंगा कि आप अपने घर की डायरेक्टरी में सैंडबॉक्स में स्थापित एक अलग रूबी का प्रबंधन करने के लिए या तो rbenv या RVM का उपयोग करें, जिसे आप सिस्टम रूबी में गड़बड़ी की चिंता किए बिना संशोधित / मोड़ / धुरी / बदल सकते हैं।

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


176
हालांकि आपको एक अलग रूबी लाइब्रेरी का उपयोग करने की आवश्यकता नहीं है। जैसा कि माइकल ने ऊपर सुझाया है, ठीक वैसे ही sud सुडो ’को अपने सामने रखें।
सेराओज़ेस

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

203
मेरे जैसे उन लोगों के लिए जो वास्तव में कोई माणिक देव नहीं करते हैं और आधे घंटे के लिए यह जानने की कोशिश नहीं करना चाहते हैं कि ये सभी क्रिस्टल चीजें क्या हैं। brew install rubyएक साफ तरीके से अपने निर्भरता के मुद्दों को हल करेगा जो कि ऐप्पल इंस्टॉल को न्यूक नहीं करता है। यदि आप पहले से ही sudoशुरुआती इंस्टॉल पर एक अद्यतन कर रहे हैं और इस बात से चिंतित हैं कि आपने क्या किया है, तो आपको इसे इस से पूर्ववत करने में सक्षम होना चाहिए:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
लुई

21
" I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix" और यह सिर्फ इसलिए अधिक वजन जोड़ता है कि लोगों को इसका उपयोग क्यों नहीं करना चाहिए sudoया chown। उच्छ्वास ....
टिन मैन

55
हल: एल कैप्टन पर brew install rubyबस टर्मिनल को बंद करने और फिर से खोलने के बाद।
फेमिना

420

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

gem install mygem --user-install

4
मुझे नहीं पता कि आपका उत्तर पहले क्यों नहीं पोस्ट किया गया था। --user-installविकल्प जाहिरा तौर पर किया गया है थोड़ी देर के लिए चारों ओर से किया गया। काश, आपने यह पहले लिखा होता। =)
माइकल - जहां का क्ले शिर्की

7
इसके लिए शीर्ष पर जाने की आवश्यकता है! सुडो या सु के साथ इंस्टॉल करना एक बुरा विचार है क्योंकि आप मॉड्यूल पर एक अनुमति प्रणाली लागू कर रहे हैं और संभवतः विश्व स्तर पर स्थापित पैकेज अन्यथा स्थापित पैकेज या अन्य परियोजनाओं की निर्भरता से टकरा सकते हैं। Rbenv का उपयोग करने के लिए आपको एक अन्य सॉफ़्टवेयर स्थापित करने और जटिलता की एक परत जोड़ने की आवश्यकता होती है।
ह्यूबर्ट ग्रेज्सकोविआक

7
यह काम करता है, लेकिन चेतावनी देता है: 'चेतावनी: आपके पास / PUH में /User/<username>/.gem/ruby/2.0.0/bin नहीं है, मणि निष्पादक नहीं चलेंगे।' निम्नलिखित लिंक आपके पथ को अपडेट करने के तरीके (vi का उपयोग किए बिना) hathaway.cc/post/69201163472/…
6:12 बजे dawid

4
यह सरल और तार्किक है। माणिक पथ जोड़ें यदि आप अपने bashrc में नहीं हैं if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi <br> स्रोत: guide.rubygems.org/faqs/#user-install
इंद्र कुमार राठौर

1
क्या यह एप्पल (माणिक स्थापित) प्रणाली के साथ पेंच कर सकता है?
डेनियल स्प्रिंगर

93

आपको वास्तव में रूबी संस्करण प्रबंधक का उपयोग करना चाहिए।

ठीक से उपयोग करने से एक gem updateकमांड निष्पादित करते समय आपकी अनुमति समस्या को रोक सकती है और हल कर सकती है ।

मैं रेंबव की सलाह देता हूं

हालाँकि, जब आप रूबी संस्करण प्रबंधक का उपयोग करते हैं, तब भी आपको वही त्रुटि संदेश मिल सकता है।

यदि आप करते हैं, और आप rbenv का उपयोग कर रहे हैं, तो बस सत्यापित करें कि ~/.rbenv/shimsनिर्देशिका रूबी के लिए पथ से पहले है।

$ echo $PATH आपको आपके लोड पथ का क्रम दिखाएगा।

यदि आप पाते हैं कि आपकी शिमस निर्देशिका आपके सिस्टम रूबी बिन निर्देशिका के बाद आती है, तो अपनी ~/.bashrcफ़ाइल को संपादित करें और इसे अपने अंतिम निर्यात के रूप में डालें: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v आपको दिखाता है कि आप रूबी के किस संस्करण का उपयोग कर रहे हैं

इससे पता चलता है कि मैं वर्तमान में रूबी के सिस्टम संस्करण का उपयोग कर रहा हूं (आमतौर पर अच्छा नहीं)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 मुझे एक नए, पूर्व-स्थापित संस्करण पर स्विच करता है (नीचे संदर्भ देखें)।

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

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

आपको आमतौर पर sudo के साथ एक रत्न कमांड प्रस्तुत करने की आवश्यकता नहीं होनी चाहिए। यदि आपको ऐसा करने की आवश्यकता महसूस होती है, तो शायद कुछ गलत है।

Rbenv के बारे में जानकारी के लिए निम्नलिखित देखें:


7
rbenvयदि आप होमब्रेव इंस्टॉलेशन निर्देशों का पालन करते हैं , तो आपको अपने आप को पास करने के साथ गड़बड़ नहीं करना चाहिए , यदि आपको eval "$(rbenv init -)"अपने शेल कॉन्फ़िगरेशन में जोड़ना है, और आपको rbenvअपने PATHलिए स्थापित करने का ध्यान रखना चाहिए ।

धन्यवाद। मैं 'rbenv ग्लोबल' भूल गया था इसलिए मैं अभी भी सिस्टम माणिक का उपयोग कर रहा था, और मणि स्थापित करना विफल हो रहा था।
ग्राहम पर्क

75

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

sudo gem update --system

39
रत्नों को जड़ के रूप में स्थापित करना अच्छा विचार नहीं है। stackoverflow.com/questions/2119064/…
14'14

के साथ समस्या थी brew upgrade Error: Permission denied...। यह तय किया। धन्यवाद!
ओस्ताप एंड्रीसिव

12
SUDO का उपयोग कभी न करें, यदि आपको ऐसा करना है, तो आपने अपने सेटअप में कुछ गलत किया है। कृपया rbenv या rvm का उपयोग करें।
क्रिस होफ

14
क्यों हर कोई अनुमति के लिए समस्याओं का जवाब देता है बस एक कमांड के सामने हमेशा सुडोल फेंकना है? यह सबसे अच्छा अभ्यास कैसे है?
स्टीवन

hyh: qzc.xcodeproj ylgwhyh $ gem इंस्‍टॉल करें cocoapods ERROR: मणि को निष्पादित करते समय ... (Gem :: FilePermissionError) आपके पास /Library/Rady/Gems/2.0.0 निर्देशिका के लिए अनुमति नहीं है।
ylgwhyh

40

यह MacOs Mojave और MacOs कैटालिना पर एक साफ तरीके से मुद्दे को ठीक करेगा :

brew install ruby

फिर GEM_HOME को अपनी उपयोगकर्ता निर्देशिका में सेट करें। टर्मिनल पर:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

या यदि पर Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

2
आपको यह कैसे पता चला? काम किया!
कुजडू ३०'१

2
आप ही है वह आदमी! उच्च पाँच, यह वास्तव में एक आकर्षण की तरह काम करता है। बहुत बहुत धन्यवाद।
mrDinkelman

1
मेरे चलने तक यह मेरे काम नहीं आया xcode-select --install। एक्सटेंशन को संकलित करने के लिए यह आवश्यक है।
मार्क पेरिन-पेलेटियर

मैंने इसे चलाया और मैं इनके द्वारा किए गए परिवर्तनों को रीसेट करने में सक्षम होना चाहता हूं, क्या आप जानते हैं कि इसे कैसे वापस करना है? @Fmessina
करेनएने

यह काम करना चाहिए: अपनी ~/.bashrcया ~/.zshrcफ़ाइल को संपादित करें , जोड़े गए 3 लाइनों को हटा दें, और फिर source ~/.bashrcकमांड को फिर से चलाएं
Fmessina

34

मेरे लिए समस्या rbenvविश्व स्तर पर उचित संस्करण का उपयोग करने और भूलने की वजह से थी ।

इसलिए मुझे इसके साथ सेट करना पड़ा rbenv global xxx

मेरे मामले में मैंने स्थापित किया था 2.0.0-p247इसलिए मुझे आदेश जारी करना पड़ा:

rbenv global 2.0.0-p247
rbenv rehash

तब सब ठीक काम कर रहा था।


3
उन लोगों के लिए जो पहले से ही rbenv का उपयोग कर रहे हैं और OSX को एक नए संस्करण में अपग्रेड करने के बाद जवाहरात स्थापित करते समय एक अनुमति त्रुटि प्राप्त करना शुरू कर दिया है: आपको rbenv global 2.1.1उदाहरण के लिए rbenv संस्करण सेट करके शुरू करना चाहिए और फिर उसके साथ पालन करना चाहिए rbenv rehash। अब अपने gem installआदेश को फिर से चलाना ।
njappboy

1
^ यह + पुनरारंभ टर्मिनल।
XåpplI'-I0llwlg'I -

1
भविष्य के खोजकर्ता: rbenv rehash को पदावनत किया गया है github.com/rbenv/rbenv-gem-rehash
TCannadySF

मेरे लिए पूरी तरह से काम किया! यह rbenv rehashमैं गायब था।
jamesmarkcook

वर्थ नोटिंग कि यह सिस्टम रूबी है जिसमें अनुमतियों की कमी होती है और यदि कोई वैश्विक माणिक सेट नहीं किया गया होता है तो रैनेब सिस्टम रूबी का उपयोग कर रहा होता है। इसके साथ सत्यापित किया जाए rbenv versions
डेनिस

23

आपको अपने रास्तों को सही करने की आवश्यकता है।

यह निर्धारित करने के लिए कि यह फिक्स काम करेगा, निम्नलिखित को चलाएँ:

which gem

यह एक निर्देशिका का उत्पादन करना चाहिए जिसकी आपको अनुमति नहीं है:

/usr/bin/gem

इसे ठीक करने के लिए निम्न चरणों का पालन करें:

  1. उस पथ को निर्धारित करें जिसे आपको अपनी प्रोफ़ाइल पर कॉपी करने की आवश्यकता है:

    rbenv init -

    आउटपुट की पहली पंक्ति वह रेखा है जिसे आपको अपनी प्रोफ़ाइल पर कॉपी करने की आवश्यकता है:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. अपने प्रोफ़ाइल में पथ की प्रतिलिपि बनाएँ और इसे सहेजें।

  3. अपनी प्रोफ़ाइल पुनः लोड करें ( source ~/.zshenvमेरे लिए)।

  4. भागो rbenv rehash

अब जब आप दौड़ते हैं which gemतो आपको एक स्थानीय रास्ता मिलना चाहिए जिसकी आपको अनुमति है:

/Users/justin/.rbenv/shims/gem

मेरी स्थिति में यही समस्या थी। सभी आवश्यक परिवर्तन करने के लिए आपको eval "$(rbenv init -)"अपने में शामिल करने में सक्षम होना चाहिए ~/.bash_profile
नी

सबसे बढ़िया उत्तर। मेरी प्रोफ़ाइल का नाम .bash_profile था और आप फ़ाइल को इस तरह खोल सकते हैं: ~ ~ .bash_profile; खुला ~ / .bash_profile और बिंदु 1 पर आपके द्वारा बताई गई लाइन जोड़ें।
कारमेनए


17

इसने मेरे लिए काम किया। साथ ही, यदि आपने रत्नों को पहले जड़ के रूप में स्थापित किया है, तो यह आपके लिए स्वामित्व को वापस बदलकर (बेहतर सुरक्षा-वार) उस समस्या को ठीक करता है।

sudo chown -R `whoami` /Library/Ruby/Gems

1
बड़ा नहीं! /Libraryफ़ोल्डर पर अनुमति कभी नहीं बदलें , भविष्य के अपडेट में सिस्टम टूट सकता है। (देर से जवाब के लिए खेद है)
Raptor

@ रैप्टर मैं सबफ़ोल्डर पर अनुमतियाँ संशोधित कर रहा हूँ, "लाइब्रेरी /" नहीं। मेरे मामले में, मैंने गलती से रत्नों को जड़ के रूप में स्थापित कर दिया था, इसलिए मैं इसे पूर्ववत करना चाहता था। कोई नकारात्मक परिणाम नहीं हैं जो मैं सैद्धांतिक रूप से सोच सकता हूं और न ही ऐसा कोई भी परिणाम है जो मैंने देखा है। मैं उत्सुक हूँ - आपको क्यों लगता है कि यह एक बुरा विचार है?
thebiggestlebowski

पथ व्यवस्था के लिए है। मैकओएस के आगे के अपडेट टूट सकते हैं।
रैप्टर

इस स्थान पर डिफ़ॉल्ट रूप से मणि स्थापित है। यह अनुपयोगी था क्योंकि यह मेरे सामान्य उपयोगकर्ता के बजाय गलती से रूट (सुडो) के रूप में स्थापित हो गया था। मैंने जो किया था उसका परिणाम वैसा ही था जैसा कि मैंने पहली जगह में $ USER के रूप में स्थापित किया था। मुझे नुकसान नहीं दिख रहा है। यहां अन्य अधिकांश उत्तर समान परिणाम / समाधान सुझाते हैं, लेकिन इसे प्राप्त करने के विभिन्न तरीके। मुझे अभी भी समस्या नहीं दिख रही है। क्या आप कह रहे हैं कि रत्न / पुस्तकालय में स्थापित नहीं होने चाहिए?
thebiggestlebowski

15

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

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

फिर:

install rbenv

install ruby-build

Daud:

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

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


13

मैंने यहsudo पाया कि कम मणि के लिए कैसे :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. इसमें निर्यात जोड़ें .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. और अंत में इसे अपने में जोड़ें ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system


मैंने इस्तेमाल किया brew install rebenv ruby-build, फिर systemमेरी निर्देशिका के बाद है? किसी भी विचार यह क्या कारण है, और कैसे से छुटकारा पाने के लिए system?
7537247 4

13

नीचे मेरे मूल उत्तर का उपयोग करने से पहले नत्थनवी के उत्तर का प्रयास करें। उसकी सिफारिश अपने --user-installउद्देश्य के साथ .bash_profileया अपने रूबी संस्करण का निर्धारण किए बिना उसी उद्देश्य को पूरा करना चाहिए ।


यदि आप एक विशिष्ट रूबी संस्करण के बारे में चिंतित नहीं हैं, तो आप भारी-भरकम रूबी पर्यावरण प्रबंधक विकल्पों को छोड़ सकते हैं , और बस इन पंक्तियों को इसमें जोड़ सकते हैं ~/.bash_profile:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

पथ मूल आउटपुट से चुराया गया है gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

कोई sudoआईएनजी की आवश्यकता नहीं है, और आप पहले से स्थापित रूबी, ऐप्पल के सौजन्य से उपयोग कर सकते हैं।


3
+1: यह मेरे लिए बहुत अच्छा रहा। हर कोई उस मशीन का सिस्टम प्रशासक नहीं है जिसका वे उपयोग कर रहे हैं, और इसलिए हर किसी के पास 'sudo', 'chown' या इसी तरह के अन्य उपकरण नहीं हैं। इसी तरह की नस में, लोगों को "मणि इंस्टॉल - वूसर-इनस्टॉल" के बारे में पता होना चाहिए जो सभी उपयोगकर्ताओं द्वारा साझा किए गए के बजाय उपयोगकर्ता के होम डायरेक्टरी में एक डायरेक्टरी को मणि स्थापित करता है।
कुछ लड़के

12

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

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


3
भविष्य के खोजकर्ता: rbenv rehash को पदावनत किया गया है github.com/rbenv/rbenv-gem-rehash
TCannadySF

12

पुराना और समझदार

मैं यहाँ क्या कहता हूँ, ऐसा मत करो, बस किसी भी समय तुम से सावधान रहना जानता हूँ sudo। आप शायद rbenvजो कुछ भी काम कर रहे हैं उसे अलग करना चाहते हैं।


एक तरीका है

के बारे में जानना 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

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

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

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


इसके अलावा, यदि आप यह जानना चाहते हैं कि आपका उपयोगकर्ता किस समूह में है तो आप इसका उल्लेख कर सकते हैं। stackoverflow.com/questions/350141/…
ब्रीडली

3
हालाँकि, यदि आप इसे / usr / स्थानीय / बिन निर्देशिका में स्थापित करना है, तो आप इसे बदलने के बारे में सावधान रहना चाहते हैं।
Breedly

16
/ Usr, / Library या / var रास्तों में किसी भी चीज़ के स्वामित्व को दूसरों के बीच बदलना एक बुरा विचार है। सिस्टम फ़ाइलों और ड्राइवरों के सुलभ नहीं होने के कारण रुक सकता है, और यदि इंस्टॉलर को यह पता चलता है कि भविष्य में रूट: पहिए का स्वामित्व नहीं है, तो भविष्य के अपडेट टूट सकते हैं। क्षति को ठीक करना वास्तव में कठिन हो सकता है और आमतौर पर ओएस को पुनर्स्थापित करके सबसे अच्छा किया जाता है। Naive / अनुभवहीन उपयोगकर्ता OS के बारे में यह जानने के लिए पर्याप्त नहीं जानते हैं कि कौन सी फाइलें / निर्देशिका संभवतः सुरक्षित हो सकती हैं और उन्हें घर पर यह प्रयास नहीं करने के लिए सावधानी बरतनी चाहिए।
टीन मैन

योग्य यह एक शर्मनाक जवाब है। :) पुराने और समझदार अब मुझे लगता है।
ब्रीड करें

11

मैंने अपने मैक को स्वरूपित किया था और कई सुझाए गए समाधान मेरे काम नहीं आए। मेरे लिए काम करने वाले ये कमांड सही क्रम में हैं:

  1. होमब्रे स्थापित करें:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. रूबी स्थापित करें:

    brew install ruby
  3. कम्पास स्थापित करें:

    sudo gem install compass

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


6

मेरे लिए काम:

sudo gem uninstall cocoapods

sudo gem install cocoapods

कमाल है मेरे लिए काम! धन्यवाद। रेन्बेव या आरवीएम स्थापित करने का सहेजा गया प्रयास
नक्सिर

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

@SomeGuy: "इंस्टॉलर शाब्दिक रूप से कुछ भी कर सकता है" ... यह अधिक संभावना है कि उपयोगकर्ता स्वयं कमांड को वसा-उंगली कर सकता है और सिस्टम को मंगा सकता है। मैं उस समय के बारे में नहीं सोच सकता जब एक इंस्टॉलर ने मेरे सिस्टम को गड़बड़ कर दिया, लेकिन मैं स्पष्ट रूप से उस समय को याद रख सकता हूं जो मैंने किया था। sudoएक ऐसा आदेश है जो newbies को पसंद है क्योंकि यह गलत काम को इतनी आसानी से करना संभव बनाता है, और इसका उपयोग करते समय उचित रूप से पागल होने में सीखने में सालों लग जाते हैं।
टिन मैन

1
सबसे अच्छा जवाब !!!! इन 2 कमांड को चलाने के बाद, कृपया टर्मिनल को पुनरारंभ करें और, यह सब !!! बहुत बहुत धन्यवाद!!!
nosequeweaponer

4

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

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

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

यह बेहतर उपाय है: update> chown। धन्यवाद! । मुझे भी दौड़ना थाbrew install ruby
जोस ललौस जूल

4

द्वारा rbenv स्थापित करें brew install rbenv ;

फिर रखें eval "$(rbenv init -)" ~ / .bash_profile (या MacOS के ~ .zshrc) के अंत में ;

एक नया टर्मिनल खोलें और gem install ***काम करेंगे!


मेरे लिए काम नहीं किया ❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
23

2

जैसा कि bobbdelsol ने बताया है, rehash ने मेरे लिए काम किया:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

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


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...

sooo करीब। अभी तक "त्रुटि: मणि निष्पादित करते समय ... (Gem :: FilePermissionError) आपके पास /Library/Ruby/Gems/2.0.0 निर्देशिका के लिए लेखन अनुमति नहीं है।"
जीलार्डो

1

सफलता के साथ MacOS Mojave पर परीक्षण किया गया:

  1. अपने सभी पुराने रूबी संस्करणों की स्थापना रद्द करें (मान लें कि आपके पास 2.00 और 2.3.0 हैं):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

  2. नया रूबी संस्करण स्थापित करें:

    $ brew install ruby

  3. अपने संस्करण में एक डिफ़ॉल्ट उपनाम सेट करें:

    $ rvm alias create default ruby

  4. अपने सिस्टम को रिबूट करें क्योंकि यह सबसे सुरक्षित तरीका है जब आपका कंप्यूटर नए रूबी संस्करण को लोड करता है, हाल ही में स्थापित किया गया है।

प्रक्रिया से ऊपर होने के बाद, आप किसी भी gemकमांड को सफलतापूर्वक चला सकते हैं ।


-2

cd /Library/Ruby/Gems/2.0.0

खुला हुआ ।

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

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

पासवर्ड रखें

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


1
कृपया पठनीयता के लिए अपने उत्तर को प्रारूपित करने के लिए समय निकालें। आपके द्वारा शोध और व्याख्या में किए गए प्रयास से भुगतान बंद हो जाता है।
टीन मैन

-2

उन फ़ोल्डर में somethin बनाने के लिए उपयोगकर्ता $ whoami दें

sudo chown -R user /Library/Ruby/Gems/2.0.0

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

-3

आप उपयोग कर सकते हैं: मणि स्थापित कोकोपोड्स --pre --user


-4

मणि स्थापित करना या रूबीजीम्स को अपडेट करना अनुमतियों की त्रुटि के साथ विफल हो जाता है फिर यह कमांड टाइप करें

sudo gem install cocoapods

1
इसे अन्य उत्तरों में शामिल किया गया है। कृपया यह सुनिश्चित करने के लिए कि आपके द्वारा कुछ नया प्रदान करने से पहले अन्य उत्तरों को पढ़ें।
टीन मैन


-18

त्रुटि का कारण है क्योंकि आप टर्मिनल पर रूट उपयोगकर्ता के रूप में लॉग इन नहीं हैं।

यदि आपके पास पहले से ही रूट उपयोग टर्मिनल में अपने मैक पर सक्षम है

$ su

यदि आपके पास रूट उपयोगकर्ता नहीं है, तो आपको निम्न चरणों का उपयोग करके इसे सक्षम करने की आवश्यकता है

  1. Apple मेनू से सिस्टम प्राथमिकताएँ चुनें ...।
  2. दृश्य मेनू से उपयोगकर्ता और समूह चुनें।
  3. लॉक पर क्लिक करें और एक व्यवस्थापक खाते के रूप में प्रमाणित करें।
  4. लॉगिन ऑप्शन पर क्लिक करें…।
  5. नीचे दाईं ओर "संपादित करें ..." या "जुड़ें ..." बटन पर क्लिक करें।
  6. "ओपन डायरेक्टरी यूटिलिटी ..." बटन पर क्लिक करें।
  7. डायरेक्टरी यूटिलिटी विंडो में लॉक पर क्लिक करें।
  8. एक व्यवस्थापक खाता नाम और पासवर्ड दर्ज करें, फिर ठीक पर क्लिक करें।
  9. संपादन मेनू से सक्षम रूट उपयोगकर्ता चुनें।
  10. पासवर्ड और वेरीफाई फ़ील्ड दोनों में आप जिस रूट पासवर्ड का उपयोग करना चाहते हैं, उसे दर्ज करें, फिर ठीक पर क्लिक करें।

Http://support.apple.com/kb/ht1528 पर अधिक

कम से कम कुछ घंटों के लिए अटक जाने के बाद यह मेरे लिए काम करता है।


वोट डाउन क्यों? क्या आप लोग ऐसा करने का कारण लिख सकते हैं?
मोहम्मद आरिफ

8
रत्नों को जड़ के रूप में स्थापित करना एक बुरा विचार है। stackoverflow.com/questions/2119064/…
spuder
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.