Uzantıları oluşturulmadığı için GEM'i yok saymak


133

Hem iş hem de ev bilgisayarlarımda yakın zamanda Ruby'yi 2.3.1'e yükselttim ruby-install. kullanırımchrubyRuby değiştiricim olarak .

Bu uyarıyı terminalimde görmeye başladım:

Ignoring bcrypt-3.1.11 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.11
Ignoring bcrypt-3.1.10 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.10
Ignoring binding_of_caller-0.7.2 because its extensions are not built.  Try: gem pristine binding_of_caller --version 0.7.2
Ignoring byebug-9.0.5 because its extensions are not built.  Try: gem pristine byebug --version 9.0.5
Ignoring byebug-5.0.0 because its extensions are not built.  Try: gem pristine byebug --version 5.0.0
Ignoring concurrent-ruby-ext-1.0.2 because its extensions are not built.  Try: gem pristine concurrent-ruby-ext --version 1.0.2
Ignoring debug_inspector-0.0.2 because its extensions are not built.  Try: gem pristine debug_inspector --version 0.0.2

İşimde, bilgisayarda, liste çok daha uzundu, ancak çözülmesi kolaydı. Öneriyi denediğimde, cevheri gem pristine GEMbulamadığını söyledi, ben de koştum gem install GEMve bu onu çözdü.

Evde hiçbir şey çalışmıyor.

Sağduyu ve diğer çeşitli Stack sorularından denediğim şeyler:

  • gem pristine GEM
  • gem pristine --all
  • mücevheri kaldırma ve yeniden yükleme
  • gem update
  • gem update --system
  • bundle update
  • kaldırma ve yeniden yükleme bundler
  • kaldırma ve yeniden yükleme rails(Yine de bu Rails'e özgü bir sorun değildir.)
  • silme ~/.bundle/
  • Açmak XCodeve bazı uzantıları yüklemesine izin vermek (Yapması gerekiyordu, ancak hiçbir şeyi düzeltmedi.)
  • brew doctortüm küçük sorunları çalıştırıp çözdükten sonra brew updatevebrew upgrade
  • gem install curb (Bu cevherin bu sorunla ne ilgisi olduğunu hayal edemiyorum, ancak iki farklı kişi onu aynı uyarının düzeltilmesinin son adımı olarak listeledi.)

1
Mücevherler kurulu değilse aynı uyarıyı görüyorum. Kaldırdım bcryptve hala bana bununla ilgili iki uyarı verdi.
Phillip Longman

1
paketleyiciyi güncelledin mi? kaldırma ve yeniden yükleme işlemi, Gemfile.lock'unuzdaki her şeyi kullanacaktır. Bundler, uzantıları oluşturacak kişidir. Ayrıca, çıktınız mücevherlerin birden çok sürümünü listeliyor, bu nedenle bunun Ruby'nin bu sürümü için sistem genelinde olduğunu bilmelisiniz (yani yeniden inşa etmek için birden fazla mücevheriniz olacak).
Anthony

Bir Rails projesi değil, ana klasörümdeydim, bu yüzden Gemfile yoktu.
Phillip Longman

Aynı sorun bana da oldu (rvm kullanarak). gem pristine --allişe yaramadı. Paketleyici dahil tüm mücevherleri silerek çözüldü. Sonra paketleyiciyi yükledim gem install bundlerve sonunda projeme geri döndüm ve çalıştırdığım bundle installtüm mücevherlerimi yeniden yükledi ve her şey çalışıyor
David Watson

Benim durumumda, bir vim uzantısından kaynaklanıyordu. Etrafında çalışmak için vim = "rvm use system do vim" takma adını yaptım. Ancak uyarıyı yalnızca vim'den çıktığımda gördüm, bu yüzden başka durumlarda görüyorsanız bu muhtemelen geçerli olmayacaktır.
Brian Deterling

Yanıtlar:


179

Bugün tam olarak bu sorunla karşılaştım - yüklü bile olmayan mücevherler için bunun gibi uyarılar alıyorum!

Taşlar dışarı ... Eh, döner edildi yüklü - Ben chruby (2.3.1 vs 2.2.3) ile aktif batmıştı olandan farklı yakut için.

Tüm farklı yakutlara geçmek ve hepsinde koşmak gem pristine --allsorunu çözdü.


3
Bu benim için bunu sadece mevcut yakutta yapmak için çalıştı (rvm kullanıyorum). Belki bu, birisinin çok fazla temizlik yapmasını engeller;)
Sandro L

