2010-01-22 18 views
109

'sudo gem list --local' और 'gem list --local' चलने से मुझे अलग-अलग परिणाम मिलते हैं। मेरा मणि पथ मेरे घर फ़ोल्डर में सेट है और केवल 'gem list --local' से रत्न शामिल है।'sudo gem install' या 'मणि इंस्टॉल' और मणि स्थान

शायद मेरे कंप्यूटर पर विभिन्न निर्देशिकाओं में रत्न स्थापित करना अच्छा नहीं है, तो क्या मुझे मणि पथ अलग-अलग सेट करना चाहिए, और क्या मुझे हमेशा कुछ स्थापित करते समय sudo का उपयोग करना चाहिए?

my ~/.profile 
export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 

~/.bash_profile खाली है।

+0

मुझे लगता है कि यह उन लोगों के लिए एक वैध प्रश्न है जिन्हें एक मणि का उपयोग करना है जिसके लिए रूट विशेषाधिकारों की आवश्यकता है। – Kelly

+0

संबंधित: http://stackoverflow.com/questions/21141584/rails-is-not-using-my-global-ruby-version। मैं रुबी संस्करणों के प्रबंधन के लिए आरबीएनवी का उपयोग करता हूं और एक समस्या में भाग गया क्योंकि मैंने 'मणि इंस्टॉल रेल' के बजाय 'सुडो मणि इंस्टॉल रेल' का इस्तेमाल किया था। – Dennis

+3

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

उत्तर

129

अन्य सभी पोस्टों के विपरीत मैं सुझाव देता हूं कि sudo का उपयोग रत्न स्थापित करते समय नहीं।

इसके बजाय मैं तुम्हें RVM स्थापित और पोर्टेबल मणि घरों और सब एक ही छत के नीचे रहने वाले रूबी के विभिन्न संस्करण के साथ एक सुखी जीवन शुरू सलाह देते हैं।

uninitiated, the documentation से:

RVM एक कमांड लाइन उपकरण है जो हमें आसानी से स्थापित प्रबंधन और कई गहरे लाल रंग का वातावरण और जवाहरात के सेट के साथ काम करने के लिए अनुमति देता है।

कारण है कि sudo साथ जवाहरात स्थापित करने सिर्फ gem install से भी बदतर है, क्योंकि यह सभी उपयोगकर्ताओं केroot के रूप में के लिए जवाहरात को स्थापित करता है। यह ठीक हो सकता है यदि आप मशीन का उपयोग करने वाले एकमात्र व्यक्ति हैं, लेकिन यदि आप नहीं हैं तो यह अजीबता पैदा कर सकता है।

यदि आप तय करते हैं कि आप अपने सभी रत्नों को उड़ाना चाहते हैं और फिर से शुरू करना एक गैर-मूल उपयोगकर्ता के रूप में ऐसा करना बहुत आसान और सुरक्षित है।

आप तय करते हैं आप RVM उपयोग करने के लिए तो sudo का उपयोग कर प्रत्येक रूबी संस्करण आप RVM के माध्यम से स्थापित अपने स्वयं के GEM_HOME है क्योंकि weirdness के सभी प्रकार के कारण होगा चाहते हैं।

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

+11

+1, लेकिन सूडो – tfwright

+0

का उपयोग करने की वैकल्पिक संभावना की भ्रमित निंदा के लिए -1 यह वास्तव में भ्रमित नहीं है। http://rvm.beginrescueend.com/gems/ – jonnii

+0

@floyd, सूडो का उपयोग न करने के अधिक कारणों के साथ पोस्ट को अपडेट किया गया। – jonnii

93

तुम भी

gem install --user-install <gemname> 

के साथ अपने स्थानीय वातावरण में जवाहरात (sudo के बिना) स्थापित कर सकते हैं मेरा सुझाव है कि ताकि आप अपने सिस्टम स्तर विन्यास भले ही यह एक एकल उपयोगकर्ता कंप्यूटर के साथ गड़बड़ नहीं है।

आप देख सकते हैं कि gem environment के साथ gempaths को देखकर रत्न कहां जाते हैं। मेरे मामले में यह "~/.gem/रूबी/1.8" है।

