find_spec_for_exe ': mücevher paketini bulamıyorum (> = 0.a) (Gem :: GemNotFoundException)


218

Kullandım sudo bundle installve sorunun nedeni bu olabilir mi?

Şimdi sahibim:

  • gem -v 2.6.14
  • ruby -v ruby 2.3.5p376 (2017-09-14 revizyon 59905) [x86_64-darwin15]
  • jekyll -v jekyll 3.6.2
  • bundle -vBundler sürümü 1.16.0.pre.3

Çalıştırmaya çalışırken aşağıdaki hatayı alıyorum bundle exec jekyll serveya da sadecejekyll 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

Ayrıca, blogumun bulunduğu klasöre erişirken cd my_pathaşağıdaki mesajı alıyorum:

VM Gemfile'ınızı Ruby'yi seçmek için kullandı, her şey yolunda - Heroku da bunu yapıyor, 'rvm rvmrc uyarı yoksay / Library / WebServer / Documents / blog / Gemfile' ile bu uyarıları göz ardı edebilirsiniz. Tüm dosyalar için uyarıyı yoksaymak için 'rvm rvmrc uyarı yoksay allGemfiles' komutunu çalıştırın. Bilinmeyen yakut yorumlayıcı sürümü (nasıl ele alınacağını bilmiyorum): RUBY_VERSION.

Bunu nasıl çözeceğimi bilmiyorum. Sadece statik blogumu oluşturmak istiyorum ve dürüstçe Ruby, Gem veya Bundle hakkında hiçbir fikrim yok :) Bu yüzden bazı anlayışlar takdir ediyorum!


Bu yardımcı olabilir mi: github.com/rvm/rvm/issues/1860
Cyzanfar

@Cyzanfar bunun için teşekkürler! Denedim, şimdi işlemde yeni bir hata var: stackoverflow.com/questions/47035080/…
Alvaro

Yanıtlar:


364

Benim durumumda sorun Gemfile.lockdosyanın bir BUNDLED_WITHsürümü 1.16.1ve gem install bundleryüklü sürümü olması 2.0.1, bu yüzden klasörü sağa bakarken bir sürüm uyuşmazlığı vardı

gem install bundler -v 1.16.1 onu düzeltti

Tabii ki, siz de değiştirebilir Gemfile.lock's BUNDLED_WITHson ile bundlerolduğu gibi, sürüm ve son yazılım kullanmak Sam3000 önerir


15
Alternatif olarak, BUNDLED_WITHsürümü paketleyicinin en son sürümüne değiştirmek isteyebilirsiniz . Bu benim için çalıştı ve aynı zamanda beni eski yazılım ihtiyacı kurtardı :)
Unencoded

5
Bundler 2 yayınlandı, bu yüzden Dockerfile dosyasında yukarıdaki gibi belirtmiyorsanız, bu hatayı vuracaksınız bundler.io/blog/2019/01/03/announcing-bundler-2.html
cameck

Merhaba @ antonio-tapiador Bu sorunu yaşıyorum, ama ben windows (linux geçemez). Ben koşuyorum gem install bundler -v 1.16.1ve şimdi eğer çalışırsam gem.bat list bundler bundler (2.0.1, 1.16.1, 1.9.6) alıyorum. Ben güncel sürümünü değiştiremezsin: yürütülmesi bundle.bat _1.16.1 installbana bu hata veriyor: Could not find command "_1.16.1". Herhangi bir fikrin var mı, bu yüzden yeni bir soru oluşturmak zorunda değilim? Teşekkürler!
Almanca

Boş ver, sürümün sonunda bir alt çizgi eksikti.
Alman

Teşekkürler. Bu aynı zamanda ruby ​​v2.5.1p57
widi83

132
gem update --system

rubygems'i güncelleyecek ve sorunu çözecektir.


3
Açıklamak gerekirse - @noraj'ın işaret ettiği gibi, sorun paketleyicinin yeni versiyonunda ortaya çıktı. Bağlantıyı takip ederseniz, çözüm RubyGems'i güncellemektir.
ReggieB

1
gem update --systembenim için çalıştı: ruby 2.5.0 , bundler 2.0.1 , macOS 10.13.6 .
Jagdeep Singh

74

Güncelleme:

@ Noraj'ın cevabı ve @Niels Kristian'ın yorumuna göre, aşağıdaki komut işi yapmalıdır.

