find_spec_for_exe ': gem bundler (> = 0.a)를 찾을 수 없습니다 (Gem :: GemNotFoundException)


218

내가 사용 sudo bundle install했는데 이것이 문제의 원인 일 수 있습니까?

지금 나 한테있어:

  • gem -v 2.6.14
  • ruby -v 루비 2.3.5p376 (2017-09-14 개정 59905) [x86_64-darwin15]
  • jekyll -v 지킬 3.6.2
  • bundle -v번 들러 버전 1.16.0.pre.3

실행하려고 할 때 bundle exec jekyll serve또는 다음과 같은 오류가 발생합니다.jekyll serve

/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in `find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
    from /Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:299:in `activate_bin_path'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/bundle:23:in `<main>'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `eval'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<MacBooMacBook-MacBook-MacBook-Pro-MacBook-PrMacBook-MacBooMacBMaMacBMaMaMaMaMaMaMaMaMacBMaMaMaMacBMa

또한 블로그가있는 폴더에 액세스 할 때 cd my_path 하면 다음 메시지가 나타납니다.

VM은 Gemfile을 사용하여 Ruby를 선택했습니다. Heroku도 마찬가지입니다. 'rvm rvmrc warning ignore / Library / WebServer / Documents / blog / Gemfile'을 사용하여 이러한 경고를 무시할 수 있습니다. 모든 파일에 대한 경고를 무시하려면 'rvm rvmrc warning ignore allGemfiles'를 실행하십시오. 알 수없는 루비 인터프리터 버전 (처리 방법을 모름) : RUBY_VERSION.

이 문제를 해결하는 방법을 모르겠습니다. 나는 정적 블로그를 만들고 싶고 솔직히 Ruby, Gem 또는 Bundle에 대해 전혀 모른다 :) 그래서 통찰력에 감사하겠습니다!


도움이 될 수 있습니까? github.com/rvm/rvm/issues/1860
Cyzanfar

@Cyzanfar 감사합니다! 나는 그것을 시도, 프로세스에 새로운 오류가 발생했습니다 : stackoverflow.com/questions/47035080/…
Alvaro

답변:


364

내 경우에는 문제가 있다는 것입니다 Gemfile.lock파일이 있었다 BUNDLED_WITH버전 1.16.1gem install bundler설치된 버전을 2.0.1, 그래서 폴더를 오른쪽 찾고 버전 불일치가 발생했습니다

gem install bundler -v 1.16.1 고쳤다

물론, 당신은 또한 변경할 수 Gemfile.lock의를 BUNDLED_WITH마지막으로 bundler같은 버전과 최신 소프트웨어를 사용 Sam3000가 제안


15
대안으로, BUNDLED_WITH버전을 최신 버전의 번 들러 로 변경할 수 있습니다 . 이것은 나를 위해 일했고 또한 구식 소프트웨어가 필요합니다. :)
Unencoded

5
Bundler 2가 방금 출시되었으므로 Dockerfile에서 위와 같이 지정하지 않으면이 오류가 발생합니다. bundler.io/blog/2019/01/03/announcing-bundler-2.html
cameck

안녕하세요 @ antonio-tapiador이 문제가 있지만 Windows에 있습니다 (Linux로 전환 할 수 없음). 나는 달리고 gem install bundler -v 1.16.1지금 은 gem.bat list bundler 내가 번 들러 (2.0.1, 1.16.1, 1.9.6)를 얻는다. 현재 버전을 변경할 수 없습니다. 실행 bundle.bat _1.16.1 install하면이 오류가 발생 Could not find command "_1.16.1"합니다. 당신은 어떤 아이디어가 있습니까, 그래서 나는 새로운 질문을 만들 필요가 없습니까? 감사!
German

신경 쓰지 마라, 나는 버전이 끝날 때 밑줄이 빠졌다.
German

감사. 이것은 또한 루비 v2.5.1p57
widi83

132
gem update --system

루비 젬을 업데이트하고 문제를 해결합니다.


3
@noraj가 지적했듯이 명확하게하기 위해 문제는 새 버전의 번 들러에서 도입되었습니다. 링크를 따라 가면 해결책은 RubyGems를 업데이트하는 것입니다.
ReggieB

1
gem update --system나를 위해 일한 : ruby 2.5.0 , bundler 2.0.1 , macOS 10.13.6 .
Jagdeep Singh

74

최신 정보:

@noraj의 답변 과 @Niels Kristian의 의견에 따르면 다음 명령이 작업을 수행해야합니다.

gem update --system
bundle install

누군가가 내 것과 같은 문제에 빠질 경우를 대비하여 이것을 썼습니다.

gem install bundler 모든 것이 잘 설치되었음을 보여줍니다.

Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed

입력 할 때 bundle오류가 발생했습니다.

/Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `load': cannot load such file -- /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `<main>'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

