web-dev-qa-db-fra.com

Ignorer GEM car ses extensions ne sont pas construites

Sur mes ordinateurs de travail et à la maison, j'ai récemment mis à niveau Ruby à la version 2.3.1, en utilisant Ruby-install. J'utilise chruby comme sélecteur Ruby.

J'ai commencé à voir cet avertissement sur 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, ordinateur, la liste était beaucoup plus longue, mais facile à résoudre. Lorsque j'ai essayé le gem pristine GEM suggéré, il m'a dit qu'il ne pouvait pas trouver la gemme, alors j'ai exécuté gem install GEM et cela l'a résolu.

À la maison, rien ne fonctionne.

Les choses que j'ai essayées, du bon sens et diverses autres questions de Stack:

  • gem pristine GEM
  • gem pristine --all
  • désinstaller et réinstaller la gemme
  • gem update
  • gem update --system
  • bundle update
  • désinstaller et réinstaller bundler
  • désinstaller et réinstaller Rails (Bien que ce ne soit pas un problème spécifique à Rails.)
  • supprimer ~/.bundle/
  • en ouvrant XCode et en le laissant installer des extensions (il fallait le faire, mais cela ne réparait rien.)
  • exécuter brew doctor et résoudre tous les problèmes mineurs, puis brew update et brew upgrade
  • gem install curb (Je ne peux pas imaginer ce que ce joyau a à voir avec ce problème, mais deux personnes différentes l'ont répertorié comme la dernière étape de leur correction du même avertissement.)
76
Phillip Longman

Je suis tombé sur ce problème aujourd'hui - recevoir des avertissements comme celui-ci pour des gemmes qui n'étaient même pas installées!

... Eh bien, il s'avère que les gemmes ont été ont été installées - pour un Ruby différent de celui que j'avais activé avec chruby (2.2.3 vs 2.3.1). 

Le passage à tous les différents rubis et l'exécution de gem pristine --all sur chacun d'entre eux ont résolu le problème.

106
sevenseacat

J'ai rencontré ce problème et suivi les mêmes commandes que précédemment, allant même jusqu'à supprimer toutes les versions de Ruby précédemment installées. Cependant, l'erreur a persisté.

Il s'avère qu'il reste des gemmes pour les différentes versions (précédemment désinstallées) dans ~/.gem/Ruby/. Après avoir supprimé les dossiers que je n’utilise plus, les erreurs ont disparu.

11
opes

J'ai eu ce problème aujourd'hui aussi et cela m'a frustré car je ne pouvais pas taper car tout mon éditeur affichait des messages d'erreur rouges. 

Je ne suis pas tout à fait sûr de la cause exacte de ce problème, mais j'estime qu'il s'agit de car nous avons plusieurs versions de Ruby OR, plusieurs gestionnaires de versions de Ruby} _ installé, qui se écrasent et gâchent vos chemins vers les gemmes.

La commande gem est é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 de ceux-ci est installé, il retournera un chemin. Puis supprimez-les, assurez-vous de nettoyer complètement tous les répertoires et commencez par une nouvelle installation. 


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 personnel propre sur lequel travailler. J'ai réinstallé rbenv avec Comment installer Ruby 2.1.4 sur Ubuntu 14.04 . Et enfin;

rbenv rehash
6
Simon Somlai

J'ai tout fait mentionné ci-dessus, y compris

  • xcode-select --install
  • réinstaller Ruby
  • réinstaller toutes les gemmes
  • bijou vierge - tout 

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 vous rencontrez des difficultés avec ce problème après avoir tout essayé sur StackOverflow, essayez de redémarrer votre ordinateur.

4
Sebastian Kim

TL; DR - Les gemmes Ruby n'aiment pas les rubis qui partent de liens symboliques ou qui ont été déplacés de leur lieu de construction

Si le répertoire Ruby est appelé ou si les vars d'environnement pointent vers un répertoire lié par un lien symbolique, s'ils sont copiés ou renommés, ce message est probable. J'utilise chruby et je faisais un lien symbolique /opt/rubies/ -> /usr/local/Ruby/, mais la logique de recherche de bibliothèque dynamique de Ruby ne fonctionne pas bien avec cela.

La solution dans mon cas consistait à remplacer le lien symbolique par les rubis dans /opt/rubies/ et à exécuter gem pristine --all dans chaque Ruby. Pour les autres utilisateurs de RVM ou de Rbenv, bonne chance avec cela sans recommencer à zéro.

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

2
Barry

Si vous avez installé RVM, il est possible que vous récupériez l'erreur car vous avez installé des versions différentes.

Vérifiez et supprimez les versions inutiles, Mais je pense que ceci est pas bon approche ..

rvm list
rvm use Ruby-version
rvm remove Ruby-useless-version

Après avoir rafraîchi les cocoapodes, il devrait être injecté dans .rvm GEM_HOME

gem uninstall cocoapods
gem install cocoapods

pod COMMAND jettera probablement l'erreur à propos de minitest gem, donc - gem install minitest 

2
dimpiax

La suggestion de Libby de commencer une nouvelle session de terminal (qu'elle a commentée sur la réponse de Sebastian Kim) a fonctionné pour moi. Bien plus rapide que les autres aussi, je voulais en faire une réponse qui soit plus visible.

0
jim

C'est un vieux fil, mais je viens de découvrir ce problème moi-même. 

Vous n'avez pas besoin de redémarrer votre ordinateur, vous avez juste besoin d'actualiser votre environnement, vous pouvez le faire avec la commande rehash:

rehash

Depuis la page de manuel: rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.

0
yacc

Ajout de ma propre saveur ici. J'utilise rbenv installé via Homebrew et je reçois quatre de ces messages "en ignorant ... les extensions non construites". Plus précisément:

Ignoring bcrypt-3.1.12 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.12
Ignoring bindex-0.5.0 because its extensions are not built.  Try: gem pristine bindex --version 0.5.0
Ignoring bootsnap-1.3.2 because its extensions are not built.  Try: gem pristine bootsnap --version 1.3.2
Ignoring byebug-10.0.2 because its extensions are not built.  Try: gem pristine byebug --version 10.0.2

J'ai essayé beaucoup de choses dans ce fil sans succès. Enfin dans mon cas j'ai fait:

  • brew uninstall rbenv
  • rm -rf ~/.rbenv
  • brew install rbenv

À ce stade, je continuais à avoir des erreurs, mais maintenant je n'avais qu'une seule version de Ruby à gérer:

$ rbenv versions
* system (set by /Users/will/.rbenv/version)

À ce stade, j'ai essayé Sudo gem pristine --all mais les autorisations sur le répertoire Gems du système ont été refusées.

Alors je suis passé et couru vierge sur chaque bijou, comme

Sudo gem pristine bcrypt --version 3.1.12 (etc)

Et finalement, les erreurs ont disparu.

0
wrydere

J'ai eu le même problème et j'utilise rbenv. Pour une raison quelconque, mon paramètre global Rbenv a disparu. Afin de résoudre ce problème, je règle la version globale sur l'une de mes versions de rbenv ... par exemple:

rbenv global 2.5.1

0
Eric Jones

C'est également un problème lorsque vous développez sur Mac, puis créez une image Docker: https://forums.aws.Amazon.com/thread.jspa?messageID=879802&tstart=0

Lorsque vous effectuez un "bundle install --deployment", le bundleur crée un fichier répertoire des fournisseurs avec vos gemmes dedans. Notez que même si cela inclut vos gemmes dans le dossier local, il ne comprendra que le natif extensions pour votre plate-forme. Comme vous êtes sur macOS, ce sera Darwin . Vous devrez répéter le processus sur un linux x86 64 bits environnement.

0
Nathan Pierce

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

Trouvez cette solution ici: Mise à jour des extensions de vagabond et de pierres précieuses non intégrées

0
Jeff Wigal