1
Bazen gem pristine --allişe yaramaz. Daha fazla bilgi için Farklı Sor'daki bu yanıta bakın .
GDP2

eğer gem pristine --allizin sorunuyla, kontrol etmelidir which ruby. brew link --overwrite ruby && source ~/.bash_profileve koşmak gem pristine --allyardımcı olabilir
Chris Yim

Bu çözümlerin hiçbiri benim için işe yaramıyor ve aynı sorunu yaşıyorum.
Alex Cohen

19

Bu sorunla karşılaştım ve daha önce yüklenmiş tüm Ruby sürümlerimi kaldıracak kadar ileri giderek yukarıdaki tüm komutları takip ettim. Ancak hata devam etti.

Görünüşe göre, içindeki çeşitli (önceden kaldırılmış) sürümler için bazı artık mücevherler vardı ~/.gem/ruby/. Artık kullanmadığım klasörleri kaldırdıktan sonra hatalar kayboldu.


2
Bu benim için yaptı. rm -rf. Daha önce tüm mücevherlerimi boşuna kurmayı denedim.
StevenNunez

10

Bugün de bu sorunu yaşadım ve sinir bozucu çünkü yazamadım çünkü tüm editörüm hata mesajlarıyla kırmızı renkte yanıp söndü.

Buna tam olarak neyin neden olduğundan tam olarak emin değilim, ancak bunun birden çok Ruby sürümüne sahip olduğumuzdan YA DA birden çok Ruby sürüm yöneticisinin kurulu olduğuna ve birbirlerinin üzerine yazmalarına ve başka şekilde mücevherlere giden yollarınızı bozduğuna inanıyorum .

gemEğer rbenv ve RVM olduğunda komut da üzerine yazılır alır.

Yazarak hangilerini yüklediğinizi görün;

which rvm
which rbenv
which chruby

Bunlardan biri kurulursa bir yol döndürür. Ardından bunları silin, tüm dizinleri tamamen temizlediğinizden ve temiz bir kurulumla başladığınızdan emin olun.


Kaldırmak

İşte rvm için yaptığım şey ;

rvm implode
gem uninstall rvm
rm -rf ~/.rvm
rm -rf ~/.rvmrc

İşte rbenv için yaptığım şey

İlk önce https://github.com/meowsus/rbenv-clean yüklendi , ardından

rbenv clean
sudo apt-get remove rbenv
rm -rf ~/.rbenv

yeniden yükleyin

Ardından çalışabileceğiniz temiz bir ana dizininiz var. Ubuntu 14.04 üzerinde Ruby 2.1.4 nasıl kurulur ile rbenv'i yeniden kurdum . Ve sonunda;

rbenv rehash

Sadece rvm ile ilgili öğeleri kaldırmak bu sorunu benim için
macOS'ta çözdü

6

Dahil olmak üzere yukarıda bahsedilen her şeyi yaptım

  • xcode-select - install
  • Ruby'yi yeniden yükle
  • tüm mücevherleri yeniden yükle
  • gem bozulmamış - hepsi

ama mesele benim için aynıydı. Mac'imi son umut olarak yeniden başlattım ve uyarı mesajları kayboldu.

Tuhaf, ancak biri StackOverflow'daki her şeyi denedikten sonra bu sorunla mücadele ederse, makinenizi yeniden başlatmayı deneyin.


4
Yeniden başlatma ipucunu paylaştığınız için teşekkürler. Mac'te de aynı sorunu yaşadım ve yeni bir terminal oturumu başlatarak çözebildim.
Libby

3

RVM'yi kurduysanız, muhtemelen farklı sürümler kurduğunuz için hatayı yakalıyorsunuz.

Yararsız sürümleri kontrol edin ve kaldırın, ancak bunun iyi bir yaklaşım olmadığını düşünüyorum . Her neyse, hatalar gitti.

rvm list
rvm use ruby-version
rvm remove ruby-useless-version

Cocoapod'ları yeniledikten sonra, .rvm GEM_HOME içine enjekte edilmelidir.

gem uninstall cocoapods
gem install cocoapods

Muhtemelen gem ile pod COMMANDilgili bir hata verecektir minitest, yani -gem install minitest


2

TL; DR - Ruby mücevherleri, sembolik bağlantılardan kaçan veya inşa edildikleri yerden taşınan Ruby'leri sevmez (gömülü işaretler nedeniyle)

