आपके पास /var/lib/gems/2.3.0 निर्देशिका के लिए लिखित अनुमति नहीं है


104

मैं अपने ubuntu 16.04 पर रूबी स्थापित किया है।

$which ruby  

/usr/bin/ruby

$ruby -v 

ruby 2.3.0p0 (2015-12-25) [x86_64-linux-gnu]

$gem install bundler 

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

किसी भी प्रकार की सहायता सराहनीय होगी!


आप आरवीएम को स्थापित करने और 2.3.3 की तरह रूबी के एक नए संस्करण को स्थापित करने की कोशिश कर सकते हैं
एंटोन स्कोवोरोडको

टिप्पणी 3 के लिए: पैकेज "पायथन-सॉफ़्टवेयर-गुण" उपलब्ध नहीं है, आपको सॉफ़्टवेयर-गुण-सामान्य के लिए प्रतिस्थापित करना चाहिए
फ्रांसिस्को पेड्राज़ा

1
RVM विकल्प, और एक बेहतर सिंपल इनस्टॉल” (जैसा कि एक वैश्विक, अधिकार-मांग वाला एक के रूप में) के रूप में और भी बेहतर और सरल स्थापित करता है , अधिकारों के साथ छेड़छाड़ करने की तुलना में बहुत बेहतर चीज हो सकती है!
फ्रैंक नॉक

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

जवाबों:


153

आपको सबसे पहले उबंटू द्वारा स्थापित रूबी को कुछ के साथ अनइंस्टॉल करने की आवश्यकता है sudo apt-get remove ruby

फिर अपने डॉक्स के अनुसार रेंब और रूबी-बिल्ड का उपयोग करके माणिक को फिर से स्थापित करें :

cd $HOME
sudo apt-get update 
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL

rbenv install 2.3.1
rbenv global 2.3.1
ruby -v

अंतिम चरण बुंडलर को स्थापित करना है:

gem install bundler
rbenv rehash

फिर आनंद लें!

डेरेक


8
निर्देश (रेल) पर गहरे लाल रंग का स्थापित करने के लिए कैसे यहाँ है gorails.com/setup/ubuntu/16.04
Andrzej Rehmann

5
मैं अनइंस्टॉल करने के लिए मितभाषी हूँ, क्योंकि इसके लिए डिपेंडेंट प्रोग्राम्स को भी अनइंस्टॉल करने की आवश्यकता होती है ( vim-gnomeउदाहरण के लिए)। मुझे लगता है कि मैं यह जानना पसंद करूंगा कि पहली जगह में उपयोगकर्ता को इंस्टॉल करने के लिए लिखने की आवश्यकता क्यों है /var/lib/...... क्या मुझे ज़रूरत sudo gem installनहीं है?
प्लाज़्माबिनटॉन्ग 21

4
मैं @AntonSkovorodko से सहमत हैं, यह अगर जवाब रूबी की स्थापना रद्द नहीं कर सका अच्छा होगा
BLong

4
सिनेमोन वातावरण (लिनक्स मिंट 18.2 में हुआ) में रूबी की स्थापना के समय बस सावधान रहें, रिबूट के बाद मैं ग्राफिक मोड में सिस्टम नहीं चला सकता था। जब आपके साथ ऐसा होता है, तो CLI पर जाएं Ctrl+Alt+F1और निम्नलिखित कमांड चलाएं (uninstalls and installs Cinnamon again): sudo apt purge cinnamon && sudo apt install cinnamon
Kout

2
इस उत्तर के रूप में, आप शायद जानना चाहते हैं कि नवीनतम उपलब्ध क्या हैं: rbenv install -lसूची के लिए सभी उपलब्ध संस्करण फिर rbenv install 2.5.12.5.1 संस्करण के लिए या जो भी आप चाहें।
पॉल स्टर्म

60

यदि आप rb-env / rvm के बजाय वितरण रूबी का उपयोग करना चाहते हैं, तो आप GEM_HOMEअपने वर्तमान उपयोगकर्ता के लिए सेट कर सकते हैं । अपने उपयोगकर्ता के लिए रूबी रत्नों को संग्रहीत करने के लिए एक निर्देशिका बनाकर शुरू करें:

$ mkdir ~/.ruby

फिर उस निर्देशिका का उपयोग करने के लिए GEM_HOMEऔर PATHरूबी रत्न बिन निर्देशिका को शामिल करने के लिए अपने चर को अपडेट करने के लिए अपने शेल को अपडेट करें ।

$ echo 'export GEM_HOME=~/.ruby/' >> ~/.bashrc
$ echo 'export PATH="$PATH:~/.ruby/bin"' >> ~/.bashrc
$ source ~/.bashrc

(वह अंतिम पंक्ति आपके वर्तमान शेल में पर्यावरण चर को फिर से लोड करेगी।)

अब आपको gemकमांड का उपयोग करके अपने उपयोगकर्ता के तहत रूबी रत्न स्थापित करने में सक्षम होना चाहिए । मैं उबटन 18.1 के तहत रूबी 2.5.1 के साथ यह काम पाने में सक्षम था। यदि आप एक शेल का उपयोग कर रहे हैं जो बैश नहीं है, तो आपको उस शेल के बजाय स्टार्टअप स्क्रिप्ट को संपादित करना होगा bashrc


2
मैंने ऐसा किया, फिर "रूबी के लिए हेडर फाइल्स नहीं पा सकता" के बारे में एक त्रुटि मिली, तो मैंने इसे पढ़ा: stackoverflow.com/a/4502672/2245874 , और यह सब का पालन नहीं किया, लेकिन sudo apt install ruby ​​किया -मैं, और फिर यह मेरे लिए काम किया।
robm

1
मेरा मानना ​​है कि @robm माणिक-देव नहीं रूबी-रत्न हैं
Altreus

3
यह शायद माणिक उपयोगकर्ताओं के लिए अधिक उपयुक्त है जिन्हें कई संस्करणों के खिलाफ विकसित करने की आवश्यकता नहीं है।
danielcooperxyz

1
आपने किसी भी अतिरिक्त टूल के बिना मेरी रूबी को ठीक करने के लिए वास्तव में एक अच्छा लिनक्स तरीका घोषित किया है, बस पुराने बैश :)
डेनिस ट्रोफिमोव

30

(जनवरी 2019) रूबेन स्क्रिप्ट का उपयोग करके रूबी को स्थापित करने के लिए, इन चरणों का पालन करें:

1. सबसे पहले, पैकेज इंडेक्स को अपडेट करें और रूबी-बिल्ड टूल के लिए आवश्यक स्रोत से रूबी के निर्माण के लिए पैकेज स्थापित करें:

sudo apt-get remove ruby
sudo apt update
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev

2. अगला, रनबेल और रूबी-बिल्ड दोनों को स्थापित करने के लिए निम्नलिखित कर्ल कमांड चलाएँ:

curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash -

3. सिस्टम PATH में $ HOME / .rbenv / bin जोड़ें।

यदि आप बैश का उपयोग कर रहे हैं, तो चलाएं:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

यदि आप Zsh रन का उपयोग कर रहे हैं:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

4. रूबी का नवीनतम स्थिर संस्करण स्थापित करें और इसे डिफ़ॉल्ट संस्करण के रूप में सेट करें:

rbenv install 2.5.1
rbenv global 2.5.1

सभी उपलब्ध रूबी संस्करणों को सूचीबद्ध करने के लिए जिनका आप उपयोग कर सकते हैं: rbenv install -l

5. सत्यापित करें कि संस्करण संख्या को प्रिंट करके रूबी को ठीक से स्थापित किया गया था:

ruby -v

# Output
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

स्रोत: उबंटू 18.04 पर रूबी स्थापित करने के लिए कैसे

संपादित करें: माणिक स्थापित करें:

sudo apt-get install rubygems

