Hata: Rubocop indirmeye çalışırken gem yerel uzantısı oluşturulamadı


13

"sudo gem install rubocop" denediğimde ...

Building native extensions.  This could take a while...
ERROR:  Error installing rubocop:
    ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 mkrf_conf.rb

current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 -rubygems /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake RUBYARCHDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1 RUBYLIBDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1
/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)

rake failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/rainbow-2.2.1 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1/gem_make.out

Bu yüzden, özellikle /programming/22544754/failed-to-build-gem-native-extension-instal-compass (farklı mücevher, aynı hata) çözümlerini denedim

Bir süre aldı ama düzeltmek değil "rvm yeniden - disisable-binary 2.2.0" ile RVM yeniden denedim

sonraki $ "sudo apt-get install ruby-dev" denedim hangi verir

Reading package lists... Done
Building dependency tree       
Reading state information... Done
ruby-dev is already the newest version (1:2.3.0+1).
The following packages were automatically installed and are no longer required:
  dkms linux-headers-4.4.0-53 linux-headers-4.4.0-53-generic
  linux-image-4.4.0-53-generic linux-image-extra-4.4.0-53-generic
  python-appindicator python-gconf python-gi python-glade2
  python-gobject python-pexpect python-ptyprocess python-xdg
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 40 not upgraded.

Ben de "gem güncelleme --system" denedim ...

Latest version currently installed. Aborting.

Tüm noob olduğum ve sıkışıp kaldım gibi herhangi bir öneri büyük takdir edilecektir.


Hatanın söylediği gibi, rakeyüklediniz mi?
muru

Evet. En yeni sürüme sahibim.
user642832

Yanıtlar:


27

Yapın sudo gem install rakeve sonra sudo gem install rubocoptekrar yapın ve çalışması gerekir.

Komisyonun doğru sürümünün kurulu olması önemli değil. Benim için rake --versionbildirildi 10.5.0ama hala seninle aynı hata mesajını alıyordum.

Hata mesajına baktığımda, rakesadece benim herhangi bir yerde değil, belirli bir yolu arıyor PATH:

/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)

which rakeraporlar /usr/local/bin/rakedeğil /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake.

Ve aslında, hata mesajının dediği gibi, dosya yok /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake.

Bu muhtemelen ed değil ed rakeedilmekle ilgilidir . bu dosyayı oluşturur.apt-get installgem installsudo gem install rake


3

İle bu sorunu çözebildim

sudo mkdir -p /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin
sudo ln -s /usr/bin/rake /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/

GitHub'daki bu taahhüdüne bakın .


2

Bunu 2017'de cevapladığımda, @ SeanHammond'un çözümüne şüpheliydim, çünkü tırmık taş zaten kurulmuş gibi görünüyordu. Bu Debian'ın komisyon paketi ve rubygems entegrasyon sisteminden geçti. Komisyon gemisini tekrar yüklemek, Bay Hammond'a göre, bugün benim için çalıştı, Debian'ın versiyonunu geçersiz kıldığı için altta yatan hatayı önledi. İlk önce şöyle dedi:

martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc rake
Fetching: rake-12.3.1.gem (100%)
ERROR:  While executing gem ... (TypeError)
    no implicit conversion of nil into String
martind@balance:~$ 

Hata raporlaması için yukarı yönlü bir düzeltme uyguladıktan sonra şunu söyledi:

rake's executable "rake" conflicts with an unknown executable
Overwrite the executable? [yN]  n
ERROR:  Error installing rake:
    "rake" from rake conflicts with installed executable from 
martind@balance:~$ 

... bu da beni başarıya ulaştırdı:

martind@balance:~$ sudo gem2.1 install --no-ri --no-rdoc --format-executable rake
Successfully installed rake-12.3.1
1 gem installed
martind@balance:~$ 

Bu rubygems güncellenmiş ikili bulmak için yeterli:

martind@balance:~$ ruby2.1 -we 'puts(Gem.bin_path("rake", "rake"))'
/var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ ls -l /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
-rwxr-xr-x 1 root root 1182 Apr 17 15:03 /var/lib/gems/2.1.0/gems/rake-12.3.1/exe/rake
martind@balance:~$ 

@ ShaunJackman'ın çözümü de benim için çalıştı. Debian'ın düzeltmesi gereken yol bu olabilir, ancak dosyaları makinemde Debian'ın daha sonra değiştirmek isteyebileceği bir dizinde bırakmak istemem.

Daha az ağrılı bir çözüm, rake=/usr/bin/rakeistediğim gem'i yüklediğim ortamda ayarlanmıştı :

martind@balance:~$ rake=/usr/bin/rake sudo gem2.1 install --no-ri --no-rdoc mediawiki_api
Fetching: unf-0.2.0.beta2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed unf-0.2.0.beta2
Fetching: mediawiki_api-0.7.1.gem (100%)
Successfully installed mediawiki_api-0.7.1
2 gems installed
martind@balance:~$ 

... Debian hata raporumda belirtildiği gibi . Sudo'nuzun bu ayardan geçmek için --preserve-env'ye ihtiyacı olabilir.

(Bu cevabın daha önceki bir versiyonunda, " sudo gem install rainbowçözüldü eşdeğeri" olduğunu iddia ettim ama sorunumun eşdeğer olmadığı ortaya çıktı. Sorunum gem, gökkuşağı ve rubocop değil, aslında gem2.1, mediawiki- ağ geçidi (veya halefi, mediawiki_api) ve unf. Bağımlılığın yüklenmesinin benim durumum için ilk kez çalışmasının nedeni gem2.1'in yayın öncesi sürümleri bağımlılık olarak yüklemeyi tercih ettiği bir hataya sahip olmasıydı. düzyazı, hata bu, Unf kendisini yüklemesi istendiğinde, bunun yerine ve haklı olarak, RakeBuilder yerine rubygem'in ExtConfBuilder kod yolunu kullanan bir yayın sürümü seçer. Bu, orijinal posterin gökkuşağı sorunları ile yardımcı olmazdı, çünkü yayın öncesi bir versiyona sahip değildi. Uzun tartışmalar için özür dilerim, ama belki de benzer bir sorunla karşılaşan başka birine yardımcı olacaktır.)


1
benim için daha da basit: rake=rakeçalıştı
Anthony Sottile
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.