번 들러가 JSON gem을 설치하지 않는 이유는 무엇입니까?


82

실행하려고 할 때 다음 오류가 발생합니다 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.

인코딩 오류를 제거하기 위해 Ruby 2.1.0으로 업그레이드 한 것보다이 배포가 작동했다는 점에 유의하는 것이 중요 할 수 있습니다. 나는 잘 작동하는 로컬로 업그레이드했습니다. 이 Ruby 업그레이드를 반영하기 위해 파일을 실행 rvm install 2.1.0하고 rvm use 2.1.0변경했습니다 .ruby-version.

bundle install명령은 로컬에서 작동하지만 대상 서버에 ssh하고이 명령을 실행할 때 위와 동일한 오류가 발생합니다.

실행하면 gem list보석 목록에서 볼 수 있습니다.

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

권장 솔루션을 gem install json -v '1.8.1'로컬 및 대상 서버에서 시도 하면 다음 출력이 표시됩니다.

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

그래서 gem이 설치된 것 같죠? 왜 이런 일이 발생합니까? 어떻게 해결할 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.


무엇을 bundle show json제공합니까?
user2503775

gem json, '1.8.1'Gemfile에 추가
user2503775

불행히도 이미 gemfile에 gem json, '1.8.1'이 있습니다
Thomas

번들 쇼 JSON주고 /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
토마스

6
sudo apt-get install ruby-dev내 우분투에 필요 했습니다.
e9t

답변:


73
$ bundle update json
$ bundle install

2
이것은 Ruby 2.4.0에서 나를 위해 해냈습니다!
Windmill

너무 rbenv 루비 2.4.1 (데비안 / 우분투)에 대한 작품
알렉세이 Deryagin

이것은 나에게도 효과적이었습니다. 루비 2.4.0 하이 시에라. 감사합니다!
Robert_T_Taylor 2011

Ruby 버전 2.4.2p198에서도 저를 위해 일했습니다. 감사.
fatihturan

나는 수락 된 답변이 그렇지 않은 동안 나를 위해 일했기 때문에이 답변을 찬성했습니다. @Robert_T_Taylor와 마찬가지로 macOS High Sierra에서 실행했습니다.
Scott Lawrence

68

그래서 반나절 후에 내 질문을 게시 한 직후에 답을 찾았습니다. Bundler 1.5.0에는 여기에 언급 된 기본 gem을 인식하지 못하는 버그가 있습니다.

해결책은 다음을 사용하여 번 들러 1.5.1로 업데이트하는 것이 었습니다. gem install bundler -v '= 1.5.1'


10
번 들러를 업데이트 한 후에도 동일한 문제 gem install json -v '1.8.1'가 발생하여 업데이트 후 오류 메시지가 수정되었습니다.
Jason Denney 2014

5
gem install json -v '1.8.1'다음에 bundle package나를 위해 속임수를 썼는지
오비

저에게 욕설 몇 마디를 저장했습니다. 감사합니다!
Catfish

1
번 들러가 이러한 젬을 설치하도록되어 있지 않습니까? 왜 수동으로 gem을 설치해야하는지 모르겠습니다. bundler.io/rationale.html Bundler 버전 1.7.11을 사용하고 있습니다
Snowcrash

2
번 들러 버전 1.14.6을 사용하고 있으며이 오류도 발생합니다
Catfish

48

이 명령을 실행하면 모든 것이 정상입니다

sudo apt-get install libgmp-dev

저도 위해 일했습니다 :) 감사합니다!
Deepak Kumar Padhy

@Imran 당신은 이것을 리눅스 터미널에 넣어야합니다. 창문을 돌리는 것 같아요?
Rcordoval

41

MacOS Sierra에 있고 루비 버전이 2.4.0 인 경우 루비 버전은 json 1.8.3과 호환되지 않습니다.

Gemfile에 다음 줄을 추가 할 수 있습니다.

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

이것은 나를 위해 작동합니다!


고맙습니다. 많은 좌절감을 덜어주었습니다!
Echelon

32

이 문제를 해결하려면 다음을 실행하십시오.

bundle update

번 들러의 버전을 업데이트합니다. 그런 다음 다음을 실행하십시오.

bundle install

문제가 해결 될 것입니다. 해결책은 여기에 잘 설명되어 있습니다 .


1
+1 정말 도움이되었고 방해가되지 않았습니다. 이후 bundle update설치가 훌륭하게 작동했습니다. 깨끗한 솔루션에 감사드립니다.
twknab

3
bundle update모든 보석을 업데이트합니다. gem update bundler번 들러를 업데이트합니다.
eebbesen

20

여기서 해결책을 찾았습니다 . json 버전 1.8.1 및 ruby ​​2.2.3에 문제가 있으므로 json 1.8.3 버전을 설치하십시오.

gem install json -v1.8.3

1
이것은 json gem의 여러 잘못된 버전에서 OSX, Ubuntu에서 환상적으로 작동했습니다. 한 경우에는 잠금 파일을 삭제하고 처음부터 다시 빌드해야했습니다. git rm Gemfile.lock bundle install
fuzzygroup

2
잘 작동했습니다. 우선 삭제하고 Gemfile.lock실행 bundle install하면됩니다.
alexventuraio 2016 년

12

당신은 시도해야

$ sudo gem install json -v '1.8.2'

제 경우에는 (Ubuntu 14.04) 직접 작동하지 않았고이 작업을 수행해야했습니다.

$ sudo apt-get install ruby-dev

그런 다음 gem을 설치하고 계속할 수 있습니다. 해결 된 문제가 하나 더 있습니다.

$ sudo apt-get install libsqlite3-dev

희망이 도움이됩니다.


9

