web-dev-qa-db-fra.com

Votre compte utilisateur n'est pas autorisé à installer sur le système RubyGems

J'exécute la commande

bundle install

dans un dossier de projet. Dans certains dossiers de projet, il produira une erreur et dans d'autres dossiers de projet, il ne produira pas d'erreur. L'erreur est:

Votre compte utilisateur n'est pas autorisé à installer sur le système RubyGems

Je sais que cela peut être résolu en suivant les conseils recommandés:

bundle install --path vendor/bundle

Ma question est pourquoi le comportement est-il incohérent?

17
William Entriken

Dans mon cas, j'ai résolu de faire exactement ce que le message d'erreur suggère:

 Votre compte d'utilisateur n'est pas autorisé à installer sur le système RubyGems. 
 Vous pouvez annuler cette installation et exécuter: 
 
 Bundle install --path vendor/bundle 
 
 pour installer les gemmes dans ./vendor/bundle/

Donc, au lieu de:

bundle install

Iran:

bundle install --path vendor/bundle

C'était la solution pour ce type .

L'inconvénient de cette solution est qu'elle crée un dossier vendor dans le dossier actuel, qui peut être ajouté à .gitignore s'il s'agit de distribuer l'application via Git.

Habituellement, si vous utilisez RVM, rbenv ou chruby pour installer Ruby, toutes les gemmes seront installées dans votre dossier personnel sous ~/.rbenv/Ruby-version/...

Si vous utilisez votre système Ruby cependant (celui qui est installé par défaut) les gemmes sont installées à côté de lui dans un emplacement auquel vous n'avez pas accès sans Sudo.

Je suppose que votre gestionnaire de versions utilise par défaut le système Ruby mais certains de vos projets contiennent un fichier .Ruby-version qui lui indique d'utiliser une version différente de Ruby auquel vous avez accès.

8
isaacsloan

Bonne solution rbenv

  • Évite Sudo
  • Évite l'installation chez le fournisseur/bundle

Le problème, au moins pour moi, était que le bundler lui-même n'était pas installé dans ma version rbenv Ruby. Même si le bundler existait et semblait utilisable ... sauf l'erreur d'autorisation.

L'une des choses qui m'a permis de comprendre était que sur la ligne de commande elle-même, je pouvais installer des gemmes correctement et ne pas recevoir le message d'erreur. J'ai fait cela pendant un certain temps comme solution de contournement jusqu'à ce que je décide de résoudre le problème de manière permanente, comme indiqué ci-dessous:

Pour le réparer, j'ai fait:

rbenv local 2.5.0 # Make sure I'm using a local version that exists
gem list | grep bundler # Note no output! Need to fix that!
gem install bundler
rbenv rehash
bundle (within my project that has a Gem file)
4
Michael Durrant

Utilisation de RVM:

Vous devez installer rvm pour votre utilisateur unique ( utilisateur standard/non root ), dans votre $HOME répertoire (il n'est pas installé si vous n'avez pas /home/youruser/.rvm répertoire.

Comme spécifié sur le site rvm dans la section "Emplacement d'installation pour un seul utilisateur: ~/.rvm /", pour installer rvm pour une exécution mono-utilisateur:

cd
\curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles

Maintenant, rvm doit être installé. Comme dans une autre invite, actualisez rvm (avec votre nom d'utilisateur fourni):

source /home/---YOURUSERNAME---/.rvm/scripts/rvm

Pour empêcher les invites d'installation des packages Sudo-need, exécutez:

rvm autolibs disable

Vous pouvez installer Ruby pour votre utilisateur uniquement, dans la version 2.5 (ou toute autre, répertoriée dans rvm list known)

rvm install 2.5

Explication:

Vous essayez probablement d'installer rvm en utilisant Sudo et peut-être avec ce paquet pour ubunt mais vous n'avez pas les permissions Sudo.

Cette invite vous indique que vous ne pouvez pas regrouper des gemmes à l'échelle mondiale pour l'ensemble du système, ce qui peut être bon pour votre machine privée, mais pas pour votre utilisateur d'entreprise (machine), qui est souvent administré par quelqu'un d'autre.

Si rvm sera installé dans votre $HOME les gemmes y seront regroupées, comme d'habitude.

Le comportement peut être incohérent car d'autres utilisateurs ont rvm installé dans leur $HOME répertoire

3
ToTenMilan

Dans mon cas, j'avais un $BUNDLE_PATH sans suffisamment d'autorisations à l'utilisateur du bundler pour écrire.

Your user account isn't allowed to install to the system RubyGems
bundle install --path vendor/bundle
1
pocheptsov

Récemment fait face au même problème. J'utilise rvm

Sudo chown -R $USER ~/.rvm m'a aidé

0
Oleg Sobchuk