Ignorer GEM car ses extensions ne sont pas construites

Sur mon ordinateur personnel comme sur mon ordinateur, j’ai récemment mis à niveau Ruby vers la version 2.3.1, en utilisant ruby-install . J’utilise chruby comme mon sélecteur Ruby.

J’ai commencé à voir cet avertissement dans mon terminal:

 Ignoring bcrypt-3.1.11 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.11 Ignoring bcrypt-3.1.10 because its extensions are not built. Try: gem pristine bcrypt --version 3.1.10 Ignoring binding_of_caller-0.7.2 because its extensions are not built. Try: gem pristine binding_of_caller --version 0.7.2 Ignoring byebug-9.0.5 because its extensions are not built. Try: gem pristine byebug --version 9.0.5 Ignoring byebug-5.0.0 because its extensions are not built. Try: gem pristine byebug --version 5.0.0 Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built. Try: gem pristine concurrent-ruby-ext --version 1.0.2 Ignoring debug_inspector-0.0.2 because its extensions are not built. Try: gem pristine debug_inspector --version 0.0.2 

Sur mon travail, l’ordinateur, la liste était beaucoup plus longue, mais facile à résoudre. Lorsque j’ai essayé le gem pristine GEM , il m’a dit qu’il ne pouvait pas trouver la gemme, alors j’ai lancé gem install GEM , et ça l’a résolu.

À la maison, rien ne fonctionne.

Choses que j’ai essayées, du bon sens et de diverses autres questions de Stack:

  • gem pristine GEM
  • gem pristine --all
  • désinstaller et réinstaller la gem
  • gem update
  • gem update --system
  • bundle update
  • désinstaller et réinstaller le bundler
  • désinstaller et réinstaller les rails (bien que ce ne soit pas un problème spécifique à Rails).
  • supprimer ~/.bundle/
  • ouvrir XCode et le laisser installer des extensions (il devait le faire, mais il n’a rien réparé).
  • en train de brew doctor le brew doctor et de résoudre tous les problèmes mineurs, puis de brew update et d’ brew upgrade
  • gem install curb (je ne peux pas imaginer ce que ce bijou a à voir avec ce problème, mais deux personnes différentes l’ont répertorié comme la dernière étape de leur correction au même avertissement.)

Je suis tombé sur ce problème exact aujourd’hui – obtenir des avertissements comme celui-ci pour les gemmes qui n’ont même pas été installées!

… Eh bien, il s’avère que les gemmes ont été installées – pour un rbuy différent de celui que j’avais réglé avec chruby (2.2.3 vs 2.3.1).

Passer à tous les différents rbuy et gem pristine --all Tous ont résolu le problème.

Je suis tombé sur ce problème et j’ai suivi les mêmes commandes que ci-dessus, allant même jusqu’à supprimer toutes mes versions de Ruby précédemment installées. Cependant, l’erreur a persisté.

Il s’est avéré qu’il y avait des joyaux restants pour les différentes versions (précédemment désinstallées) dans ~/.gem/ruby/ . Après avoir supprimé les dossiers que je n’utilisais plus, les erreurs ont disparu.

TL; DR – Les gemmes Ruby n’aiment pas les rbuy exécutés à partir de liens symboliques ou déplacés de l’endroit où ils ont été construits (à cause des shebangs intégrés)

Si le répertoire Ruby est appelé ou que l’environnement vars pointe vers un répertoire contenant des liens symboliques ou est copié ou renommé, ce message est probable. J’utilise chruby et je suis en train de créer des liens /opt/rubies/ -> /usr/local/ruby/ , mais la logique de recherche dynamic des bibliothèques de Ruby ne fonctionne pas bien avec cela.

La solution dans mon cas était de remplacer le lien symbolique par des rbuy réels dans /opt/rubies/ et d’exécuter gem pristine --all dans chaque Ruby. Pour les autres utilisateurs de RVM ou de Rbenv, bonne chance sans recommencer à zéro.

Ce n’est peut-être pas votre problème exact, mais j’espère que cela vous aidera.

J’ai fait tout ce qui est mentionné ci-dessus, y compris

  • xcode-select –install
  • réinstallez ruby
  • réinstaller toutes les gemmes
  • gem pristine –all

mais le problème était le même pour moi. Je viens de redémarrer mon Mac comme dernier espoir et les messages d’avertissement ont disparu.

Bizarre, mais si quelqu’un est aux sockets avec ce problème après avoir tout essayé sur StackOverflow, essayez de redémarrer votre ordinateur.

J’ai eu ce problème aujourd’hui aussi et il est frustrant parce que je ne pouvais pas taper parce que mon éditeur entier a clignoté en rouge avec des messages d’erreur.

Je ne suis pas tout à fait sûr de ce qui l’a provoqué, mais je pense que c’est parce que nous avons plusieurs versions de Ruby ou plusieurs gestionnaires de versions de Ruby installés et qu’ils se écrasent et gâchent les gemmes.

La commande gem également écrasée lorsque vous avez rbenv et rvm.

Voir ceux que vous avez installés en tapant;

 which rvm which rbenv which chruby 

Si l’un d’entre eux est installé, il renverra un chemin. Puis supprimez-les, assurez-vous de nettoyer complètement tous les répertoires et commencez par une installation propre.


Retirer

Voici ce que j’ai fait pour rvm ;

 rvm implode gem uninstall rvm rm -rf ~/.rvm rm -rf ~/.rvmrc 

Voici ce que j’ai fait pour rbenv

D’abord installé https://github.com/bernsie/rbenv-clean , puis

 rbenv clean sudo apt-get remove rbenv rm -rf ~/.rbenv 

Réinstaller

Ensuite, vous avez un répertoire de base propre à utiliser. J’ai installé rbenv avec Comment installer Ruby 2.1.4 sur Ubuntu 14.04 . Et enfin;

 rbenv rehash 

Si vous avez installé RVM, il est possible que vous renconsortingez l’erreur car vous avez installé différentes versions.

Vérifiez et supprimez les versions inutiles, mais je pense que ce n’est pas une bonne approche. De toute façon, les erreurs ont disparu.

 rvm list rvm use ruby-version rvm remove ruby-useless-version 

Après le rafraîchissement des cocoapodes, il doit être injecté dans .rvm GEM_HOME

 gem uninstall cocoapods gem install cocoapods 

Probablement pod COMMAND lancera l’erreur sur minitest gem, donc – gem install minitest

Désinstaller et réinstaller Vagrant fonctionne également. Il y a un script bash unistall.tool inclus dans l’image du programme d’installation .dmg qui va supprimer Vagrant.

J’ai trouvé cette solution ici: Mise à jour des extensions vagrantes et gemmes non intégrées