Ruby dizini çağrılırsa veya ortam değişkenleri sembolik bağlantılı bir dizini işaret ederse veya kopyalanır veya yeniden adlandırılırsa, bu mesaj büyük olasılıkla geçerlidir. Chruby kullanıyorum ve sembolik bağlantı yapıyordum /opt/rubies/-> /usr/local/ruby/, ancak Ruby'nin dinamik kütüphane bulma mantığı bununla pek iyi oynamıyor.

Benim durumumda çözüm fiili içinde yakut ile sembolik değiştirmekti /opt/rubies/ve vadede gem pristine --allher Ruby. RVM veya Rbenv kullanan diğerleri için, sıfırdan başlamadan bunda iyi şanslar.

Bu tam olarak sorununuz olmayabilir, ancak umarım yardımcı olur.


1
gem pristine --allBunların hepsinde koşma olduğu ortaya çıktı . Bu ölü soruyu diriltdiğiniz için teşekkürler. Her şeyi yakıp baştan başlamak üzereydim.
Phillip Longman

2

Buraya kendi lezzetimi ekliyorum. rbenvHomebrew aracılığıyla kurulum kullandım ve bu "yok sayan ... uzantılar oluşturulmadı" mesajlarından dördünü alıyordum. özellikle:

Ignoring bcrypt-3.1.12 because its extensions are not built.  Try: gem pristine bcrypt --version 3.1.12
Ignoring bindex-0.5.0 because its extensions are not built.  Try: gem pristine bindex --version 0.5.0
Ignoring bootsnap-1.3.2 because its extensions are not built.  Try: gem pristine bootsnap --version 1.3.2
Ignoring byebug-10.0.2 because its extensions are not built.  Try: gem pristine byebug --version 10.0.2

Bu konudaki birçok şeyi şanssız denedim. Sonunda benim durumumda yaptım:

  • brew uninstall rbenv
  • rm -rf ~/.rbenv
  • brew install rbenv

Bu noktada hala hataları alıyordum, ancak şimdi uğraşmam gereken tek bir Ruby sürümü vardı:

$ rbenv versions
* system (set by /Users/will/.rbenv/version)

Bu noktada denedim sudo gem pristine --allancak sistem Gems dizinindeki izinler için reddedildim.

Ben de geçtim ve her mücevherde bozulmamış şekilde koştum.

sudo gem pristine bcrypt --version 3.1.12 (vb)

Ve nihayet hatalar gitti.


1

Bu eski bir konu, ancak bu sorunla kendim yeni karşılaştım.

Makinenizi yeniden başlatmanıza gerek yok, sadece ortamınızı yenilemeniz gerekiyor, bunu rehash komutuyla yapabilirsiniz:

rehash

Man sayfasından: rehash command re-computes the internal hash table of the contents of directories listed in the path environmental variable to account for new commands added.


1
Hangi işletim sisteminden bahsediyorsunuz?
rbanffy

rehashveya hash -rbash için * nix'te bulunan bir kabuk komutudur. C kabuğu başladığında, yolundaki tüm komutların bir karma tablosunu oluşturur: her komut adı ve mutlak yol adı. Dolayısıyla, bir csh çalıştırmaya başladıktan sonra, yol üzerindeki dizinlere yeni programlar eklenirse, karma tablosunu yeniden oluşturmak için kabuğun yeniden işleme komutunu kullanmanız gerekir. (cf: docstore.mik.ua/orelly/unix3/upt/ch27_06.htm )
yacc

1

Bu sorunu yaşadım, ancak yalnızca tmuxoturumu kullanmaya başladığımdatmuxinator .

Bunu kullanmak yerine ' tmuxinatordan brewkullandığım için ortaya çıktı gem install. Belki chrubyaynı zamanda kullanmak da soruna katkıda bulunmuştur.

p / s: Kullanılmayan yakutu da kaldırdım, ~/.gem/rubyancak bu sorunun benim için çözülmesinin sebebinin bu olduğundan şüpheliyim.


1

Çalıştırmak gem pristine --allilk başta yardımcı olmadı ama sonra fark ettim: çalıştırdığım komut dosyası şu satırla başladı:

#!/usr/bin/ruby

MacOS sistemimde (Catalina, ancak önemli olduğunu sanmıyorum), bu, RVM tarafından kurulan değil, sistemle birlikte gelen Ruby'ye işaret ediyor. Çalıştırmak gem pristine --allRVM kurulumunu düzeltirdi, ancak betiğim Ruby'nin farklı bir sürümünü çağırıyordu.

Benim için düzeltme env, mevcut kabukta belirtilen Ruby'yi çağırmak için komutu kullanmaktı PATH. Komut dosyasının üst satırını şu şekilde değiştirmek sorunu çözdü:

