web-dev-qa-db-fra.com

RVM Bundle Install Missing Gem Error même si gem est installé

J'obtiens l'erreur suivante même si j'ai actuellement le gem Bundler installé (il apparaît lorsque j'exécute la liste $ gem).

ERROR: Gem bundler is not installed, run `gem install bundler` first.

J'utilise RVM et mon $ PATH est le suivant:

/Users/cjstingl/.rvm/gems/Ruby-1.9.2-p290@Rails3tutorial2ndEd/bin:
/Users/cjstingl/.rvm/gems/Ruby-1.9.2-p290@global/bin:
/Users/cjstingl/.rvm/rubies/Ruby-1.9.2-p290/bin:
/Users/cjstingl/.rvm/bin:
/Users/cjstingl/.bin:
/usr/local/sbin:
/usr/local/Cellar/php/5.3.6/bin:
/usr/local/share/python:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin

Aussi c'est mon bijou env

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - Ruby VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/cjstingl/.rvm/gems/Ruby-1.9.2-p290@Rails3tutorial2ndEd
  - Ruby EXECUTABLE: /Users/cjstingl/.rvm/rubies/Ruby-1.9.2-p290/bin/Ruby
  - EXECUTABLE DIRECTORY: /Users/cjstingl/.rvm/gems/Ruby-1.9.2-p290@Rails3tutorial2ndEd/bin
  - RUBYGEMS PLATFORMS:
    - Ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/cjstingl/.rvm/gems/Ruby-1.9.2-p290@Rails3tutorial2ndEd
     - /Users/cjstingl/.rvm/gems/Ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => false
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "-n/usr/local/bin --no-ri --no-rdoc --no-user-install"
  - REMOTE SOURCES:
     - http://rubygems.org/

Aussi: L'utilisation de la commande bundle -v renvoie la même erreur

J'ai essayé d'imploser RVM et de réinstaller ce qui ne semble pas fonctionner. Je suis perplexe et toute aide serait appréciée.

55
cstingl

L'ajout de ce qui suit (extrait de .bash_profile) à .bashrc l'a corrigé pour moi:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
94
Roman

J'ai eu le même problème avec une nouvelle installation de RVM 1.10.3. Après la réinstallation, j'ai remarqué que bundler est installé et que les répertoires <gemset>/bin sont ajoutés à mon $ PATH, mais ces répertoires bin n'existent pas réellement. Je pense que c'est juste un bug RVM.

Comme solution rapide, j'ai copié manuellement le binaire bundle dans un répertoire bin RVM qui existe. Cela semble avoir résolu mon problème:

$ cd ~/.rvm
$ cp gems/Ruby-1.9.3-p0/gems/bundler-1.0.21/bin/bundle rubies/Ruby-1.9.3-p0/bin/

Les versions Ruby et Bundler dans ces chemins seront probablement différentes pour vous.


La solution ci-dessus fonctionne mais elle me dérangeait donc je l'ai mise aux gars de rvm; il s'avère que mon fichier ~/.gemrc remplaçait l'emplacement de la gemme avec cette ligne:

- "gem" => "-n/usr/local/bin"

Le retirer l'a réparé pour moi. Voir ici pour le fil complet: https://github.com/wayneeseguin/rvm/issues/1043#issuecomment-7336267

19
Rick Fletcher

J'ai eu un problème similaire, et la réponse (au moins pour moi) était incroyablement simple après de nombreux essais et erreurs.

C'est certainement un problème de chemin, et la mention de l'ordre des chemins par @ gamecreature a été pour moi un indice crucial.

Je ne sais pas comment cela s'est produit, mais j'avais $HOME/.rvm/bin comme premier élément de mon export PATH.

Cela n'est pas nécessaire car ce répertoire est ajouté au chemin d'accès dans le bon ordre via la recherche du fichier rvm.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Mon correctif consistait donc simplement à supprimer $HOME/.rvm/bin depuis mon export PATH.