그리고 폴더 /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/에는 폴더 가 없었습니다 bundler-1.16.0.

나는 이것을 고정 시켰다sudo gem install bundler


6
당신이 "수정"이 있는지 확인 후에는 .rvm 및 .gem에 디렉토리 권한 수정
인류

1
@humanity 더 자세한 설명하시기 바랍니다, 내 답변 편집 구매
Nik Kov

1
@ humanity chrs for your answer-.rvm 및 .gem에 대한 디렉토리 권한을 수정하여 의미를 자세히 설명 할 수 있습니까?
BKSpurgeon

1
@Nik kov .rvm 및 .gem 폴더의 위치는 아마도 홈 폴더 안에있을 것입니다. chmod 명령으로 권한을 변경하십시오. 그것은 나를 위해 일했다.
Souravirus

4
sudo gem 설치는 나쁜 습관입니다. 일반적인 경우 모든 gem 설치는 sudo없이 작동합니다
iamdi

33

RubyGems v3.0.0이 필요한 번 들러로 인해 번 들러 2.0.1 또는 2.0.0을 설치하려는 경우 실제 답변이 여기에 있습니다.

어제 Bundler 2.0을 릴리스하여 여러 가지 주요 변경 사항이 도입되었습니다. 이러한 변경 중 하나는 Bundler가 RubyGems v3.0.0을 요구하도록 설정하는 것입니다. 릴리스 후 많은 사용자들이 실제로 새로운 버전의 RubyGem을 요구하는 Bundler 2에 문제를 겪고 있음이 분명해졌습니다.

우리는 사용자의 피드백을 면밀히 듣고 있으며 RubyGems 요구 사항을 최소한 v2.5.0으로 완화하기로 결정했습니다. 이 요구 사항을 조정하는 새로운 번 들러 버전 v2.0.1을 출시했습니다.

자세한 내용은 https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html을 참조하십시오.


1
감사합니다, 귀하의 링크가 문제를 인터넷 검색에서 시간을 절약했습니다.
Ilya Konyukhov

Capistrano는 새로운 머신에서 실패했지만 오래된 머신은 아닙니다. 이것은 나를 위해 문제를 해결했습니다.
CWitty 2012 년

1
2017 년에는 Bundler 2.0이 없었기 때문에 OP의 질문에 대한 "실제 답변"이 될 수는 없지만 증상이 동일하기 때문에 사람들이 확실히이 페이지를 찾을 것입니다.
Philihp Busby

들러

버전 2.0.0의 또 다른 주요 변경 사항은 다음과 같습니다. github.com/bundler/bundler/releases/tag/v2.0.0
Joshua Pinter

31

이것은 그것을 고쳤다 :

  1. Gemfile.lock를 제거하십시오 rm Gemfile.lock
  2. bundle install다시 실행

편집 : 생산하지 마십시오!

생산을 위해이 답변으로 이동 하십시오 : https://stackoverflow.com/posts/54083113/revisions


Visual Studio Code를 사용하고 있으며 빌드에서 실패한 Azure Devops를 통해 업로드 및 게시하고 있습니다. 잠금 파일을 로컬에서 삭제하고 커밋 한 다음 푸시했습니다. Install Gems 단계 에서 빌드가 실패 했지만 이제 작동합니다.
David Jones '

4
기존 생산 프로젝트의 경우 이것은 끔찍한 아이디어입니다. 테스트되지 않은 (시스템과 함께) 많은 새 코드를 설치하게됩니다.
의도 :

예, 이것은 나쁜 생각이며 수정으로 간주되어서는 안됩니다. 다른 답변 (Bundler 버전이 일치하지 않는 것에 대한)이 정확하다는 것을 증명합니다. 올바른 버전의 번 들러를 설치하면 문제가 해결됩니다.
Robin Daugherty

@RobinDaugherty에게 감사드립니다. 프로덕션에서 모든 사람에게 경고하지 않도록 경고를 편집했습니다.
클론 복제