gem update --system
bundle install

Birisinin benim gibi bir konuya girmesi durumunda bunu yazdım.

gem install bundler her şeyin iyi kurulduğunu gösterir.

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

Ben yazarken bundlebir hata oluştu:

/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>'

Ve klasörde bir klasör /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/yoktu bundler-1.16.0.

Ben sabit olan busudo gem install bundler


6
Eğer "düzeltme" o emin olduktan sonra size .rvm ve .gem üzerine dizin izinleri düzeltmek
insanlık

1
@humanity daha detaylı açıklamak lütfen, cevabımı düzenleme satın
Nik Kov

1
Cevabınız için @humanity chrs - .rvm ve .gem'deki dizin izinlerinizi düzelterek ne demek istediğinizi açıklayabilir misiniz?
BKSpurgeon

1
@Nik kov .rvm ve .gem klasörlerinin konumu büyük olasılıkla ana klasörünüzdedir. Chmod komutu ile izinlerini değiştirmeyi deneyin. Benim için çalıştı.
Souravirus

4
sudo gem install kötü bir uygulamadır, normal durumda tüm gem install sudo olmadan çalışmalıdır
iamdi 1

33

RubyGems v3.0.0 gerektiren Bundler nedeniyle bundler 2.0.1 veya 2.0.0'ı yüklemeye çalışırsanız gerçek cevap burada

Dün bir dizi kırılma değişikliği getiren Bundler 2.0'ı yayınladım. Bu değişikliklerden biri Bundler'ı RubyGems v3.0.0 gerektirecek şekilde ayarlamaktı. Sürümün yayınlanmasından sonra, birçok kullanıcımızın Bundler 2 ile gerçekten yeni bir RubyGems sürümü gerektiren sorunlarla karşılaştığı anlaşıldı.

Kullanıcılardan gelen geri bildirimleri yakından dinliyoruz ve RubyGems gereksinimini en azından v2.5.0'a indirmeye karar verdik. Bu gereksinimi ayarlayan yeni bir Bundler sürümü v2.0.1 çıkardık.

Daha fazla bilgi için bkz. Https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html


1
Teşekkürler, bağlantınız sorunu araştırmaktan biraz zaman kurtardı
Ilya Konyukhov

Capistrano yeni bir makinede başarısız oluyordu, ancak eskisinde değil. Bu benim için sorunu düzeltti.
CWitty

1
OP'nin sorusuna "gerçek cevap" olamaz çünkü Bundler 2.0 2017'de mevcut değildi, ancak insanlar bu sayfayı kesinlikle bulacaktır, çünkü semptomlar aynıdır.
Philihp Busby

Bundler 2.0.1 ile sorun yaşıyorum
Fabrizio Bertoglio

2.0.0 sürümündeki diğer kırılma değişiklikleri: github.com/bundler/bundler/releases/tag/v2.0.0
Joshua Pinter

31

Bu sorunu düzeltti:

  1. Gemfile.lock öğesini kaldır rm Gemfile.lock
  2. bundle installtekrar koş

DÜZENLEME: ÜRETİMDE YAPMAYIN!

Üretim için şu cevaba gidin: https://stackoverflow.com/posts/54083113/revisions


Visual Studio Code'u kullanıyorum ve Build'da başarısız olduğu Azure Devops aracılığıyla yükleme ve yayınlama yapıyorum. Sadece kilit dosyasını yerel olarak sildim, taahhüt ettim ve sonra ittim. Yapı, Gems Yükle adımında başarısız oldu, ancak şimdi çalışıyor.
David Jones

4
Mevcut bir üretim projesi için bu korkunç bir fikirdir. Bir grup test edilmemiş (sisteminizle) yeni kod yükleyeceksiniz.
Intentss

Evet, bu kötü bir fikir ve bir düzeltme olarak düşünülmemelidir. Diğer cevabın (uyuşmayan Bundler sürümüne sahip olma) doğru olduğunu kanıtlar. Bundler'ın doğru sürümünün yüklenmesi sorunu çözmelidir.
Robin Daugherty

Teşekkürler @RobinDaugherty, yanıtı herkesin bunu üretimde yapmamaları konusunda uyarmak için düzenledim.
Klonept