#!/usr/bin/env ruby


Bana oldu - teşekkürler! Bu bundle install, Ruby sistemine atıfta bulunan bir komut dosyasının onları bulamadığı RVM Ruby değiştirici aracılığıyla seçilen bir yakut için mücevherleri (ve yerel uzantılarını) yüklediğiniz anlamına gelir . Çözümünüz, Ruby komut dosyalarının ve mücevherlerin kullanıcı tarafından yüklenmiş Ruby'ler ile çalışmasını sağlamak için standart uygulamadır ( bkz. ).
tanius

Bu beni doğru yola soktu! Benim durumumda, tmuxinator'ın bir kullanım olmasını istedim (belirli bir proje için paketlenmiş bir dep değil), bu yüzden Ubuntu'ya yükledim. Bunu yapmak apt purge tmuxinatorve sonra gem install tmuxinatorçalışmasını sağladı. Proje dışı yakut sürümümü her yükselttiğimde muhtemelen mücevher yüklemem gerekecek, ancak bunu daha çok seviyorum. Teşekkürler!
labirent

1

Mac OS Catalina, brew ve rbenv çalıştırılıyor ...

Bugün tam olarak bu problemle karşılaştıktan ve buradaki tüm cevapları gözden geçirdikten sonra, sonunda bu hatanın başka bir nedenine rastladım:

Ignoring nokogiri 1.10.7 because its extensions are not built. Try: gem pristine nokogiri --version 1.10.7

Ve tabii ki saf mücevher işe yaramadı.

Benim sorunum, rbenv'i geçersiz kılan sabit kodlanmış bir GEM_HOME ve GEM_PATH ortam değişkenleriydi.

Bu nedenle, ~ / .zshrc içinde GEM_PATH ve GEM_HOME'u ayarlamadığınızdan emin olun



0

Aynı sorunu yaşadım ve rbenv kullanıyorum. Bazı nedenlerden dolayı global rbenv ayarım kayboldu. Bu sorunu çözmek için genel sürümü rbenv sürümlerimden birine ayarladım ... örneğin:

rbenv global 2.5.1


0

Bu, Mac'te geliştirme yaparken ve ardından bir Docker görüntüsü oluştururken de bir sorundur: https://forums.aws.amazon.com/thread.jspa?messageID=879802&tstart=0

Bir "paket yükleme - dağıtım" yaptığınızda, paketleyici, içinde değerli taşlarınız bulunan bir satıcı dizini oluşturur. Bunun yerel klasördeki mücevherlerinizi içermesine rağmen, yalnızca platformunuz için yerel uzantıları içereceğini unutmayın. MacOS'ta olduğunuz için bu Darwin olacaktır. İşlemi 64 bit x86 linux ortamında tekrarlamanız gerekecek.


0

Libby'nin yeni bir terminal oturumu başlatma önerisi (Sebastian Kim'in cevabı üzerine yorum yaptı) benim için işe yaradı. Diğerlerinden çok daha hızlı, bu yüzden daha görünür olması için bir cevap olmasını istedim.


0

Benim durumumda koşmaya çalışıyordum pristine --allama şunu alıyordum:

Ignoring ffi-1.11.1 because its extensions are not built.  Try: gem pristine ffi --version 1.11.1
Ignoring jaro_winkler-1.5.3 because its extensions are not built.  Try: gem pristine jaro_winkler --version 1.5.3
Ignoring psych-3.1.0 because its extensions are not built.  Try: gem pristine psych --version 3.1.0
/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': incompatible library version - /.gem/gems/psych-3.1.0/lib/psych.bundle (fatal) 

Ardından, içeriği Users/{{user.name}}⁩/⁨.gem⁩daha sonra çalıştırmam gerektiğinden sildim, bundle install --forceher şeyi yeniden yükledim, sonra komut pristine --allbeklendiği gibi çalıştı


0

Bu çözüm RubyMine IntelliJ için benim için çalıştı

Kullanılan iki farklı terminalim vardı ve RVMve ruby<Version>.

Çözüm:

Hataların ortadan kalkması için onu RVM sürümüne geçirmek zorunda kaldım Preferences>Languages&Frameworks>Ruby SDK

Hatalar:

Ignoring executable-hooks-1.6.0 because its extensions are not built. Try: gem pristine executable-hooks --version 1.6.0 rubymine

Ignoring gem-wrappers-1.4.0 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.4.0

görüntü açıklamasını buraya girin

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.