web-dev-qa-db-fra.com

comment installer des gemmes sans sudo

Sur toutes mes installations de gemmes, je dois faire Sudo? Donc

Sudo gem install Rails

fonctionnera, alors que seulement

gem installer des rails

ne fonctionnera pas. Comment y remédier?

J'ai rvm installé -

murtaza@murtaza-dev:~$ which rvm
/home/murtaza/.rvm/bin/rvm

murtaza@murtaza-dev:~$ which gem
/home/murtaza/.rvm/rubies/Ruby-1.9.3-p194/bin/gem

Cependant, je reçois également cet avertissement lorsque je fais des opérations avec gem -

murtaza@murtaza-dev:~$ gem
/home/murtaza/.rvm/rubies/Ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777

MODIFIER

J'ai réinstallé rvm en utilisant curl -L get.rvm.io | bash -s stable --auto (sans Sudo).

Cependant, quand j'essaie d'installer gem, cela me donne l'erreur suivante -

murtaza@murtaza-dev:~$ gem install Rails
/home/murtaza/.rvm/rubies/Ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /home/murtaza/.gem/specs

MODIFIER

Je me suis fait une idée de tout cela, mais j'ai toujours l'erreur -

murtaza@murtaza-dev:~$ Sudo chown murtaza.murtaza -R ~/.rvm/*


 murtaza@murtaza-dev:~$ gem install Rails
    /home/murtaza/.rvm/rubies/Ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
    ERROR:  While executing gem ... (Errno::EACCES)
        Permission denied - /home/murtaza/.gem/specs
26
murtaza52

Utilisez chown dans l'ensemble .rvm et .gem répertoires de retour à votre utilisateur. Vous avez probablement utilisé Sudo avant et cela a gâché les autorisations.

Sudo chown -R username:group ~/.rvm
Sudo chown -R username:group ~/.gem

Bien sûr, changez le nom d'utilisateur en votre nom d'utilisateur et le groupe en votre groupe

29
Pedro Nascimento

Lorsque vous les installez sans Sudo, Ruby ne sait pas où ils sont installés. Je ne me souviens pas où il les installe par défaut, probablement quelque part comme ~/.gems ou quelque chose. Quoi qu'il en soit. , vous pouvez dire Ruby que c'est là qu'ils sont installés en définissant la variable d'environnement GEM_HOME.

$ # assuming your gems are stored in ~/.gems
$ GEM_HOME="$HOME/.gems" Ruby my_program.rb

Si cela fonctionne, vous pouvez le mettre dans votre ~/.bashrc (il existe un certain nombre de fichiers possibles dans lesquels cela pourrait aller, selon votre système)

17
Joshua Cheek

Pour les utilisateurs Mac, cela fonctionne pour moi ...

  1. Ajoutez GEM_HOME à votre .bash_profile

Par exemple, nano ~/.bash_profile et ajoutez l'exportation GEM_HOME=/Users/Michael/.gem où se trouve le chemin vers votre propre dossier d'accueil

  1. Ajoutez les exécutables gem à votre chemin système

Aussi dans .bash_profile, ajouter export PATH="$GEM_HOME/bin:$PATH"

Source: http://michaelehead.com/2016/02/06/installing-gems-without-Sudo.html

9
eMarine

Vous devez installer Ruby Version Manager . Il stocke les rubis et les gemmes installés dans votre répertoire personnel, vous n'avez donc plus besoin d'utiliser Sudo pour installer les gemmes. Il a beaucoup plus de fonctionnalités en plus de cela. :)

6
Sergio Tulentsev

MacOS

brew install Ruby 

éditer ~/.zshrc pour zsh (pour Bash pourrait être quelque chose comme ~/.bash_aliases)

# By default, binaries installed by gem will be placed into:
# /usr/local/lib/Ruby/gems/2.6.0/bin
export GEM_HOME="/usr/local/lib/Ruby/gems/"
export PATH="$GEM_HOME/bin:$PATH"
1
leo.tan

J'ai résolu mon problème de la manière suivante: (j'ai Ubuntu 17.10)

Terminal ouvert et tapez:

echo "gem: --user-install" >> ~/.gemrc

Ajoutez ensuite le chemin bin de Ruby dans le fichier .bashrc

export PATH="$PATH:$HOME/.gem/Ruby/x.x.x/bin"
1
djangodude

essayez gem install package --install-dir $HOME/.gem.

N'oubliez pas de définir le chemin comme il a été mentionné avant export PATH="$PATH:$HOME/.gem/bin".

Vous devez considérer la modification de l'ordre PATH comme export PATH="$HOME/.gem/bin:$PATH". Cela peut arriver par exemple si vous essayez d'installer Rails dans votre répertoire local sur un système OS X mais qu'il y a déjà un exécutable intégré. Dans ce cas, si vous ne changez pas le chemin vous recevrez également la sortie suivante:

Rails n'est pas actuellement installé sur ce système. Pour obtenir la dernière version, tapez simplement:

$ Sudo gem installe des rails

Vous pouvez ensuite réexécuter votre commande "Rails".

Et en définissant la variable GEM_HOME comme export GEM_HOME="$HOME/.gems"