Ruby sur OS X 10.9 Ignorer les gems car les extensions ne sont pas construites

36

Tous les quelques jours, cela se produit lorsque vous effectuez diverses opérations dans Ruby CLI (notamment à l'aide de l' knifeutilitaire de Chef) sous OS X (impossible de répliquer dans d'autres environnements: Linux, FreeBSD, etc.):

Ignoring bcrypt-3.1.7 because its extensions are not built.  Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built.  Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built.  Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built.  Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built.  Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built.  Try: gem pristine sqlite3-1.3.9

Et bien que ce soit une solution simple, cela continue. Est-ce que quelqu'un à déjà rencontré cela avant?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]
tony_perkis666
la source

Réponses:

5

Je suis récemment passé de rvmà chrubyet ai couru gem update --system, c'est quand le problème a commencé à se produire pour moi. Après cela, chaque fois que j'ai couru le paquet, j'ai été abattu avec les mêmes avertissements. Toujours pas sûr de ce qui a causé le problème.

Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6

Je ne sais pas ce qui a résolu le problème, mais j'ai fait deux choses et l'avertissement a disparu:

gem uninstall bundler
gem install bundler

gem install curb
lfender6445
la source
Curieusement, cela a commencé pour moi lorsque je suis passé de Ruby fourni avec OS X à RVM. Généralement, il disparaît de lui-même après quelques jours ou si j'ouvre une nouvelle session (ce qui est un peu compliqué quand il se produit à midi). Je dois généralement réinstaller tout ce que j'utilise à un moment donné, et c'est généralement Knife.
tony_perkis666
cela se passait pour des dizaines de gemmes sur ma machine. Je pense qu'ils ont juste dû être reconstruit
lfender6445
Pour ma part, j'ai dû désinstaller chaque bijou pour lequel il émettait un avertissement, puis le réinstaller avecbundle install
Noah Passalacqua
"J'ai été massacré" - wow.
B Seven
Peu importe ce que j'essaie You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, ces problèmes ont commencé par eux-mêmes, je n'utilise même pas le rubis pour autant que je sache. Mais je reçois des erreurs à propos d'extensions non construites clocale-0.0.3chaque fois que je démarre un nouveau shell
Vadorequest
62

Dans mon cas, je commence à voir ces erreurs après l'installation rvm

Je résous ce problème avec: gem pristine --all

Skywinder
la source
quelle commande utile
lfender6445
2
Cela a fonctionné ... Mais je ne sais pas pourquoi
Hubro
1
la désinstallation de bundler et l'installation n'ont pas fonctionné. Mais celui-ci a fonctionné! Merci!
Srikanth Jeeva
3
Cela aurait dû être la réponse acceptée.
ILikeTurtles
19

Ce problème se produit si une gemme a été compilée avec une bibliothèque différente de celle en cours d'exécution. Par exemple, si on utilise un ruby ​​situé dans son répertoire personnel avec chruby et installe des gemmes sur ~ / .gem / ruby, mais exécute un script qui appelle / usr / bin / ruby, qui réutilise les gemmes qui y sont installées. Dans ce cas, gem pristine --allcela n’aidera pas, car les gemmes ne peuvent être liées qu’à une version de rubis.

Mic92
la source
Ahhhh merci! Je recevais cette erreur en exécutant "rails s". Je suis passé à "bundle exec rails s" et le problème a disparu.
Gerry
1
ceci devrait être la réponse acceptée
Dominik Schreiber
1
Cette réponse est juste. Si le problème se produit dans un référentiel Rails dans lequel les gems sont enregistrés vendor/bundle, supprimez-les simplement rm -rf vendor/bundleet réinstallez-les bundle install.
vmarquet
Merci. J'ai essayé gem pristine --alljusqu'à ce que mon visage soit bleu et maintenant je sais pourquoi cela n'a pas fonctionné ...
GDP2
2

Cela a fonctionné pour moi sur MacOs Sierra:

xcode-select --install
gem install nokogiri

J'avais déjà installé l'intégralité du xcode avant d'exécuter les commandes ci-dessus, mais je devais le faire quand même, peut-être parce que le premier script met à jour certaines bibliothèques / dépendances internes.

Javad Sadeqzadeh
la source
C'est ce que je cherchais pour la solution MacOS Sierra. Merci
Sakares
1

Assurez-vous que vous utilisez "gem pristine --all" pour la bonne version de ruby. Si vous appelez / usr / bin / ruby ​​... utilisez "/ usr / bin / gem pristine --all". Ce n'est pas évident si vous utilisez rvm et que vous avez 10 versions de ruby ​​installées.

Cela a résolu mon problème pendant un jour et puis il est revenu.

Ce qui semble être une solution plus permanente est de faire "rvm reset" pour que le ruby ​​par défaut soit la version OSX installée / usr / bin / ruby ​​et / usr / bin / gem. Si je veux utiliser une version plus récente de ruby ​​pour un projet, j'utilise .ruby-version et .ruby-gemset dans le répertoire racine du projet afin de définir explicitement la version de ruby ​​que je souhaite utiliser. Pas idéal ... mais cela devrait faire disparaître cette erreur.

neuronsong
la source
0

Dans mon cas:

rvm get stable

sudo gem pristine --all

skozz
la source
0

Je suis très nouveau dans le domaine des rails, donc ce conseil pourrait être complètement erroné, mais comme aucune autre solution ne fonctionnait pour moi, je pensais partager le mien.

Mic92 et Gerry m'ont mis sur la bonne voie: j'utilisais rails sce qui peut causer des erreurs car il utilise une version de rails pouvant être une version différente de celle du projet.

J'ai essayé de me connecter avec bin/rails server, j'ai eu une erreur différente (gemmes manquantes) alors j'ai courubundle install

À ce stade, j'ai une troisième erreur ("version de bibliothèque incompatible"), qui a spring stopguéri.

Puis j'ai couru à rails generate controllernouveau, le printemps a repris et tout a fonctionné (j'ai un peu pleuré).

mrtnmgs
la source