Fonctionnement 'Sudo gem list --local
' et 'gem list --local
'donnez-moi des résultats différents. Mon chemin d'accès aux gemmes est défini dans mon dossier personnel et ne contient que les gemmes de 'gem list --local
'.
Ce n’est probablement pas bien d’avoir installé des gemmes dans des répertoires différents sur mon ordinateur. Par conséquent, devrais-je configurer le chemin de la gemme différemment, et devrais-je toujours utiliser Sudo
lors de l’installation de quelque chose?
my ~/.profile
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
~/.bash_profile est vide.
Contrairement à tous les autres posts, je suggère de ne PAS utiliser Sudo
lors de l'installation de gems.
Au lieu de cela, je vous recommande d'installer RVM et de commencer une vie heureuse avec des maisons portables à pierres précieuses et une version différente de Ruby, tous vivant sous le même toit.
Pour les non-initiés, à partir de la documentation :
RVM est un outil de ligne de commande qui nous permet d’installer, de gérer et de travailler facilement avec plusieurs environnements et ensembles de gemmes Ruby).
La raison pour laquelle installer des gemmes avec Sudo
est pire que simplement gem install
est parce qu’il installe les gemmes pour TOUS LES UTILISATEURS comme root
. Cela pourrait convenir si vous êtes la seule personne à utiliser la machine, mais si vous ne l'êtes pas, cela peut causer des problèmes d'étrangeté.
Si vous décidez de supprimer toutes vos gemmes et de recommencer, il est beaucoup plus facile et plus sûr de le faire en tant qu'utilisateur non root.
Si vous décidez que vous voulez utiliser RVM
alors utiliser Sudo
causera toutes sortes d'étranges car chaque Ruby que vous installez avec RVM
a son propre GEM_HOME.
En outre, c’est agréable si vous pouvez rendre votre environnement de développement aussi proche que possible de votre environnement de production. En production, vous devrez probablement installer gems en tant qu’utilisateur non root.
Vous pouvez également installer des gems dans votre environnement local (sans Sudo
) avec
gem install --user-install <gemname>
Je vous recommande de ne pas vous mêler de votre configuration au niveau du système, même s'il s'agit d'un ordinateur mono-utilisateur.
Vous pouvez vérifier où se trouvent les pierres précieuses en regardant gempaths avec gem environment
. Dans mon cas c'est "~/.gem/Ruby/1.8".
Si vous avez besoin d'ajouter des binaires d'installations locales à votre chemin, vous pouvez ajouter quelque chose à votre base, comme:
if which Ruby >/dev/null && which gem >/dev/null; then
PATH="$(Ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi
Mieux encore, mettez --user-install
dans votre fichier ~/.gemrc afin que vous n'ayez pas à le saisir à chaque fois
gem: --user-install
Au cas où vous
ajoutez ce qui suit à votre .bash_profile
:
export GEM_HOME=/Users/‹your_user›/.gem
export PATH="$GEM_HOME/bin:$PATH"
Ouvrez un nouvel onglet dans Terminal OR source ~/.bash_profile
et vous êtes prêt à partir!
Dans le même ordre d'idées (pour les utilisateurs de groupeurs), si vous voulez une alternative plus légère à RVM qui mettra tout dans un répertoire bien connu de l'utilisateur, je vous recommande d'utiliser:
bundle install --path $HOME/.gem
si vous voulez installer des gemmes au même endroit que
gem install --user-install GEMNAME
va les installer, .gem/Ruby/RUBYVERSION
dans votre homedir. (Voir l'autre commentaire sur cette question à propos de --user-install
.)
Cela rendra les pierres précieuses visibles à gem list
, désinstallable via gem uninstall
, etc. sans avoir besoin de Sudo
accès. Les scripts exécutables installés par gem ou bundler peuvent être placés dans votre chemin en ajoutant
$HOME/.gem/Ruby/RUBYVERSION/bin
à ton $PATH
. gem
lui-même vous en parle si elle n'est pas définie lorsque vous faites gem install --user-install
.
Sudo gem install --no-user-install <gem-name>
installera votre bijou globalement, c’est-à-dire qu’il sera disponible dans tous les contextes de l’utilisateur.
Vous pouvez installer des gems dans un dossier spécifique (par exemple, vendeur /) dans votre Rails en utilisant:
bundle install --path vendor