Si vous avez plusieurs fichiers init (.bashrc, .bash_profile, .profile), assurez-vous de suivre les conseils sur la page de dépannage rvm :

assurez-vous que le sourcing du fichier rvm se produit en dernier dans vos fichiers de profil (.bash_profile/.bashrc/.zshrc) essentiellement après toute personnalisation de PATH/fonctions ou alias.

Mais je recommanderais également de vérifier le reste de votre définition de PATH pour vous assurer qu'il n'y a pas de doublons déclarés qui auraient la priorité.

10
Patrick Smith

J'ai eu un problème similaire. Il s'est avéré que je n'avais pas de fichier .rvmrc spécifique au projet. Je viens de le créer en utilisant

rvm --rvmrc --create 1.9.3@my_project_name

Dans mon dossier de projet

Cela a résolu le problème

7

Si vous arrivez au fond des choses et que vous vous cognez toujours la tête contre le mur ...

Mon problème était que rvm install 1.8.7 a échoué tard dans l'installation, mais semble avoir réussi (j'avais Ruby 1.8.7 et je pouvais créer des jeux de gemmes)

Mais il semble que $GEM_HOME est défini tard dans le script d'installation et comme cela n'a pas été défini, rvm ne cherchait pas au bon endroit pour les gemmes.

J'ai couru rvm reinstall 1.8.7 et a soigneusement recherché les erreurs.

Ce qui m'a informé, c'est ce sujet: https://groups.google.com/d/topic/rubyversionmanager/aUBDxbBzZpE/discussion

Vous pouvez vérifier si c'est votre problème en exécutant

echo $GEM_HOME ou gem env ou en vérifiant votre journal d'installation rvm (voir le lien ci-dessus)

Voyez-vous votre Ruby version et nom du jeu de gemmes dans votre Gem Path? Sinon, peut-être que l'installation de rvm a échoué.

5
jbaldo

Je ne sais pas si c'est la cause de ton problème. Mais j'ai eu un problème similaire. La raison en était que mon environnement RVM n'était pas correct.

J'avais 2 utilisateurs, un qui fonctionnait, un qui ne fonctionnait pas. L'utilisateur actif a utilisé le script de bundle suivant. (sortie de: quel bundle)

/home/rvm/.rvm/gems/Ruby-1.9.3-p0/bin/bundle

Le mauvais utilisateur d'installation rvm a utilisé:

/home/user/.rvm/bin/bundle

La raison en est la mauvaise commande $ PATH. Le chemin .rvm/gems/Ruby -.../bin doit être placé avant le chemin ./rvm/bin.

Dans ma situation, la cause était que j'ai défini la variable $ PATH sur un rvm d'un autre utilisateur. J'ai résolu le problème en ajoutant un lien symbolique vers la RVM de l'utilisateur et en changeant mon chemin de:

/home/rvm/.rvm/bin

à

/home/user/.rvm/bin

Lorsque le code ci-dessus ne fonctionne pas pour vous, vous pouvez ajuster manuellement le chemin juste après le chargement de rvm.

4
gamecreature

Essayez ceci: https://rvm.io/integration/gnome-terminal/

il dit à propos des profils exécutés au démarrage, j'utilise ubuntu 12.10 et cela fonctionne. La seule chose que vous avez à faire est de définir "Exécuter la commande en tant que shell de connexion" dans les préférences du profil du terminal (titre et commande de l'onglet).

J'espère que cela fait gagner du temps à quelqu'un.

4
mArtinko5MB

Vous savez quoi, c'est évidemment le problème de votre variable PATH.

Vous devez vous assurer que which bundle être comme /usr/local/rvm/gems/Ruby-1.9.3-p194/bin/bundle au lieu de quelque chose comme /usr/local/rvm/bin/bundle.

allusion:

Vous venez d'utiliser PATH = une liste explicite dans votre fichier .zshrc?

Ensuite, vous devriez changer cela en PATH = $ PATH: une liste

