आपके पास /Library/Ruby/Gems/2.3.0 निर्देशिका के लिए लिखित अनुमति नहीं है। (मैक उपयोगकर्ता)


157

नीचे मुझे क्या करना है।

चश्मा चलाने के लिए, आपको RSpec स्थापित करना होगा। सबसे पहले, gem install bundlerअपने प्रोजेक्ट के रूट डायरेक्टरी में दौड़ें । फिर, भागो bundle install। एक एकल युक्ति फ़ाइल चलाने के लिए, इस तरह से एक कमांड चलाएँ bundle exec rspec spec/00_hello_spec.rb:। एक बार में सभी स्पेक्स को चलाने के लिए, रन करें bundle exec rspec

इसलिए, मैंने gem install bundlerटर्मिनल में टाइप किया, और त्रुटि मिली:

आपके पास /Library/Ruby/Gems/2.3.0 निर्देशिका के लिए लिखित अनुमति नहीं है।

और यह परमाणु में प्रोजेक्ट फाइल में था

source "https://rubygems.org"
gem "rspec", "~> 3.2.0"

मेरा सवाल यह है कि:

ऐसा लगता है जैसे टर्मिनल मुझे प्रतिक्रिया दे रहा है क्योंकि मैं माणिक पर कुछ भी बदलने के लिए नहीं हूं, और मुझे bundle installपरमाणु के अंदर की आवश्यकता है ? क्या कोई मुझे बता सकता है कि परमाणु का उपयोग कैसे करें या परमाणु में कुछ भी चलाएं?

जवाबों:


278

अद्यतन: जब से आप एक मैक पर रूबी जवाहरात स्थापित कर सकते हैं विभिन्न तरीकों का एक बहुत विस्तृत विवरण लिखा है। स्क्रिप्ट का उपयोग करने की मेरी मूल सिफारिश अभी भी खड़ी है, लेकिन मेरा लेख अधिक विवरण में है: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/

आप सही हैं कि macOS आपको अपने मैक के साथ आने वाले रूबी संस्करण के साथ कुछ भी बदलने नहीं देगा। हालांकि, bundlerरूबी के एक अलग संस्करण का उपयोग करके रत्नों को स्थापित करना संभव है जो ऐप्पल द्वारा प्रदान किए गए किसी के साथ हस्तक्षेप नहीं करता है।

sudoरत्नों को स्थापित करने के लिए उपयोग करना , या सिस्टम फ़ाइलों और निर्देशिकाओं की अनुमतियों को बदलना दृढ़ता से हतोत्साहित किया जाता है, भले ही आपको पता हो कि आप क्या कर रहे हैं। क्या हम कृपया यह बुरी सलाह देना बंद कर सकते हैं? यहां मैंने एक विस्तृत लेख लिखा है जिसमें दिखाया गया है कि कैसे sudo gem installआप अपने कंप्यूटर को मिटा सकते हैं: https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/

समाधान में दो मुख्य चरण शामिल हैं:

  1. रूबी का एक अलग संस्करण स्थापित करें जो आपके मैक के साथ आए किसी भी व्यक्ति के साथ हस्तक्षेप नहीं करता है।
  2. अपने PATHऐसे अपडेट करें कि नए रूबी संस्करण का स्थान पहले में है PATH। कुछ उपकरण आपके लिए यह स्वचालित रूप से करते हैं। यदि आप इससे परिचित नहीं हैं PATHऔर यह कैसे काम करता है, तो मेरी मार्गदर्शिका पढ़ें ।

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

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

फिर, रूबी के एक अलग संस्करण को स्थापित करने के दो सबसे आसान तरीके हैं:

यदि आप कई रूबी संस्करणों के बीच आसानी से स्विच करने का लचीलापन चाहते हैं [RECOMMENDED]

