Ruby w OS X 10.9 Ignorowanie klejnotów, ponieważ rozszerzenia nie są budowane

36

Co kilka dni będzie to miało miejsce podczas robienia różnych rzeczy w Ruby CLI (zwłaszcza przy użyciu knifenarzędzia dla Chef) na OS X (niemożność replikacji w innych środowiskach; Linux, FreeBSD itp.):

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

I choć jest to prosta poprawka, wciąż się dzieje. Czy ktoś już się z tym spotkał?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]
tony_perkis666
źródło

Odpowiedzi:

5

Niedawno przełączony od rvmcelu chrubyi ran gem update --system, to kiedy problem zaczął występujące dla mnie. Potem, za każdym razem, gdy prowadziłem pakiet, zabijano mnie tymi samymi ostrzeżeniami. Nadal nie jestem pewien, co spowodowało problem.

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

Nie jestem pewien, co to naprawiło, ale zrobiłem 2 rzeczy i ostrzeżenie zniknęło:

gem uninstall bundler
gem install bundler

gem install curb
lfender6445
źródło
Co dziwne, zaczęło się dla mnie, kiedy przestawiłem się z Rubiego w pakiecie OS X na RVM. Ogólnie rzecz biorąc, czyści się samo po kilku dniach lub jeśli otworzę nową sesję (co jest pewnego rodzaju kłopotem, gdy nastąpi w południe). Zasadniczo muszę ponownie instalować wszystko, czego używam w danym momencie, i zwykle jest to Knife.
tony_perkis666
działo się to z dziesiątkami klejnotów na mojej maszynie. myślę, że po prostu trzeba było je odbudować
lfender6445,
Dla siebie musiałem odinstalować każdy klejnot, który wyświetlał ostrzeżenie, a następnie zainstalować ponownie zbundle install
Noah Passalacqua
„Zostałem zabity” - wow.
B Siedem
Cokolwiek próbuję You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, te problemy zaczęły się same, nawet nie używam rubinu do tego, co wiem. Ale dostaję błędy dotyczące rozszerzeń, które nie zostały zbudowane za clocale-0.0.3każdym razem, gdy uruchamiam nową powłokę
Vadorequest,
62

W moim przypadku ten błąd pojawia się po instalacji rvm

Rozwiązuję taki problem z: gem pristine --all

skywinder
źródło
co za przydatne polecenie
lfender6445
2
To działało ... Ale nie mam pojęcia, dlaczego
Hubro
1
odinstalowanie pakietu i instalacja nie działały. Ale ten zadziałał! Dzięki!
Srikanth Jeeva,
3
To powinna być zaakceptowana odpowiedź.
ILikeTurtles
19

Ten problem występuje, jeśli klejnot został skompilowany z inną biblioteką niż aktualnie uruchomiona. Na przykład, jeśli ktoś używa ruby ​​znajdującego się w swoim katalogu domowym z chruby i instaluje klejnoty do ~ / .gem / ruby, ale uruchamia skrypt, który wywołuje / usr / bin / ruby, który ponownie wykorzystuje zainstalowane tam klejnoty. W tym przypadku gem pristine --allnie pomoże, ponieważ klejnoty można połączyć tylko z jedną wersją ruby.

Mic92
źródło
Ahhhh dziękuję! Otrzymałem ten błąd podczas uruchamiania „rails s”. Przełączyłem się na „bundle exec rails s” i problem zniknął.
Gerry
1
to powinna być zaakceptowana odpowiedź
Dominik Schreiber
1
Ta odpowiedź jest słuszna. Jeśli problem występuje w repozytorium Railsów, w którym są zapisane klejnoty vendor/bundle, wystarczy je usunąć za pomocą rm -rf vendor/bundlei ponownie zainstalować za pomocą bundle install.
vmarquet
Dziękuję Ci. Próbowałem, gem pristine --allaż byłem niebieski na twarzy i teraz wiem, dlaczego to nie zadziałało ...
GDP2
2

To działało dla mnie na MacOs Sierra:

xcode-select --install
gem install nokogiri

Zainstalowałem już cały kod xcode przed uruchomieniem powyższych poleceń, ale i tak musiałem to zrobić, być może dlatego, że pierwszy skrypt aktualizuje niektóre biblioteki wewnętrzne / zależności.

Javad Sadeqzadeh
źródło
Właśnie tego szukałem rozwiązania MacOS Sierra. Dzięki
Sakares,
1

Upewnij się, że korzystasz z „gem pristine - all” dla odpowiedniej wersji rubinu. Jeśli nazywa się / usr / bin / ruby ​​... użyj "/ usr / bin / gem pristine --all". Nie jest to oczywiste, jeśli używasz rvm i masz zainstalowanych 10 wersji Ruby.

To naprawiło mój problem przez jeden dzień, a potem wrócił.

Wydaje się, że bardziej trwałym rozwiązaniem jest wykonanie „resetowania rvm”, aby domyślnym ruby ​​była zainstalowana wersja OSX / usr / bin / ruby ​​i / usr / bin / gem. Jeśli chcę użyć nowszej wersji ruby ​​dla projektu, używam .ruby-version i .ruby-gemset w katalogu głównym projektu, aby jawnie ustawić wersję ruby, której chcę użyć. Nie jest idealny ... ale powinien sprawić, że ten błąd zniknie.

neuronsong
źródło
0

W moim przypadku:

rvm get stable

sudo gem pristine --all

skozz
źródło
0

Jestem bardzo nowy w szynach, więc może to być całkowicie myląca rada, ale ponieważ żadne z innych rozwiązań nie zadziałało, pomyślałem, że podzielę się moim.

Mic92 i Gerry postawili mnie na właściwej drodze: używałem, rails sco może powodować błędy, ponieważ działa wersja szynowa, która może być inną wersją niż projekt.

Próbowałem się połączyć bin/rails server, otrzymałem inny błąd (brakujące klejnoty), więc pobiegłembundle install

W tym momencie dostałem trzeci błąd („niezgodna wersja biblioteki”), który spring stopwyleczył.

Potem pobiegłem rails generate controllerponownie, wiosna ponownie uruchomiona i wszystko działało (trochę płakałem).

mrtnmgs
źródło