3
Minqi Pan

Cela m'est également arrivé après être passé à un nouveau jeu de gemmes vide et avoir exécuté gem install bundler. La raison en est que le shell se "souvient" du dernier bundle exécutable que vous avez utilisé. Pour résoudre ce problème (au moins dans bash- descendants):

hash -r
3
Matt Mitchell

Après avoir installé RVM sur plusieurs machines avec la même configuration et avoir rencontré des problèmes avec RVM sur une mais sans avoir ces problèmes sur une autre, j'ai décidé de chercher quelque chose de mieux, moins sujet aux erreurs.

J'ai trouvé et je suis passé à rbenv, ce qui est beaucoup plus simpliste que RVM.

Et comme le dit README de rbenv:

rbenv fait…

  • Laissez-vous modifier la version globale Ruby version par utilisateur.
  • Fournir un support pour par projet Ruby versions .
  • Vous permet de remplacer la Ruby par une variable d'environnement.

Contrairement à rvm, rbenv ne fait pas…

  • Doit être chargé dans votre shell. Au lieu de cela, l'approche shim de rbenv fonctionne en ajoutant un répertoire à votre $ PATH.
  • Remplacer les commandes Shell comme cd. C'est dangereux et sujet aux erreurs.
  • Avoir un fichier de configuration. Il n'y a rien à configurer sauf la version de Ruby que vous souhaitez utiliser.
  • Installez Ruby. Vous pouvez construire et installer Ruby vous-même, ou utiliser Ruby-build pour automatiser le processus.
  • Gérer les ensembles de gemmes. Bundler est une meilleure façon de gérer les dépendances des applications. Si vous avez des projets qui n'utilisent pas encore Bundler, vous pouvez installer le plugin rbenv-gemset .
  • Nécessite des modifications dans les bibliothèques Ruby pour des raisons de compatibilité. La simplicité de rbenv signifie que tant qu'il se trouve dans votre $ PATH, - rien d'autre a besoin de le savoir.
  • Vous avertit lorsque vous passez à un projet. Au lieu d'exécuter du code arbitraire, rbenv lit uniquement le nom de la version de chaque projet. Il n'y a rien à "faire confiance".

Donc, si vous me demandez, videz RVM et passez à rbenv.

3
Koen.

J'ai eu un problème très similaire pour une raison légèrement différente. Mon répertoire personnel avait un .gemrc fichier laissé par une ancienne configuration Ruby, et je l'avais manqué lors de la suppression des anciens fichiers. Il semble que gem confondait les paramètres rvm avec les paramètres de ce fichier. Une fois que j'ai supprimé (et certains fichiers installés à l'ancien emplacement), tout a bien fonctionné.

2
Daniel James

J'ai rencontré le même problème plus tôt dans la journée. L'approche que j'ai utilisée pour résoudre le problème était la suivante:

1) Courir

cap Shell

sur la même machine que vous exécutez normalement cap deploy. Ensuite, exécutez

env | sort

Cela exécute la commande sur le serveur distant. Copiez et collez la sortie dans un fichier texte local, par ex. capenv.txt

2) SSH dans le même serveur distant et exécutez la même commande, à savoir env | Trier. Enregistrez-le localement sous forme de fichier texte, par exemple sshenv.txt

3) Différez les deux fichiers et voyez ce qui se trouve dans sshenv.txt qui ne l'est pas dans capenv.txt - c'est probablement là que réside votre problème.