आप अपने पथ को जोड़ा गया स्थानीय इंस्टॉल किए जाने से कुछ बाइनरी की जरूरत है, तो आप की तरह अपने bashrc के लिए कुछ जोड़ सकते हैं:

if which ruby >/dev/null && which gem >/dev/null; then 
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" 
fi 

(http://guides.rubygems.org/faqs/#user-install से)

+16

+1 "अभी तक एक और कॉन्फ़िगरेशन टूल" समाधान के बजाय इस विकल्प के लिए +1, आरबीएनवी/आरवीएम। – jjpe

+0

मैं एक मणि बना रहा हूं और मैनुअल के अनुसार मुझे 'रेक इंस्टॉल' करना है और सुडो आईएसई को ठीक करने के लिए, मुझे मैन्युअल रूप से '/Library/Ruby/Gems/2.0.0/gems/bundler-1.7.3 पैच करना था/lib/bundler/gem_helper.rb' वहां '--user-install' जोड़ रहा है। बेहतर समाधान नहीं मिल रहा है, क्योंकि 'रेक इंस्टॉल' जैसा दिखता है अतिरिक्त पैरामीटर स्वीकार नहीं करता है। – Nakilon

+0

मैं उस पहले कमांड से बिल्कुल रोमांचित हूं। मैं रत्न स्थापित करने की कोशिश कर रहा हूं और इसमें समस्याएं हैं क्योंकि मेरे पास सुडो विशेषाधिकार नहीं हैं। वह आदेश काम किया !!!! –

2

आप एक विशिष्ट फ़ोल्डर में जवाहरात स्थापित कर सकते हैं (उदाहरण के विक्रेता /) अपने रेल app में उपयोग करते हुए:

bundle install --path vendor 
+0

यह। इन दिनों एकमात्र प्रोग्राम जो सॉफ्टवेयर स्थापित करने के लिए सुडो की आवश्यकता हो, वह आपका पैकेज मैनेजर है। – tjbp

3
sudo gem install --no-user-install <gem-name> 

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

+0

यह एक विक्रेता स्थापित मणि को भी ओवरराइट कर सकता है, जिसे ओएस एक विशिष्ट संस्करण पर सेट होने की उम्मीद कर सकता है। और वह उस कोड को तोड़ सकता है जो उस पर निर्भर करता है। –

7

संबंधित (बंडलर उपयोगकर्ताओं के लिए), अगर आप RVM को एक हल्का विकल्प चाहते हैं जो एक उपयोगकर्ता-विशिष्ट अच्छी तरह से ज्ञात निर्देशिका में सब कुछ डाल दिया जाएगा, मैं उपयोग करने की अनुशंसा:

bundle install --path $HOME/.gem 

आप के लिए जवाहरात स्थापित करना चाहते हैं उसी स्थान पर

gem install --user-install GEMNAME 

उन्हें आपके होमडेर में .gem/ruby/RUBYVERSION इंस्टॉल करेगा। (इस सवाल के बारे --user-install पर अन्य टिप्पणी देखें।)

यह जवाहरात gem list को दिखाई, gem uninstall, आदि के माध्यम से अनइंस्टॉल किये कर देगा sudo पहुँच की जरूरत के बिना। Runnable लिपियों मणि या बंडलर द्वारा स्थापित अपने $PATH को

$HOME/.gem/ruby/RUBYVERSION/bin 

जोड़कर अपने रास्ते में रखा जा सकता है। gem स्वयं आपको इसके बारे में बताता है अगर यह gem install --user-install पर सेट नहीं होता है। अभी तक

26

बेहतर, अपने ~/.gemrc फ़ाइल में --user-install डाल ताकि आप इसे हर बार

gem: --user-install 
5

मामले में आप

  • स्थापित माणिक रत्न sudo
  • साथ टाइप करने के लिए की जरूरत नहीं है
  • बिना सूडो
  • आरवीएम/आरबीएनवी
  • स्थापित नहीं करना चाहते हैं

अपने .bash_profile को निम्नलिखित जोड़ें:

export GEM_HOME=/Users/‹your_user›/.gem 
export PATH="$GEM_HOME/bin:$PATH" 

टर्मिनल खोलें या source ~/.bash_profile में एक नया टैब और तुम जाना अच्छा कर रहे हैं!

+2

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

संबंधित मुद्दे