이미 최신 버전의 번 들러를 사용하고 있기 때문에 권장 답변이 도움이되지 않은 경우. 나를 위해 일한 솔루션을 시도하십시오.

공급 업체 폴더 내의 모든 항목을 삭제하십시오. gemfile에 라인 추가

gem 'json', '1.8.0'

그런 다음 실행- bundle update json.

1.8.1의 문제인 것 같아서 1.8.0으로 돌아 가면 나에게 트릭이 생겼습니다.


루비 2.0.0에서 2.2.4로 업그레이드 할 때 작동했습니다.
Loubot

1
모든 것을 삭제할 필요가 없습니다. "번들 업데이트 json"으로 충분합니다.
Joffrey Baratheon

1
사용하는 gem 'json', '1.8.6'날 위해 일했습니다. 시도해 볼 수 있습니다.
etagwerker

7

rvm'd ruby ​​2.1에서 실행되는 Sinatra 및 Postgresql (activerecord를 통해)을 사용하여 내 로컬 개발 상자 (OSX 10.6)에서 프로젝트를 실행하는 동안이 오류가 발생했습니다. 여기에서 내 대답을 찾았습니다. https://github.com/wayneeseguin/rvm/issues/2511

정확한 문제 (로그 항목의 첫 번째 블록 이후) :

또한 gem의 기본 확장을 빌드하려고 할 때 오류가 발생합니다.

대답 :

rvm 재설치 2.1.0 --disable-binary

설명 :

OSX에는 패키지 관리자가 없기 때문에 모든 라이브러리를 사용자가 수동으로 설치해야하므로 바이너리를 동적으로 링크하는 것이 사실상 불가능하며 (의사) 정적으로 링크 된 바이너리에 문제가 있음을 알 수 있습니다.

완전성을 위해 먼저 rvm ( rvm get head) 을 업데이트하는 것을 잊었으므로 다른 오류가 발생했지만 --disable-binary그렇게 한 후에도 플래그 가 필요했습니다 .


솔루션에 다음 오류가 표시됩니다. "버전 '2.1.0'이 모호합니다. Ruby 구현 / 버전을 선택할 수 없습니다. 더 구체적으로 지정하십시오. 알 수없는 패키지를 다시 설치할 수 없습니다. ''"
holyredbeard

ruby 2.1.0이 없거나 rvm을 통해 둘 이상의 버전이 설치되어 있지 않을 수 있습니다. 을 실행 rvm list하면 현재 버전이 무엇인지 확인할 수 있습니다. 2.1.0위에서 언급 한 대신 전체 문자열 (예 : ruby-2.0.0-p451)을 사용하십시오 .
Matthias


5

나는 사용하여 JSON 보석 설치하려고하면 gem install json바로 사용하는 별도의를 bundle install내가 가진 ERROR: Failed to build gem native extension., 내가 사용 발견까지 그보고

    apt-get install ruby-dev

트릭을했다


놀랍습니다-당신은 내 하루를 구했습니다!
Unkas

3

OS X의 경우 coreutils 가 있는지 확인하십시오.

$ brew install coreutils
$ bundle

1
"경고 : coreutils 8.32가 이미 설치되어 있고 최신 상태입니다."라는 경고 메시지가 표시되었지만 이것이 트릭입니다.
Paul Verschoor

2

이것은 Bundler에서 루비 2.x와 함께 설치된 기본 gem을 인식하지 못하는 버그로 보입니다. 최신 버전의 번 들러 (1.5.3)에서도 여전히 문제가 발생했습니다.

한 가지 해결책은 기본 gemspec 디렉토리에서 json-1.8.1.gemspec을 삭제하는 것입니다.

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

이렇게하면 번 들러가 gem을 찾는 데 아무런 문제가 없습니다. chruby를 사용하고 있습니다. 다른 루비 관리자를 사용하는 경우 그에 따라 경로를 업데이트해야합니다.


네, json 번들로 문제를 해결하는 것은 간단합니다. 당신 감사
hainguyen

2

나는 C 헤더 솔루션이 Xcode를 위해 다운로드하는 것이 었습니다. 이것이 가장 좋은 방법입니다.

xcode-select --install

도움이되기를 바랍니다.


2

번들이 json -v '1.8.1'을 설치하지 못하고 Gemfile.lock을 삭제하고 번들을 다시 실행하면이 문제가 해결되었습니다.


1

최신 버전의 json을 설치했습니다.

gem install json

그런 다음 Gemfile.lock에서 json (1.8.1) 줄을 삭제하고

bundle install

그리고 Gemfile.lock 파일은 오류없이 json (1.8.3)을 사용합니다.


1
번들 업데이트를 실행하는 것만으로도이 문제가 해결되었습니다. 즉, 최신 JSON gem 빌드를 사용합니다.
프랜시스 Malloch


0

저에게는 앞에서 언급 한 답변 중 일부가 이해의 관점에서 도움이되었지만 문제가 해결되지 않았습니다.

그래서 이것이 제가 문제를 해결하기 위해 한 일입니다.

  • json (2.0.2)을 업데이트하도록 gemfile.lock을 수정했습니다 ( 이전에는 1.8.3이었습니다 ).
  • 설치된 번 들러 버전을 확인하십시오 ( Bundler -v명령). 버전 1.12.5가 설치되었습니다.
  • 번 들러 버전 1.11.2 설치 (사용 gem install bundler -v '1.11.2')
  • 그런 다음 번들 설치를 실행하십시오.

0

macOS Sierra의 경우 :

v1.15.3Rails ( v4.2) 프로젝트 에서 bundler ( )를 사용할 때이 오류가 발생 했습니다. 나를위한 해결책은 gem uninstall bundler -v '1.15.3'gem install bundler -v '1.14.6'입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.