Bu da geliştirme aşamasında yapılmamalıdır. Kilit dosyasının iyi bir nedeni var, mevcut bir projede silinmemelidir. Makinenize doğru paketleyicinin yüklenmesi sorunu çözer, silme işlemi Gemfile.lockdiğer sorunlara yol açabileceğinden son çare olarak düşünülmelidir.
Robin Daugherty

19

Nedeni mevcut yakut ortamınız, sürümü ile birlikte paketleyicinin farklı bir sürümü var Gemfile.lock.

  • Güvenli bir şekilde, aynı sürümde paketleyiciyi yükleyin Gemfile.lock, bu, eğer ölçülemez bir şey olursa, hiçbir şeyi kırmaz.
  • Zor yol, sadece kaldırın Gemfile.lockve çalıştırın bundle install.

2
Bunun için teşekkürler. Kesinlikle herkes , yeni test edilmemiş taşlarla çevreyi karıştırmamak için güvenli versiyonu kullanmalıdır . Bundler'ı belirli bir sürümle kurmak için örneğin kullanın1.17gem install bundler -v 1.17
anka

12

rvm useKullandığınız yakut sürümünü değiştirdiyseniz Gemfile.lock dosyasını kaldırın ve tekrar deneyin.


4

Uygulama klasörünüzün kökünde bulunan Gemfile.lock dosyasını açın. Dosyanın sonuna gidin ve kullanılan paket sürümüne bakın. Ardından, kullanılan paket sürümünü yüklediğinizden emin olun:

gem install bundler -v x.xx.xx

Veya - daha yüksek paketleyici sürümü yüklüyse Gemfile.lock dosyasını ve paketi silin.

Seçim senin, dostum.


3
Gemfile.lock'u silmenizi tavsiye etmiyorum çünkü bu aynı zamanda tüm mücevherleri de günceller. Bu büyük sorunlara yol açabilir.
Sandro L

@SandroL - beyanınıza tamamen katılıyorum. Ancak, risk alan ve dramaya çekenlere bir seçenektir.
Georg Keferböck

Teşekkür ederim. Gemfile.lockKlasörde bulunan sürümü yüklemek hile yaptı!
codeadventurer

2

Gemfile.lockkullanımınızla eşleşen paketleyiciyi yüklemek için:

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

1

Benim durumumda yukarıdaki öneriler benim için işe yaramadı. Benimki biraz farklı bir senaryodu.

bundlerKullanarak yüklemeyi denediğimde gem install bundler.. Ama alıyordum

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

sonra kullanmayı denedim sudo gem install bundlersonra alıyordum

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

sonra denedim sudo gem install bundler -n /usr/local/bin(Sadece/usr/bin benim durumumda dint çalışma).

Ve sonra başarıyla kuruldu bundler

EDIT: MacOS kullanıyorum, belki de /usr/binbu nedenle benim için çalışmıyor ( https://stackoverflow.com/a/34989655/3786657 yorum)


0

Bugün de aynı sorunu yaşadım. Ben herhangi kaldırarak bu sorunu çözmek PATHiçinde .bashrcüstü için rvm.


1
Beni kurtarıyorsun benim bashrc ihracat PATH = "$ PATH: $ HOME / .rvm / bin" vardı, ben kaldırıyorum ve çalışıyor
bormat

0

Benim sorunum RVM kullanıyorum ve yanlış Ruby sürümü etkinleştirilmişti ...

Umarım bu en az bir kişiye yardımcı olur


0

Birçok cevaba ek olarak, sorunum, liman işçisinin yakutunu bir üs olarak kullanmaktan, sonra da rbenv'i kullanmaktan kaynaklandı. Bu birçok şeyi berbat ediyor.

Bu durumda şu şekilde düzelttim:

  • Gemfile.lock sürümünün güncellenmesi gerekiyordu - "BUNDLED WITH" ile en son sürüme geçmek bir noktada hata mesajını değiştirdi, bu yüzden gerekli olabilir
  • .bash_profile veya .bashrc içinde, ortam değişkenlerini ayarlayarak:
unset GEM_HOME
unset BUNDLE_PATH

Bundan sonra rbenv iyi çalıştı. Bu env değişkenlerinin ilk etapta nasıl yüklendiğinden emin değilim ...



-2

Yapmalıydım rake clean --force. Sonra böyle devam etti gem install rake.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.