/Var/lib/gems/2.3.0 dizini için yazma izniniz yok


105

16.04 ubuntu'ma Ruby yükledim.

$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.

Herhangi bir yardım çok takdir edilecektir!


RVM'yi kurmayı deneyebilir ve yakutun 2.3.3 gibi daha yeni bir sürümünü kurmayı deneyebilirsiniz
Anton Skovorodko

Yorum 3 için: "python-yazılım-özellikleri" paketi mevcut değil, ortak yazılım özellikleri için değiştirmelisiniz
Francisco Pedraza

1
RVM seçeneği ve saf bir "kullanıcı kurulumu" olarak imho daha iyi ve basit kurulum (küresel, hak talep eden bir kurulumun aksine), hakları kurcalamaktan çok daha iyi bir şey olabilir!
Frank Nocke

8
Bu akış, bu OP'nin neden bu soruna sahip olduğunu ve neden Ruby'nin bir sürümünü hem Ruby hem de çoklu kurulum yöneticisi (RVM veya RBEVN) lehine terk etmeleri gerektiğini açıklamasını isterdim. Buradaki tavsiyenin yalnızca kişisel tercihlere dayanıp dayanmadığını kesin olarak söyleyemiyorum. Umarım bu tavsiyenin arkasında daha fazlası vardır.
BaldEagle

Yanıtlar:


156

Önce Ubuntu tarafından yüklenen yakutu gibi bir şeyle kaldırmanız gerekir sudo apt-get remove ruby.

Daha sonra ruby'yi rbenv ve ruby-build kullanarak belgelerine göre yeniden yükleyin :

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

Son adım, Bundler'ı kurmaktır:

gem install bundler
rbenv rehash

O zaman tadını çıkarın!

Derek.


9
Ruby'nin (raylar üzerinde) nasıl kurulacağına dair talimat burada. Gorails.com/setup/ubuntu/16.04
Andrzej Rehmann

5
Bağımlı programların da kaldırılmasını gerektirdiğinden ( vim-gnomeörneğin) kaldırmayı yapmak için biraz sessizim . Sanırım neden ilk etapta /var/lib/...bir kullanıcı yüklemesi için yazması gerektiğini bilmeyi tercih ederim ... Gerekmediğinde bir yaptım sudo gem installmı?
PlasmaBinturong

4
@AntonSkovorodko'ya katılıyorum, cevabın Ruby'nin kaldırılmasını haklı çıkarması güzel olurdu
blong

4
Ruby'yi Cinnamon ortamında kaldırırken dikkatli olun (Linux Mint 18.2'de oldu), yeniden başlattıktan sonra sistemi grafik modunda çalıştıramadım. Bu sizin Ctrl+Alt+F1sudo apt purge cinnamon && sudo apt install cinnamon
başınıza geldiğinde, CLI'ye

2
Bu yanıt eskidikçe, muhtemelen mevcut olan en son rbenv install -lsürümlerin ne olduğunu bilmek isteyeceksiniz: tüm mevcut sürümlerin bir listesi rbenv install 2.5.1için daha sonra 2.5.1 sürümü veya ne isterseniz.
Paul Sturm

65

Rb-env / rvm yerine Ruby dağıtımını kullanmak istiyorsanız GEM_HOME, mevcut kullanıcınız için bir tane kurabilirsiniz . İçin Yakut taşlar saklamak için bir dizin oluşturarak başlayın senin kullanıcı:

$ mkdir ~/.ruby

Ardından, bu dizini kullanmak GEM_HOMEve PATHdeğişkeninizi Ruby gem bin dizinini içerecek şekilde güncellemek için kabuğunuzu güncelleyin .

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

(Bu son satır, mevcut kabuğunuzdaki ortam değişkenlerini yeniden yükleyecektir.)

Artık, gemkomutu kullanarak Ruby mücevherlerini kullanıcınızın altına kurabilmelisiniz . Bunu Ubuntu 18.04 altında Ruby 2.5.1 ile çalıştırmayı başardım. Bash olmayan bir kabuk kullanıyorsanız, bunun yerine o kabuk için başlangıç ​​komut dosyasını düzenlemeniz gerekecektir bashrc.


2
Bunu yaptım, ardından "ruby için başlık dosyaları bulunamıyor" hatasıyla karşılaştım, sonra şunu okudum: stackoverflow.com/a/4502672/2245874 ve hepsini takip etmedim ama sudo apt install ruby ​​yaptım -gems ve sonra benim için çalıştı.
2018

1
@Robm'un ruby-dev anlamına geldiğine inanıyorum, ruby-gems değil
Altreus

3
Bu, birden fazla versiyona karşı geliştirmeye ihtiyaç duymayan Ruby kullanıcıları için muhtemelen daha uygundur.
danielcooperxyz

1
Ruby kurulumumu herhangi bir ek araç kullanmadan düzeltmek için gerçekten iyi bir Linux yolu tanımladınız, sadece eski güzel bash :)
Denis Trofimov

