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
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
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)
Pour les utilisateurs Mac, cela fonctionne pour moi ...
.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
Aussi dans .bash_profile
, ajouter export PATH="$GEM_HOME/bin:$PATH"
Source: http://michaelehead.com/2016/02/06/installing-gems-without-Sudo.html
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. :)
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"
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"
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"