2
यह महान है! अच्छा और रसीला। मैंने इसका ठीक-ठीक पालन किया (उन .zshrcपरिवर्तनों को छोड़कर जो मैंने हाथ से किए थे) और इसने पूरी तरह से काम किया। उसी तरह से आप कैसे स्थापित करने के लिए जोड़ा rubygems, मैं शायद जोड़ने का सुझाव दे सकता हूँ कि बाद में स्थापित रूबी संस्करण को कैसे अपडेट किया जाए (मैं अनुमान लगा रहा हूं कि आप बस चलाते हैं rbenv installऔर पुराने संस्करणों को rbenv globalफिर से शुरू करने और हो सकता rbenv uninstallहै)
gMale

1
ये अद्भुत है! पूरी तरह से Ubuntu 18.04 WSL पर काम करता है।
robe007

1
यह अधिक सुरुचिपूर्ण उत्तर है।
22:11 पर rashedcs

14

मालिकों को बदलने के बजाय, जो अन्य स्थानीय उपयोगकर्ताओं को बंद कर सकते हैं, या कुछ दिन - अपने खुद के रूबी सर्वर / तैनाती-चीजें ... एक अलग उपयोगकर्ता के तहत चल रहे हैं ...

मैं बल्कि उस विशेष फ़ोल्डर के अधिकारों का विस्तार करना चाहता हूं ... ठीक है, हर कोई:

cd /var/lib
sudo chmod -R a+w gems/

(मैंने आपकी त्रुटि का भी सामना किया। इसलिए यह काफी सत्यापित है।)


1
मुझे / usr / लोकल / बिन फोल्डर को संबोधित करने की भी आवश्यकता थी, लेकिन इस समाधान ने काम किया: "त्रुटि: रत्न निष्पादित करते समय ... (Gem :: FilePermissionError) आपके पास / usr / स्थानीय / बिन निर्देशिका के लिए अनुमति नहीं है । "
Eb80

10

निर्देशिका chown -Rपर उपयोग करने का प्रयास करें var/lib/gems, उपयोगकर्ता को स्वामित्व प्रदान करना [ rubyusername] इस उदाहरण में, उपयोगकर्ता जो रत्नों के साथ स्थापित और विकसित हो रहा होगा।

 # chown -R rubyusername:rubyusername /var/lib/gems 

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


2
यह उस समस्या को हल कर सकता है, लेकिन एक और मुद्दा पॉप अप करता है: त्रुटि: मणि निष्पादित करते समय ... (मणि :: FilePermissionError) आपके पास / usr / स्थानीय / बिन निर्देशिका के लिए लिखने की अनुमति नहीं है; इसलिए मुझे लगता है कि अनुमति के बजाय कुछ और गलत है।
डेरेक

3

ऊपर डेरेक के उत्तर पर निर्माण करना, आमतौर पर सिस्टम को अपने स्वयं के विकास कार्यों के लिए रूबी उदाहरण प्रदान करने के लिए उपयोग करने की अनुशंसा नहीं की जाती है, क्योंकि सिस्टम टूल रूबी इंस्टॉल के विशेष संस्करण या स्थान पर निर्भर हो सकते हैं। मैक OSX के लिए इस उत्तर के समान , आप अपने रूबी उदाहरण को स्थापित करने के लिए rbenv ( RVM एक समान विकल्प है) जैसी किसी चीज़ का उपयोग करने पर डेरेक के निर्देशों का पालन करना चाहेंगे ।

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

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

डेरेक के जवाब में लाइन।


2

मुझे GitHub Actions में समान त्रुटि का सामना करना पड़ा। sudoसमस्या को हल करना जोड़ना ।

sudo gem install bundler

0

कम्पास को फिर से स्थापित करना मेरे लिए काम किया .. यह एक जादू है!

sudo gem install -n /usr/local/bin compass

0

Ubuntu 20.04:

विकल्प 1 - अपने उपयोगकर्ता खाते के लिए एक रत्न स्थापना निर्देशिका स्थापित करें

बैश के लिए (zsh के लिए, हम .zshrcपाठ्यक्रम का उपयोग करेंगे )

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

विकल्प 2 - स्नैप का उपयोग करें

Apt-version ( ruby-full) को अनइंस्टॉल करें और इसे फिर से इंस्टॉल करेंsnap

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