31

(Ocak 2019) Ruby'yi Rbenv komut dosyasını kullanarak yüklemek için şu adımları izleyin:

1. Öncelikle, paketler dizinini güncelleyin ve Ruby-build aracının Ruby'yi kaynaktan derlemesi için gereken paketleri kurun:

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. Ardından, hem rbenv hem de ruby-build'yi kurmak için aşağıdaki curl komutunu çalıştırın:

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

3. $ HOME / .rbenv / bin'i sistem PATH'ına ekleyin.

Bash kullanıyorsanız, şunu çalıştırın:

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

Zsh run kullanıyorsanız:

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

4. Ruby'nin en son kararlı sürümünü yükleyin ve aşağıdakilerle varsayılan sürüm olarak ayarlayın:

rbenv install 2.5.1
rbenv global 2.5.1

Mevcut tüm Ruby sürümlerini listelemek için şunları kullanabilirsiniz: rbenv install -l

5. Sürüm numarasını yazdırarak Ruby'nin doğru şekilde yüklendiğini doğrulayın:

ruby -v

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

KAYNAK: Ubuntu 18.04'e Ruby Nasıl Yüklenir

DÜZENLEME: Yakut taşları yükleyin:

sudo apt-get install rubygems

2
bu harika! güzel ve öz. Bunu tam olarak takip ettim ( .zshrcelle yaptığım değişiklikler hariç ) ve mükemmel çalıştı. Nasıl kurulacağını eklediğiniz gibi rubygems, belki de kurulu Ruby versiyonunu daha sonra nasıl güncelleyeceğinizi eklemenizi öneririm (Sanırım sadece rbenv installve rbenv globalkomutlarını tekrar çalıştırıyorsunuz ve belki de rbenv uninstalleski sürümleri budamak için)
gMale

1
Bu harika! Ubuntu 18.04 WSL'de mükemmel çalışır.
robe007

1
Bu daha şık bir cevap.
rashedcs

14

Sahipleri değiştirmek yerine, bu diğer yerel kullanıcıları ya da –bir gün– kendi Ruby sunucunuzu / dağıtım şeylerinizi… farklı bir kullanıcı altında çalışıyor ...

O belirli klasörün haklarını sadece herkese genişletmeyi tercih ederim:

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

(Senin hatanla da karşılaştım. Yani bu oldukça doğrulandı.)


1
Ayrıca / usr / local / bin klasörünü de adreslemem gerekiyordu, ancak bu çözüm işe yaradı: "HATA: gem çalıştırılırken ... (Gem :: FilePermissionError) / usr / local / bin dizini için yazma izniniz yok . "
eb80

10

Dizinde kullanmayı chown -R, var/lib/gemssahipliği rubyusernamebu örnekte kullanıcıya [ ], kuracak ve taşlarla geliştirecek kullanıcıya atamayı deneyin .

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

Bu , gems dizini altındaki her şeyi özyinelemeli olarak değiştirir . Çok kullanıcılı sistemlerde ekstra güvenlik için, bireysel ruby ​​kullanıcı adını chowning yerine bir grup da oluşturabilir ve bu gruba kullanıcılar ekleyebilirsiniz.


2
Bu sorunu çözebilir, ancak başka bir sorun ortaya çıkar: HATA: gem çalıştırılırken ... (Gem :: FilePermissionError) / usr / local / bin dizini için yazma izniniz yok; bu yüzden sanırım izin yerine yanlış bir şey var.
derek

3

Derek'in yukarıdaki cevabına dayanarak, sistem araçları Ruby kurulumunun belirli sürümüne veya konumuna bağlı olabileceğinden, kendi geliştirme çalışmanız için sistem tarafından sağlanan Ruby örneğini kullanmanız genellikle önerilmez. Mac OSX için verilen bu yanıta benzer şekilde, kendi Ruby örneğinizi kurmak için derek'in rbenv ( RVM benzer bir alternatiftir) gibi bir şey kullanma konusundaki talimatlarını takip etmek isteyeceksiniz .

Ancak, Ruby'nin sistem sürümünü kaldırmaya gerek yoktur, rbenv kurulum talimatları, kabuğunuzda bulunan Ruby örneğinin sistem örneği değil, rbenv örneği olduğundan emin olmak için bir mekanizma sağlar. Bu

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

derek'in cevabındaki satır.


2

GitHub Eylemlerinde aynı hatayla karşılaştım. Eklemek sudosorunu çözdü.

sudo gem install bundler

0

Compass'ı yeniden yüklemek benim için çalıştı .. Bu bir sihir!

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

0

Ubuntu 20.04:

Seçenek 1 - Kullanıcı hesabınız için bir gem kurulum dizini oluşturun

Bash için (zsh için .zshrcelbette kullanırdık )

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

Seçenek 2 - çıtçıt kullanın

Apt-version ( ruby-full) 'ı kaldırın ve şununla yeniden yükleyin:snap

sudo apt-get remove ruby
sudo snap install ruby --classic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.