gem सुडो रत्न स्थापित ’या gem रत्न स्थापित’ और रत्न स्थान


140

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

यह संभव नहीं है कि मेरे कंप्यूटर पर अलग-अलग निर्देशिकाओं में रत्न स्थापित हों, इसलिए क्या मुझे रत्न पथ को अलग तरह से सेट करना चाहिए, और क्या मुझे हमेशा 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 खाली है।


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

संबंधित: stackoverflow.com/questions/21141584/… । मैं रूबी संस्करणों के प्रबंधन के लिए rbenv का उपयोग करता हूं और एक मुद्दे में भाग गया क्योंकि मैंने sudo gem install railsइसके बजाय उपयोग किया था gem install rails
डेनिस

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

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

जवाबों:


146

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

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

दस्तावेज से, बिन बुलाए :

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

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

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

यदि आप तय करते हैं कि आप उपयोग करना चाहते हैं RVMतो उपयोग करने sudoसे सभी प्रकार की विचित्रता हो जाएगी क्योंकि आपके द्वारा इंस्टॉल किए गए प्रत्येक रूबी संस्करण का RVMअपना GEM_HOME है।

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


12
Rvm के लिए +1 सुझाव देते हैं, लेकिन सिर्फ
सुडो

10
ठीक है, लेकिन आपके सभी कारण "उबले हुए हैं क्योंकि आरवीएम इतना महान है" इसलिए नहीं कि सूडो का उपयोग करना विशेष रूप से हानिकारक है। केवल उसी समय पर जब आप किसी साझा कंप्यूटर पर विशिष्ट स्थिति में होना चाहते हैं। यदि आप rvm की सिफारिश करना चाहते हैं तो बस करें। FUDD का सहारा लेने की आवश्यकता नहीं है।
tfwright

6
मैं FUD नहीं फैलाने की कोशिश करता हूं, और मैंने गैर-आरवीएम कारणों को देने की कोशिश की है, अगर ऐसा लगता है तो मैं माफी मांगता हूं।
जौनी

9
RVM एक अच्छा विकल्प है। लेकिन आपको एक बेहतर आरबीएनवी की कोशिश करनी चाहिए। यह आरवीएम की तुलना में कम घुसपैठ है।
एंड्रेस

4
@ HontváriJózsefLevente अपने सभी प्रश्नों को एक टिप्पणी में संबोधित करना कठिन है, लेकिन इसकी कमी यह है कि आप चाहते हैं कि आपका विकास पर्यावरण उत्पादन के जितना करीब हो सके। यदि आप दो एप्स पर काम कर रहे हैं, जिनमें से एक माणिक 2.1 का उपयोग करता है और दूसरा जो यूजर्स 1.9 है तो आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपका स्थानीय वातावरण सही संस्करण का उपयोग कर रहा है। आपके लिए RVM या RBENV क्या करता है। आप इसका उपयोग उसी कारण से करेंगे जब आप किसी सैंडबॉक्स पर्यावरण का उपयोग करेंगे, लेकिन इस मामले में मुख्य लाभ अलगाव है। आशा है कि ये आपकी मदद करेगा!
जोंनी

128

आप अपने स्थानीय परिवेश में (बिना sudo) के भी रत्न स्थापित कर सकते हैं

gem install --user-install <gemname>

मेरा सुझाव है कि आप अपने सिस्टम-स्तरीय कॉन्फ़िगरेशन के साथ गड़बड़ न करें, भले ही यह एकल-उपयोगकर्ता कंप्यूटर हो।

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

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

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

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


23
उपरोक्त "RBENV / RVM" समाधान के बजाय "फिर भी एक और कॉन्फ़िगरेशन उपकरण" समाधान के लिए +1।
jjpe

मैं एक रत्न बना रहा हूं और मैनुअल के अनुसार मुझे करना है rake installऔर सुडो आइस को ठीक करने के लिए, मुझे मैन्युअल रूप से वहां /Library/Ruby/Gems/2.0.0/gems/bundler-1.7.3/lib/bundler/gem_helper.rbजोड़ना --user-installहोगा। बेहतर समाधान नहीं मिल सकता है, क्योंकि ऐसा लगता है कि rake installअतिरिक्त मापदंडों को स्वीकार नहीं करता है।
नैकिलोन

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

34

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

gem: --user-install

13

यदि आप

  • सुडो के साथ माणिक रत्न लगाए
  • बिना सूडो के रत्न लगाना चाहते हैं
  • rvm / rbenv इंस्टॉल नहीं करना चाहते हैं

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

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

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


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

9

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

bundle install --path $HOME/.gem

यदि आप उसी स्थान पर रत्न स्थापित करना चाहते हैं जो

gem install --user-install GEMNAME

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

इस रत्न को दिखाई देंगे gem list, अनइंस्टॉल किये माध्यम से gem uninstallजरूरत के बिना, आदि sudoका उपयोग कर सकते। रत्न या बंडलर द्वारा स्थापित रननीय स्क्रिप्ट को जोड़कर आपके रास्ते में लाया जा सकता है

$HOME/.gem/ruby/RUBYVERSION/bin

अपने को $PATHgemयदि आप इसे सेट नहीं करते हैं तो आप इस बारे में खुद को बताते हैं gem install --user-install


इसके लिए धन्यवाद। क्या डिफ़ॉल्ट रूप से बंडलर ऐसा करना संभव है? (और यदि ऐसा है, तो क्या यह एक अच्छा विचार होगा?)
जोश

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

आपके रत्न को विश्व स्तर पर स्थापित करेगा , अर्थात यह सभी उपयोगकर्ता के संदर्भों के लिए उपलब्ध होगा।


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

1
... या यह एक मणि स्थापित कर सकता है जो एक विक्रेता प्रदान नहीं करता है, और एक तरह से ऐसा करता है जो इसे एक सिस्टम पर सभी उपयोगकर्ताओं के लिए उपलब्ध कराता है। इसमें बहुत कम उत्तेजक है कि सभी उत्तर हर जगह पाठक को लगता है एक देव v / सा सिस्टम प्रशासक, जो वास्तव में है करता है चाहते हैं एक रत्न सभी उपयोगकर्ताओं के लिए उपलब्ध की एक विशेष संस्करण बनाने के लिए। : D
dannysauer

1

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

bundle install --path vendor

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