इन चार विकल्पों में से एक चुनें:

  • क्रुबी और माणिक-स्थापित - मेरी व्यक्तिगत सिफारिशें और जो मेरी स्क्रिप्ट द्वारा स्वचालित रूप से स्थापित हैं। ये Homebrew के साथ स्थापित किया जा सकता है:
brew install chruby ruby-install
  • rbenv - Homebrew के साथ स्थापित किया जा सकता है

  • RVM

  • asdf

यदि आपने चुना chrubyऔर ruby-install, तो आप इस तरह नवीनतम रूबी स्थापित कर सकते हैं:

ruby-install ruby

एक बार जब आप सब कुछ स्थापित कर लेते हैं और अपने टूल को ऊपर .zshrcया .bash_profileनिर्देशों के अनुसार कॉन्फ़िगर कर लेते हैं , तो टर्मिनल से बाहर निकलें और पुनः आरंभ करें, फिर रूबी के संस्करण पर स्विच करें जो आप चाहते हैं। के मामले में chruby, यह कुछ इस तरह होगा:

chruby 2.7.2

आपको कॉन्फ़िगर करने की आवश्यकता है .zshrcया .bash_profileआप किस शेल का उपयोग कर रहे हैं, इस पर निर्भर करता है। यदि आप निश्चित नहीं हैं, तो इस गाइड को पढ़ें: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

अगर आपको पता है कि आपको एक ही समय में रूबी के एक से अधिक संस्करण की आवश्यकता नहीं है (इसके अलावा जो macOS के साथ आया है)

  • Homebrew के साथ माणिक स्थापित करें:
brew install ruby

फिर अपने अपडेट PATHको चलाकर ( 2.7.0अपने नए इंस्टॉल किए गए संस्करण के साथ बदलें ):

echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc

फिर इन परिवर्तनों को प्रभावी करने के लिए अपने शेल को "रिफ्रेश" करें:

source ~/.zshrc

या आप एक नया टर्मिनल टैब खोल सकते हैं, या टर्मिनल को छोड़ सकते हैं और पुनः आरंभ कर सकते हैं।

बदलें .zshrcके साथ .bash_profileआप बैश उपयोग कर रहे हैं। यदि आप सुनिश्चित नहीं हैं कि आप किस शेल का उपयोग कर रहे हैं, तो इस गाइड को पढ़ें: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

यह जाँचने के लिए कि आप अब रूबी के गैर-सिस्टम संस्करण का उपयोग कर रहे हैं, आप निम्न कमांड चला सकते हैं:

which ruby

इसके अलावा कुछ और होना चाहिए /usr/bin/ruby

ruby -v

यदि आप macOS कैटालिना पर हैं तो यह 2.6.3 के अलावा कुछ और होना चाहिए। आज तक, 2.7.2 नवीनतम रूबी संस्करण है।

एक बार जब आपके पास रूबी का यह नया संस्करण स्थापित हो जाता है, तो आप अब बंडल (या किसी अन्य मणि) को स्थापित कर सकते हैं:

gem install bundler

4
यदि आप मेरे जैसे हैं और आप zsh (या बैश के अलावा कोई अन्य शेल) का उपयोग करते हैं, तो एक अतिरिक्त कदम है! इंस्टॉल करने के बाद rbenvआपको करना होगा echo 'eval "$(rbenv init -)"' >> ~/.bash_profileस्रोत
मारलो

