web-dev-qa-db-fra.com

problème de permission d'installation de gemme

qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/Ruby-enterprise-1.8.7/lib/Ruby/gems/1.8 directory.

L'utilisateur de connexion actuel est qichunren, et l'utilisateur qichunre a une autorisation d'écriture avec le répertoire .gem. J'aimerais savoir pourquoi gem n'installe pas les fichiers dans mon répertoire home .gem en premier? Pourquoi mon gem commun veut d'abord installer des fichiers dans /opt/Ruby-enterprise-1.8.7/lib/Ruby/gems/1.8

82
qichunren

Pour une installation à l'échelle du système Ruby install, devenez root. Par exemple:

$ Sudo gem install hpricot

Cependant, l'approche moderne dans de nombreuses circonstances, y compris dans le développement, consiste à utiliser un outil qui vous permet d'installer et d'utiliser facilement Ruby en tant qu'utilisateur normal. Cela vous permet d'éviter d'avoir à devenir root. Il sont quelques-uns de ces outils, et celui que j'utilise est RVM .

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of Ruby into your ~
$ rvm install Ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME
49
yfeldblum

Essayez de définir GEM_HOME et GEM_PATH à ~/.gem,

Pour la session de terminal en cours, tapez simplement:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

Si vous souhaitez les définir à chaque fois que vous ouvrez un terminal, ajoutez les commandes ci-dessus à votre ~/.bashrc fichier.

Pour une solution plus complète de configuration d'un Ruby environnement personnalisé, voir ce tutoriel de Site5KB , qui décrit l'utilisation d'un .gemrc fichier.

158
meagar

J'obtenais cette erreur sur mon serveur partagé via l'hébergement 1and1. ma solution a été d'ajouter le --user-install option, qui l'installe simplement pour votre utilisateur connecté (c'est tout ce dont vous avez besoin dans un environnement de serveur partagé) exemple; installer sass

gem install sass --user-install
6
Max

Si vous utilisez rbenv et que cela se produit, vous devez ajouter ce qui suit à votre .bash_profile:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi
3
Kevin Qi

réinstaller Ruby résoudre mon problème.

brew install Ruby
0
jackyshan