Dlaczego pakiet nie zainstaluje klejnotów JSON?


82

Podczas próby uruchomienia pojawia się następujący błąd cap production deploy.

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

Może być ważne, aby zauważyć, że to wdrożenie działało, ponieważ zaktualizowałem Ruby do wersji 2.1.0, aby usunąć błąd kodowania. Zaktualizowałem lokalnie, co działało dobrze. Uruchomiłem, rvm install 2.1.0a rvm use 2.1.0następnie zmieniłem .ruby-versionplik, aby odzwierciedlić to uaktualnienie Rubiego.

bundle installKomenda działa lokalnie, ale daje ten sam błąd powyżej kiedy ssh na serwerze docelowym i uruchomić to polecenie.

Jeśli biegnę gem list, widzę to na liście klejnotów.

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...

Jeśli wypróbuję zalecane rozwiązanie gem install json -v '1.8.1'Lokalnie i na serwerze docelowym, otrzymam następujące dane wyjściowe:

Building native extensions.  This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed

Wygląda na to, że klejnot jest zainstalowany, prawda? Dlaczego to się dzieje? Jak mogę to rozwiązać? Każda pomoc byłaby bardzo mile widziana.


Co bundle show jsonci daje?
user2503775

Dodaj gem json, '1.8.1'do Gemfile
user2503775

Mam już gem json, '1.8.1' w moim pliku gem, niestety
Thomas

bundle show json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
Thomas

6
Potrzebowałem sudo apt-get install ruby-devna moim Ubuntu.
e9t

Odpowiedzi:


74
$ bundle update json
$ bundle install

2
Zrobiło to dla mnie w Rubim 2.4.0!
Windmill,

Działa również dla rbenv ruby ​​2.4.1 (debian / ubuntu)
Aleksey Deryagin

To zadziałało również dla mnie. Ruby 2.4.0 High Sierra. Dziękuję Ci!
Robert_T_Taylor

U mnie też działało pod Rubim w wersji 2.4.2p198. Dzięki.
fatihturan

Głosowałem za tą odpowiedzią, ponieważ zadziałała dla mnie, podczas gdy zaakceptowana odpowiedź nie. Podobnie jak @Robert_T_Taylor, uruchomiłem to na macOS High Sierra.
Scott Lawrence,

68

Więc po pół dnia na tym i prawie natychmiast po wysłaniu mojego pytania znalazłem odpowiedź. Bundler 1.5.0 ma błąd polegający na tym, że nie rozpoznaje domyślnych klejnotów, o których mowa tutaj

Rozwiązaniem była aktualizacja do bundlera 1.5.1 przy użyciu gem install bundler -v '= 1.5.1'


10
Miałem ten sam problem nawet po aktualizacji pakietu, wykonanie gem install json -v '1.8.1'po aktualizacji naprawiło komunikat o błędzie.
Jason Denney

5
gem install json -v '1.8.1'a następnie bundle packagezałatwił mi
sprawę

Uratował mi kilka przekleństw. Dzięki za to!
Sum

1
Czy pakiet nie powinien instalować tych klejnotów za Ciebie? Nie rozumiem, dlaczego musisz ręcznie instalować klejnoty. bundler.io/rationale.html Używam Bundler w wersji
1.7.11

2
Używam pakietu w wersji 1.14.6, a także otrzymuję ten błąd
Catfish

49

Uruchom to polecenie, a wszystko będzie dobrze

sudo apt-get install libgmp-dev

U mnie też zadziałało :) Dzięki!
Deepak Kumar Padhy

@Imran Musisz to umieścić na terminalu linuxowym. Myślę, że używasz systemu Windows?
Rcordoval

41

jeśli korzystasz z MacOS Sierra, a Twoja wersja Ruby to 2.4.0. Wersja Ruby nie jest kompatybilna z json 1.8.3.

Możesz spróbować dodać tę linię do swojego pliku Gemfile:

gem 'json', github: 'flori/json', branch: 'v1.8'

To działa dla mnie!


Dziękuję, że zaoszczędziło mi to wielu frustracji!
Echelon

33

Aby rozwiązać ten problem, po prostu uruchom:

bundle update

Zaktualizuje wersję twojego pakietu. Następnie uruchomić:

bundle install

Twój problem zostanie rozwiązany. Rozwiązanie jest dobrze wyjaśnione tutaj .


1
+1 Naprawdę pomocny i wyciągnął mnie z gry. Po bundle updatetym instalacja działała świetnie. Dziękuję za czyste rozwiązanie.
twknab

3
bundle updatezaktualizuje wszystkie twoje klejnoty. gem update bundlerzaktualizuje pakiet.
eebbesen

20

Tutaj znalazłem rozwiązanie . Występuje problem z wersją json 1.8.1 i ruby ​​2.2.3, więc zainstaluj wersję json 1.8.3.

gem install json -v1.8.3

1
To zadziałało fantastycznie dla mnie na OSX, Ubuntu na wielu złych wersjach klejnotu json. W jednym przypadku musiałem usunąć plik blokady i odbudować go od nowa: instalacja pakietu git rm Gemfile.lock
fuzzygroup

2
Działało dobrze, najpierw usuwam, Gemfile.locka następnie po prostu uruchamiam bundle installi to wszystko.
alexventuraio

12

Powinieneś spróbować

$ sudo gem install json -v '1.8.2'

w moim przypadku (Ubuntu 14.04) to nie działało bezpośrednio i musiałem to zrobić:

$ sudo apt-get install ruby-dev

a potem mogłem zainstalować klejnot i kontynuować. Miałem jeszcze jeden problem, który został rozwiązany przez:

$ sudo apt-get install libsqlite3-dev

Nadzieja pomaga.


9