2
यदि आपको / usr / स्थानीय निर्देशिका में अनुमति त्रुटि का सामना करना पड़ता है, तो दौड़ें sudo chown -R $(whoami) $(brew --prefix)/*। अधिक जानकारी के लिए इस धागे को देखें
अनस त्योर

6
यह बहुत सहायक है ... इसे सही उत्तर के रूप में सेट किया जाना चाहिए।
स्पेंसर मुलर डिनिज

5
चूंकि MacOS लोगों को zsh पर स्विच करने के लिए प्रोत्साहित कर रहा है, इसलिए आपको ~ / .bash_prof पर ~ / .zshrc में परिवर्तन लागू करना चाहिए।
एडम_जी

1
@stevec शायद आप आरबेंव इंस्टॉलेशन निर्देशों में कुछ चरणों से चूक गए हैं? या हो सकता है कि आपने अपना टर्मिनल छोड़ दिया और पुनः आरंभ नहीं किया? मैं यहाँ rbenv निर्देशों का पालन करूँगा: github.com/rbenv/rbenv#installation । यदि आप chrubyइसके बजाय उपयोग करने के लिए खुले हैं , तो मैं एक स्क्रिप्ट का उपयोग करने की सलाह देता हूं जो आपके लिए सब कुछ सेट करती है, जैसे कि यह एक: github.com/monfresh/install-ruby-on-macos । आपको उस स्क्रिप्ट को चलाने से पहले पहले rbenv को अनइंस्टॉल करना होगा: github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

83

अगर आप दौड़ना नहीं चाहते हैं sudoतो homebrew का उपयोग करके माणिक स्थापित करें

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

आप export GEM_HOME="$HOME/.gem"अपने ~/.bash_profileया .zshrcअगर आप zsh का उपयोग कर रहे हैं, तो जोड़ना चाह सकते हैं

नोट: RubyGems रत्न के पुराने संस्करण रखता है, इसलिए अद्यतन करने के बाद कुछ सफाई करने के लिए स्वतंत्र महसूस करें:

gem cleanup

4
केटिना ओएस OS
यूकेट लेविटन

मेरा जवाब अपडेट किया गया
STIKO

Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
एफर्ट लेविटन

ऐसा लगता है कि आप एक railsकमांड चलाने की कोशिश कर रहे हैं । पिछले दो कमांड मैंने railsकमांड नहीं चलाया है । अपने प्रोजेक्ट के बाहर एक नया टर्मिनल खोलने का प्रयास करें, फिर मेरे उत्तर की अंतिम दो पंक्तियों को एक-एक करके कॉपी करें।
21

source ~/. zshrc(या ~/.bash_profile)
gordinmitya

72

--user-installनिम्नलिखित कमांड चलाने वाले पैरामीटर का उपयोग करके मेरे लिए काम किया :

gem install name_of_gem --user-install

फिर वह उसे लाने और स्थापित करने लगा।

संपादित करें

एक रत्न था जिसे मैं अभी भी स्थापित नहीं कर सका (यह रूबी विकास किट या कुछ और के Ruby.h हेडर की आवश्यकता थी), तो मैंने विभिन्न संस्करण प्रबंधकों की कोशिश की, लेकिन किसी भी तरह अभी भी वास्तव में काम नहीं किया जैसा कि दस्तावेज़ों में बताया गया है कि कैसे बस स्थापित करने और स्विच करने के लिए (यह सिर्फ संस्करणों को स्विच नहीं करता था)। फिर मैंने सभी स्थापित संस्करण प्रबंधकों को हटा दिया और बाद brew install rubyके नवीनतम संस्करण के साथ स्थापित किया और PATH चर को भी सेट किया। (इसे काढ़ा से माणिक की स्थापना के बाद उल्लेख किया जाएगा), जिसने काम किया।


2
यह चुना हुआ उत्तर होना चाहिए। Brew अभी तक M1 चिप्स द्वारा समर्थित नहीं है और यह एक आकर्षण की तरह काम करता है।
टॉम रोजगारो

1
सूची में अब तक यह उत्तर क्यों है? यह सही उत्तर है।
याचिकाकर्ता

7

यह आमतौर पर एक संस्करण प्रबंधक का उपयोग करने की सिफारिश की जाती है जैसे rbenvया rvm। अन्यथा, स्थापित रत्न rootअन्य उपयोगकर्ताओं के लिए उपलब्ध होंगे ।

यदि आप जानते हैं कि आप क्या कर रहे हैं, तो आप उपयोग कर सकते हैं sudo gem install


5

मैंने macOS कैटालिना को स्थापित करने के बाद उसी मुद्दे का सामना किया है। मेरे पास कमांड और उसके काम करने की कोशिश थी।

sudo gem update

4

इसे चलाओ

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

निर्देशों का पालन करें, (मेरे मामले में ~ / .zshrc में जोड़ें );)


इसके अलावा महत्वपूर्ण: परिवर्तन तभी प्रभावी होता है जब आप अपने कंसोल को रीबूट करते हैं। दो विकल्प

  • दर्ज source <modified file>
  • बंद करें और फिर से खोलें

मैं कैटालिना (जो zsh को पार्टी से स्विच) करने के लिए उन्नत और मैं से सब कुछ नकल करना भूल .bash_profileसे अधिक करने के लिए.zshrc
wetjosh

यह काम! उपयोग न करें sudo! यदि आप ZSH का उपयोग नहीं करते हैं, तो आप इसे अपने .profileया में जोड़ सकते हैं .bash_profile। यह जांचने का एक शानदार तरीका है कि क्या यह काम करना है which ruby, इसे एक ऐसे रास्ते की ओर इशारा करना चाहिए, जिसके पास rbenvनहीं है /usr/local/ruby
स्वाती काकरला

2

यदि आपने माणिक को अलग से स्थापित किया है और rbenv / rvm का उपयोग करके माणिक स्थापित किया है तो आप अलग-अलग संस्करणों को इंगित कर सकते हैं।

प्रयत्न

gem env home

तथा

ruby -v

दोनों को एक ही वर्जन की ओर इशारा करना चाहिए। चेक करें कि आपने rbenv / rvm का उपयोग करके माणिक स्थापित किया है, यदि ऐसा है तो अलग से स्थापित माणिक संस्करण को हटा दें।

मणि को काम करने के लिए, आपको रेनेव का आह्वान करना चाहिए,

rbenv shell <ruby version> 

तथा

rbenv global <ruby version>

मुझे यकीन नहीं है कि आरवीएम कैसे काम करता है। अगर यह कार्यशील है, तो मुझे बताएं।


खोल और वैश्विक सेटिंग गायब था। रेनेव के निर्देशों में ऐसा क्यों नहीं है that
that

यकीन नहीं होता, यह क्यों याद किया गया, मैं कोशिश करने के बाद पता लगाने में सक्षम था।
भरत कुमारन

0

मैक के लिए समाधान

  1. पिछले माणिक संस्करण के साथ आरवीएम को स्थापित / अपडेट करें

    \curl -sSL https://get.rvm.io | bash -s stable

  2. बंडल स्थापित करें

    gem install bundler


इसके बाद दो कमांड (sudo) gem install ....काम करने लगे


यह भी निर्दिष्ट करने की आवश्यकता हो सकती हैrvm use <version>
ObjectNameDisplay

0

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

# install your version of ruby
$ rbenv install 2.0.0-p247

# modify .ruby_version on current directory
$ rbenv local 2.0.0-p247

# proceed installing gems
$ gem install bundler

विस्मयादिबोधक: मैं एक माणिक व्यक्ति नहीं हूं। यह मेरे लिए काम करता है और यदि आप एक रूबी विशेषज्ञ हैं और इस उत्तर में चीजों को बदलने के लिए देखते हैं, तो कृपया आगे बढ़ें या टिप्पणी करें!


-1

इसने मेरे लिए मैक पर काम किया

sudo chown -R $ (whoami) $ (काढ़ा - उपसर्ग) / *


-1

मैं Mojave का उपयोग कर रहा हूं rbenv, यह समाधान मेरे लिए काम करता है:

$ vi ~/.bash_profile

इस लाइन को फाइल में जोड़ें:

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

-2

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

समाधान ने मेरे लिए काम किया: सुडो मणि स्थापित रेल -v 6.0.0


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.