이것은 개발에서도 수행되어서는 안됩니다. 잠금 파일에 대한 적절한 이유가 있으므로 기존 프로젝트에서 삭제해서는 안됩니다. 컴퓨터에 올바른 버전의 번 들러를 설치하면 문제가 해결되므로 Gemfile.lock다른 문제가 발생할 수 있으므로 삭제 하는 것이 최후의 수단으로 간주되어야합니다.
로빈 도허티

19

그 이유는 현재 루비 환경이므로에 버전이 다른 번 들러 버전이 Gemfile.lock있습니다.

  • 안전한 방법으로에 동일한 버전의 Gemfile.lock번 들러를 설치하십시오.
  • 어려운 방법은 제거 Gemfile.lock하고 실행하십시오 bundle install.

2
고마워 확실히 모든 사람이 안전한 버전을 사용하여 새로 테스트되지 않은 보석으로 환경을 망쳐 놓지 않아야 합니다. 특정 버전의 예에 들러 설치하려면 1.17사용gem install bundler -v 1.17
안카

12

로 사용중인 루비 버전을 변경 한 경우 rvm useGemfile.lock을 제거하고 다시 시도하십시오.


4

앱 폴더의 루트에있는 Gemfile.lock을 엽니 다. 파일 끝으로 스크롤하여 사용 된 번 들러 버전을 확인하십시오. 그런 다음 사용 된 번 들러 버전을 설치하십시오.

gem install bundler -v x.xx.xx

또는-더 높은 번 들러 버전이 설치된 경우 Gemfile.lock 및 번들을 삭제하십시오.

선택은 당신, 내 친구입니다.


3
Gemfile.lock을 삭제하면 모든 gem이 업데이트되므로 권장하지 않습니다. 이로 인해 큰 문제가 발생할 수 있습니다.
산드로 L

@ 산드로-당신의 진술에 전적으로 동의합니다. 그러나 위험을 감수하고 드라마에 끌리는 사람들에게는 옵션입니다.
게오르그 케 퍼벡

감사합니다. Gemfile.lock폴더 에있는 버전을 설치하면 트릭이되었습니다!
codeadventurer 2018 년

2

Gemfile.lock용도에 맞는 번 들러를 설치 하려면 :

gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"

1

제 경우에는 위의 제안이 효과가 없었습니다. 광산은 거의 다른 시나리오였습니다.

내가 .. 를 bundler사용하여 설치 를 시도했을 때gem install bundler

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

그런 다음 사용하려고 시도하고 sudo gem install bundler있었고

ERROR:  While executing gem ... (Gem::FilePermissionError)
  You don't have write permissions for the /usr/bin directory.

그런 다음 시도했다 sudo gem install bundler -n /usr/local/bin ( /usr/bin제 경우에는 dint work).

그리고 성공적으로 설치 bundler

편집 : 나는 MacOS를 사용하고, /usr/bin그 이유 때문에 나를 위해 작동하지 않을 수도 있습니다 ( https : //.com/a/34989655/3786657 의견)


0

오늘도 같은 문제가있었습니다. 나는 어떤 제거하여이 문제를 해결 PATH에서를 .bashrc세 이상 rvm.


1
bashrc에 export PATH = "$ PATH : $ HOME / .rvm / bin"을 저장했다면 제거하고 작동합니다.
bormat

0

내 문제는 RVM을 사용하고 있으며 잘못된 Ruby 버전이 활성화되어 있다는 것입니다 ...

이것이 적어도 한 사람을 돕는 희망


0

많은 대답에 덧붙여, 내 문제는 도커의 루비를 기본으로 사용하고 싶지만 rbenv를 맨 위에 사용하려는 것에서 비롯되었습니다. 이것은 많은 것을 망칩니다.

이 경우에는 다음과 같이 수정했습니다.

  • Gemfile.lock 버전을 업데이트해야했습니다. "BUNDLED WITH"를 최신 버전으로 변경하면 오류 메시지가 한 번에 변경되었으므로 필요할 수 있습니다.
  • .bash_profile 또는 .bashrc에서 환경 변수를 설정 해제하십시오.
unset GEM_HOME
unset BUNDLE_PATH

그 후 rbenv는 잘 작동했습니다. 그 env var가 처음에 어떻게로드되었는지 확실하지 않습니다 ...



-2

나는해야했다 rake clean --force. 그런 다음 gem install rake그렇게했습니다.

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