Jeśli zalecana odpowiedź nie pomogła, ponieważ używasz już nowszej wersji pakietu. Wypróbuj rozwiązanie, które zadziałało dla mnie.

Usuń wszystko z folderu dostawcy. Dodaj linię do swojego gemfile

gem 'json', '1.8.0'

Następnie uruchom - bundle update json.

Wydaje się, że jest to problem z wersją 1.8.1, więc powrót do wersji 1.8.0 załatwił sprawę.


Działał podczas aktualizacji z Ruby 2.0.0 do 2.2.4.
Loubot

1
Nie ma potrzeby usuwania wszystkiego. „Pakiet json z aktualizacją pakietu” wystarczył.
Joffrey Baratheon

1
U gem 'json', '1.8.6'mnie zadziałało. Może zechcesz tego spróbować.
etagwerker

7

Napotkałem ten błąd podczas próby uruchomienia projektu na moim lokalnym dev boxie (OSX 10.6), używając Sinatra i Postgresql (przez activerecord), działając na rvm'd ruby ​​2.1. Znalazłem swoją odpowiedź tutaj: https://github.com/wayneeseguin/rvm/issues/2511

Mój dokładny problem (po pierwszym bloku wpisów w logu):

Otrzymuję również błąd podczas próby tworzenia natywnych rozszerzeń dla klejnotów

odpowiedź :

rvm reinstaluj 2.1.0 --disable-binary

Wyjaśnienie :

OSX nie ma menedżera pakietów, więc wszystkie biblioteki muszą być instalowane ręcznie przez użytkownika, co praktycznie uniemożliwia dynamiczne łączenie pliku binarnego, a jak widać, występują problemy z (pseudo) statycznie połączonym plikiem binarnym.

Ze względu na kompletność, najpierw zapomniałem zaktualizować rvm ( rvm get head), co spowodowało kilka innych błędów, ale --disable-binarypo wykonaniu tej czynności nadal potrzebowałem flagi.


W rozwiązaniu pojawi się następujący błąd: „Wersja '2.1.0' jest niejednoznaczna. Nie można wybrać implementacji / wersji Rubiego, proszę podać bardziej szczegółowe informacje. Nie można ponownie zainstalować nieznanego pakietu ''”
holyredbeard

Być może nie masz Ruby 2.1.0 lub więcej niż jednej wersji zainstalowanej przez rvm. Uruchom rvm list, a zobaczysz, jaka jest twoja aktualna wersja. Użyj pełnego łańcucha (np. Ruby-2.0.0-p451) zamiast 2.1.0wspomnianego powyżej.
Matthias

6

bundle update json. Pomógł się przedostać.


1
Pomyślnie zainstalowano json 1.8.6 (poprzednio 1.8.3)
Simon Liu

5

Kiedy próbowałem zainstalować gem json używając gem install jsonoddzielone od tylko przy użyciu bundle installmam ERROR: Failed to build gem native extension., patrząc w górę, że znalazłem za pomocą

    apt-get install ruby-dev

załatwił sprawę


niesamowite - uratowałeś mi dzień!
Unkas

3

W przypadku OS X upewnij się, że masz coreutils

$ brew install coreutils
$ bundle

1
Chociaż otrzymałem ostrzeżenie „Ostrzeżenie: coreutils 8.32 jest już zainstalowany i aktualny”, to załatwiło sprawę.
Paul Verschoor

2

Wygląda na to, że jest to błąd w programie Bundler, który nie rozpoznaje domyślnych klejnotów zainstalowanych wraz z ruby ​​2.x. Nadal miałem problem nawet z najnowszą wersją bundlera (1.5.3).

Jednym z rozwiązań jest po prostu usunięcie json-1.8.1.gemspec z domyślnego katalogu gemspec.

rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec

Po wykonaniu tej czynności bundler nie powinien mieć problemu ze zlokalizowaniem klejnotu. Zauważ, że używam chruby. Jeśli używasz innego menedżera ruby, będziesz musiał odpowiednio zaktualizować swoją ścieżkę.


tak, łatwo jest rozwiązać problem z pakietem json. Dziękuję
hainguyen

2

Brakowało mi rozwiązania nagłówków C było pobranie go dla Xcode, to najlepszy sposób.

xcode-select --install

Mam nadzieję, że to pomoże.


2

Pakiet nie mógł zainstalować json -v '1.8.1', a usunięcie mojego pliku Gemfile.lock i ponowne uruchomienie pakietu rozwiązało ten problem.


1

Zainstalowałem najnowszą wersję json:

gem install json

Następnie usunąłem wiersz json (1.8.1) z Gemfile.lock i zrobiłem

bundle install

A potem plik Gemfile.lock używa json (1.8.3) bez błędów


1
Samo uruchomienie aktualizacji pakietu rozwiązało ten problem ... innymi słowy, używając nowszej kompilacji klejnotów JSON.
Francis Malloch,


0

Dla mnie niektóre z wymienionych wcześniej odpowiedzi były pomocne ze zrozumienia, ale nie rozwiązały mojego problemu.

Więc to właśnie zrobiłem, aby rozwiązać problem.

  • Zmodyfikowany plik gemfile.lock do aktualizacji json (2.0.2) ( wcześniej było to 1.8.3 )
  • Sprawdź zainstalowaną wersję pakietu Bundler ( Bundler -vpolecenie). Miałem zainstalowaną wersję 1.12.5
  • Zainstaluj pakiet w wersji 1.11.2 (używając gem install bundler -v '1.11.2' )
  • Następnie uruchom instalację pakietową

0

W przypadku macOS Sierra:

Napotkałem ten błąd, gdy użyłem bundler ( v1.15.3) w v4.2projekcie Rails ( ). Rozwiązaniem dla mnie jest gem uninstall bundler -v '1.15.3'i gem install bundler -v '1.14.6'.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.