web-dev-qa-db-fra.com

Vous n'avez pas les permissions d'écriture pour le répertoire /var/lib/gems/2.3.0

J'ai Ruby installé sur mon 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.

Toute aide sera fortement appréciée!

80
derek

Vous devez d’abord désinstaller le Ruby installé par Ubuntu avec quelque chose comme Sudo apt-get remove Ruby.

Ensuite, réinstallez Ruby en utilisant rbenv et Ruby-build en fonction de leur documentation:

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

La dernière étape consiste à installer Bundler:

gem install bundler
rbenv rehash

Alors profitez-en!

Derek

132
derek

Si vous souhaitez utiliser la distribution Ruby au lieu de rb-env/rvm, vous pouvez configurer un GEM_HOME pour votre utilisateur actuel. Commencez par créer un répertoire pour stocker les gems Ruby pour votre utilisateur:

$ mkdir ~/.Ruby

Puis mettez à jour votre shell pour qu'il utilise ce répertoire pour GEM_HOME et pour mettre à jour votre variable PATH afin d'inclure le répertoire Ruby gem bin.

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

(Cette dernière ligne rechargera les variables d'environnement dans votre shell actuel.)

Vous devriez maintenant pouvoir installer Ruby gems sous votre utilisateur à l'aide de la commande gem. J'ai pu faire fonctionner cela avec Ruby 2.5.1 sous Ubuntu 18.04. Si vous utilisez un shell autre que Bash, vous devez éditer le script de démarrage de ce shell au lieu de bashrc.

30
James

(janvier 2019) Pour installer Ruby à l'aide du script Rbenv, procédez comme suit:

1. Tout d’abord, mettez à jour l’index des packages et installez les packages nécessaires à l’outil de compilation Ruby pour compiler Ruby à partir de la source:

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. Ensuite, exécutez la commande curl suivante pour installer rbenv et Ruby-build:

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

3. Ajoutez $ HOME/.rbenv/bin au système PATH.

Si vous utilisez Bash, exécutez:

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

Si vous utilisez Zsh, exécutez:

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

4. Installez la dernière version stable de Ruby et définissez-la comme version par défaut avec:

rbenv install 2.5.1
rbenv global 2.5.1

Pour répertorier toutes les versions disponibles de Ruby, vous pouvez utiliser: rbenv install -l

5. Vérifiez que Ruby a été correctement installé en imprimant le numéro de version:

Ruby -v

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

SOURSE: Comment installer Ruby sur Ubuntu 18.04

EDIT: Installez rubygems:

Sudo apt-get install rubygems
11
Achraf JEDAY

Essayez d'utiliser chown -R dans le répertoire var/lib/gems, en attribuant la propriété à l'utilisateur [rubyusername] dans cet exemple, l'utilisateur qui va installer et développer à l'aide de gems.

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

Ceci récursivement change tout dans le répertoire gems . Pour plus de sécurité sur les systèmes multi-utilisateurs, vous pouvez également créer un groupe plutôt que de chowner le nom rubyusername individuel et ajouter des utilisateurs à ce groupe.

8
minnow

Plutôt que de changer de propriétaire, ce qui risquerait de verrouiller d'autres utilisateurs locaux, ou, un jour, votre propre Ruby serveur/élément de déploiement ... exécuté sous un autre utilisateur ...

Je préférerais simplement étendre les droits de ce dossier particulier à ... eh bien, tout le monde:

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

(J'ai aussi rencontré votre erreur. C'est donc assez vérifié.)

8
Frank Nocke

S'appuyant sur la réponse de derek ci-dessus, il n'est généralement pas recommandé d'utiliser l'instance fournie par le système Ruby pour votre propre travail de développement, car les outils système peuvent dépendre de la version ou de l'emplacement particulier de la Ruby installer. Semblable à cette réponse pour Mac OSX , vous voudrez suivre les instructions de Derek pour utiliser quelque chose comme rbenv ( RVM est une alternative similaire) pour installer votre propre Ruby instance.

Toutefois, il n'est pas nécessaire de désinstaller la version système de Ruby. Les instructions d'installation de rbenv fournissent un mécanisme permettant de s'assurer que l'instance de Ruby disponible dans votre shell est l'instance de rbenv, et non l'instance du système. C'est le

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

ligne dans la réponse de Derek.

3
Sean Ray