< ++CAP ++
< _=/bin/sh
---
> ++ SSH ++
> __array_start=0
14a15
> PS1=\[\e]2;tracker@charlotte\a\e[0;31m LIVE:\u@\h \w> \e[0m
18d18
< rvm_env_string=Ruby-1.9.3-p194
21d20
< rvm_Ruby_string=Ruby-1.9.3-p194
27c26,28
< USER=tracker
\ No newline at end of file
---
> USER=tracker
> USES_BASHRC=bashrc
> _=/usr/bin/env

4) J'ai immédiatement remarqué que l'interpréteur Shell n'était pas réglé sur bash. Cela peut être résolu en ajoutant

set :Shell, '/usr/bin/bash'

dans votre fichier deploy.rb. Cela a résolu mon problème

2
gordonbanderson

J'ai installé Ruby 1.9.3 par rvm. Une fois git octopress terminé, éditez simplement $ path_of_git/.rvmrc comme ceci "rvm use 1.9.3". ET PUIS exécutez la commande de "cd ..; cd $ path_of_git ". Après cela, il vous demandera de faire confiance au .rvmrc ou non. Tapez" y "pour que le fichier .rvmrc fonctionne.

2
user1417226

Cela fonctionne pour moi lorsque je spécifie la version de Ruby je veux utiliser:

$ rvm use 1.9.2-p290
Using /Users/myname/.rvm/gems/Ruby-1.9.2-p290
1
Erik Shilts

J'ai moi-même rencontré ce problème après avoir mis à jour mon niveau de patch Ruby. J'ai exécuté which gem et a découvert qu'il utilisait une version globale de rubygems, dans ce cas le chemin était ~/.rvm/bin/gem. J'ai donc couru rvm rubygems current, qui l'a installé dans ~/.rvm/rubies/Ruby-1.8.7-p370/bin/gem. Ran gem install bundler et bundle à nouveau. Problème résolu.

1
lobati

Ran dans le même problème (où j'ai continué à installer le bundler et rvm ne le reconnaîtra pas) sur l'un de mes ordinateurs portables. Je suppose que j'ai peut-être mal installé RVM alors que j'étais encore un Rails noob. J'ai essayé la solution ci-dessus mais cela n'a pas fonctionné pour moi. Après avoir déconné avec, j'ai abandonné et supprimé RVM et réinstallez-le. Je pensais que c'était en raison d'un problème de configuration étrange profondément imbriqué quelque part ou. Voici les étapes que j'ai prises:

Supprimer RVM:

rvm implode

Réinstallez RVM:

curl -L https://get.rvm.io | bash -s stable --Rails
rvm reload

Comme je travaille sur un ancien projet Rails pour le travail, j'ai dû installer ree-1.8.7-2012.02

rvm install ree-1.8.7-2012.02

Bien sûr, la loi de Murphy s'applique toujours. J'ai rencontré un autre problème où mon ordinateur portable n'a pas pu trouver un compilateur C non cassé même si Xcode est installé avec gcc. Mes dernières étapes allaient https://github.com/kennethreitz/osx-gcc-installer et installer leur package et réinstaller ree.

J'espère que cette solution de dernier recours aide quelqu'un. Bonne chance!

0
Jeff

J'ai eu ce problème également. J'ai résolu mon problème en spécifiant un ensemble de gemmes.

$ bundle install
ERROR: Gem bundler is not installed, run `gem install bundler` first.

$ rvm gemdir
/usr/local/rvm/gems/Ruby-1.9.3-p194

$ rvm gemset list

gemsets for Ruby-1.9.3-p194 (found in /usr/local/rvm/gems/Ruby-1.9.3-p194)
   global
   Rails32

$ rvm gemset use Rails32

Using Ruby-1.9.3-p194 with gemset Rails32

$ Rails s

Could not find rake-10.0.4 in any of the sources

Run `bundle install` to install missing gems.

$ bundle install

Fetching gem metadata from https://rubygems.org/.......
{And voila! it worked!}
0
MorningHacker

Pour ma configuration, l'ajout de l'utilisateur exécuté par Apache au groupe rvm a fonctionné

usermod -a -G rvm www-data
0
coneybeare

J'ai eu le même problème lorsque j'avais un fichier .rvmrc Vide dans le répertoire dans lequel je suis passé (rvm 1.15.1). De toute évidence, il existe de nombreuses causes à cette erreur

0
mloughran