Gem yerel uzantısı oluşturulamadı (Compass kurulumu)


275

Pusulanın en son sürümünü ( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 ) kurmaya çalıştığımda aşağıdaki hatayı alıyorum.

ERROR:  Error installing compass:
ERROR: Failed to build gem native extension.

 ERROR:  Error installing compass:
  ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for ffi.h... no
checking for ffi.h in /usr/local/include,/usr/include/ffi... yes
checking for ffi_call() in -lffi... yes
checking for ffi_prep_closure()... yes
checking for ffi_raw_call()... no
checking for rb_thread_blocking_region()... yes
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
checking for ffi_prep_cif_var()... no
creating extconf.h
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling AbstractMemory.c
compiling ArrayType.c
compiling Buffer.c
compiling Call.c
Call.c:303:5: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration]
    rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL);
    ^
./Thread.h:78:39: note: expanded from macro 'rbffi_thread_blocking_region'
# define rbffi_thread_blocking_region rb_thread_call_without_gvl
                                      ^
1 warning generated.
compiling ClosurePool.c
compiling DataConverter.c
DataConverter.c:43:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
1 warning generated.
compiling DynamicLibrary.c
compiling ffi.c
compiling Function.c
Function.c:479:33: warning: incompatible pointer types passing 'VALUE (void *)' to parameter of type 'void *(*)(void *)' [-Wincompatible-pointer-types]
        rb_thread_call_with_gvl(callback_with_gvl, &cb);
                                ^~~~~~~~~~~~~~~~~
Function.c:102:46: note: passing argument to parameter 'func' here
extern void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
                                             ^
Function.c:563:9: warning: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Wimplicit-function-declaration]
        rb_thread_call_without_gvl(async_cb_wait, &w, async_cb_stop, &w);
        ^
Function.c:738:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
3 warnings generated.
compiling FunctionInfo.c
compiling LastError.c
compiling LongDouble.c
compiling MappedType.c
compiling MemoryPointer.c
compiling MethodHandle.c
compiling Platform.c
compiling Pointer.c
compiling Struct.c
compiling StructByReference.c
compiling StructByValue.c
compiling StructLayout.c
compiling Thread.c
compiling Type.c
compiling Types.c
compiling Variadic.c
linking shared-object ffi_c.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [ffi_c.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/ffi-1.9.3 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/ffi-1.9.3/gem_make.out

Burada neler oluyor? En son pusulayı hatasız olarak nasıl kurarım?



lütfen sisteminizde yaptığınızdan emin olun.
Sıralayıcı

Yanıtlar:


577

Bunu deneyin, ardından pusulayı tekrar yüklemeyi deneyin

apt-get install ruby-dev

33
Bu Ubuntu'daki hatayı düzeltir, ancak OP OSX kullanıyor gibi görünüyor.
mhnagaoka

1
Ubuntu'da benim için düzeltildi
14.04

30
Eşdeğer "yum install ruby-devel" ile CentOS üzerinde çalıştı. Teşekkürler !
B2F

6
Bir OSx sorusuna yanıt olarak Ubuntu sorunuma bir çözüm bulmak komik. Bununla birlikte, cevabınız sorunumu çözdüğü için benim oyumu aldınız. Tnx!
e-sushi

3
Bunun Windows üzerinde çalışmasını nasıl sağlayacağınız hakkında bir fikriniz var mı? Ruby dev araçlarını kullanarak yükledim choco install ruby2.devkitama hala çalışmıyor
17'de

124

Pusula yüklemek için Mac OS X 10.10'da (Yosemite) aşağıdakileri yapmak zorunda kaldı:

1. Ruby Ortamını Ayarlayın

  • Ruby'nin kurulu ve güncel olduğundan emin olun: ruby -v
  • Gem'in güncellemesi sudo gem update --system

2. MAC Ortamını Ayarlayın

Yükleme Xcode Komut Satırı Araçları Bu Pusula yüklemek için anahtardır.

xcode-select --install

Xcode Komut Satırı Araçlarını yüklemek, Compass'ın OS X üzerinde çalışmasının anahtarıdır

3. Pusulayı Kur

sudo gem install compass

3
Benim için bu tam olarak doğru cevaptı, Xcode komut satırı araçlarına ihtiyacı var
svnm

2
Teşekkürler, benim için çalıştı, haklısın, Xcode Komut Satırı Araçları anahtar.
sarcom

5
Bu benim için bir ek olarak işe yaradı - lisans sözleşmesini kabul edebilmeniz ve kurulumun bitmesine izin verebilmeniz için XCODE'u başlatmanız gerekiyor. Cevabınızı etiketlemeye değer olabilir.
Bruford

GUI aracılığıyla güncellemenin (anlaşma şartları) kabul edilmesi de çalıştı.
cassioscabral

Sierra 10.12.6'ya yakın zamanda güncellenmiş bir MacBook Pro'da, sudo gem kurulum pusulasını çalıştırmadan önce şartlar ve koşulları kabul etmek için "sudo xcodebuild -license" komutunu da çalıştırmak zorunda kaldım ....
jocherra

46

En iyi yol sudo apt-get install ruby-compasspusulayı kurmaktır.


1
Vay be, bazen çok kolay ^ ^ taş ile pusula yüklemeye çalıştı, ama bazı bağımlılıklar mücevher tarafından çözülmüş değildi. Apt-get ile amele para cezası! Teşekkürler
naitsirch


30

Yaklaşık 3 saat boyunca sizinle aynı konuda mücadele ettim. İtibariyle Compass 1.0.alpha19, gereksinim rvm sürümü 1.9.3 içindir.

Toplanmayan birkaç mesaj var, ancak benim için işe yarayan şey şuydu:

  1. sudo gem uninstall sass
  2. sudo gem uninstall compass
  3. rvm install ruby-1.9.3-p448
  4. sudo gem install sass --pre
  5. sudo gem install compass --pre

ve bunu başardı. Umarım sizin için de çalışır!


Geçenlerde aynı sorunu yaşadım, ancak daha yeni bir sürümle. Yaptığım şey, daha önce yüklediğim yakut sürümünü uygun bir şekilde kaldırmak ve daha sonra şu talimatları izleyerek yeniden yükledim : rvm.io/rvm/install . Yeni yakut / rvm versiyonu pusula ile düzgün inşa edilmiş.
adosaiguas

2
Bunun için teşekkürler, çok yararlı. Adım 3'ü rvm install ruby-2.1.21.9.3 olarak güncellenmediği için değiştirdim
timelf123

24

Bu sorunu çözebilmem için Ruby ve mücevherlerin en güncel sürümüne sahip olduğumdan emin olmalıydım gem update --system; Sonra, ben emin Xcode & Komut Satırı Araçları yüklü olduğunu yapmak zorunda: xcode-select --install.


xcode-select --installyapıldı ama bu benim için
Ade

14

Mac OS'de bu özelliği yüklemeniz gerekir!

xcode-select --install

10

Merhaba Mac üzerinde çalışmak için bir meydan okuma oldu, bu yüzden zaten burada bir çözüm

  1. Macport yükleyin
  2. Rvm yükleyin
  3. Terminali Yeniden Başlat
  4. Koş rvm requirementssonra koşrvm install 2.1
  5. Ve koşmak için son adım gem install compass --pre

Emin değilim ama Mavericks üzerinde yakut sürümü yerel uzantıları vb desteklemiyor ... yani "2.1" gibi diğer yakut sürümü işaret eğer iyi çalışıyor.


Macport kullanmamanızı tavsiye ederim.
nomis

6

Bunların hiçbirinin neden doğru cevap olarak işaretlenmediğinden emin değilim, ancak buraya bir google aramasıyla indim, bu yüzden bildiklerimi ileteceğim ...

@ paul_g'in yöntemi benim için oldukça yakındı, Mac osx10.9'daki adımlarım Retina:

  • Macport yükleyin
  • Install rvm ( --insecureSSL ile ilgili sorunlar için ruby add flag ile sabit )\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • Terminali Yeniden Başlat / Profilinizi kaynaklayın
  • Çalıştır rvm requirements --with-gcc=clangSon kararlı sürümü indirdiğiniz için Ruby'yi güncellemeniz gerekmeyecek
  • Ve koşmak için son adım gem install compass --pre

5

Ubuntu kullanıyorsanız, build-essential kurulumunu denemelisiniz

apt install build-essential

Ubuntu'nun taze kurulumunda taşlar kurulumuyla ilgili sorunlar yaşadım ve bu çözüm benim için çalıştı.


Ben de aynı problemi yaşadım. Biraz daha insan bunu onaylamalıdır.
Sıralayıcı

4

Muhtemelen sisteminizde varsayılan olarak kurulu olmayan Apple'ın Komut Satırı Araçlarını yüklemeniz gerekebilir. Aynı hatayı alıyordum, ancak buradaki talimatları izlemeden önce Komut Satırı Araçları'nı (ilgisiz bir sorun nedeniyle) yükledim ve tekrar denediğimde sorunsuz bir şekilde yüklü pusulası görün. YMMV.


Bu benim için yukarıdaki sorunu çözdü, bu yüzden yukarıdaki soruya kabul edilebilir bir cevap olduğunu söyleyebilirim.
Peter J Harrison

4

Compass'ı Yosemite üzerine kurmak için Ruby ortamını kurmanız ve Xcode Komut Satırı Araçlarını kurmanız gerekir. Ancak, en önemli şey, Xcode'u güncelledikten sonra , Xcode uygulamasını başlattığınızdan ve Apple lisans koşullarını kabul ettiğinizden emin olun . Bileşenlerin kurulumunu tamamlayacaktır. Bundan sonra, Pusula yükleyebilirsiniz: sudo gem install pusula


3

MacOS 10.14 Mojave için, komut satırı araçlarını önceden yüklediğinizden emin olun xcode-select --installve std başlıklarını yüklemek için aşağıdaki komutu çalıştırın.

sudo open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Şimdi komutunuzu tekrar deneyin.


3

gcc'niz olmalı , json_pure

birkaç gönderiden bazı bilgiler topluyorum

sudo gem uninstall sass
sudo gem uninstall compass
sudo gem update --system
gem install json_pure   (if you have already have continued to next step)
sudo yum install gcc gcc-c++   (if you have already have continued to next step)
sudo gem install sass

sudo gem install compass

Merhaba ** sudo gem update --system ** çalışmıyorsa güncellemede bir hata var sonra kullanın

sudo gem güncellemesi --sistem 2.7.8


Ayrıca sudo yum install -y redhat-rpm-configbu hata nedeniyle pusula yüklemeden önce Fedora 24 için koşmak zorunda kaldım :gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
Bryce Guinta

sudo gem update --systembana hata verdi: ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem:(
Ade

2

Yosemite üzerinde yapmanız gereken tek şey komut satırı araçlarını kurmaktır. sonra çalışır.

Diğer taşlar iyi takılmış olsa bile. Gem yükleme pusulasının çalışması için xcode-select --install komutunu çalıştırmalısınız.

İyi şanslar.


2

Mac OS X 10.9'da, denerseniz xcode-select --install, aşağıdaki hatayı alırsınız:

Yazılım, şu anda Yazılım Güncelleme sunucusundan kullanılamadığı için yüklenemiyor.

Çözüm, Komut Satırı Araçlarını (OS X 10.9) doğrudan Apple web sitesinden indirmektir: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

Daha sonra Komut Satırı Araçları'nın son sürümünü yükleyebilirsiniz.


2

Ubuntu 14.04'te , apt-get install rubygems'i çalıştırırken bir hata var

E: 'rubygems' paketinin kurulum adayı yok

komut izleyin sorunları çözmek.

sudo uygun-almak install gcc ruby-devel rubygems-entegrasyon ruby-pusula


2

Deneyin brew install coreutils.

Yakın zamanda bir meslektaşım tarafından yakut 2.2.5'e güncellenen yaşlanan bir sass / pusula projesini yeniden oluştururken bu sorunu yaşadım. Proje rvm ve bundler kullanıyor. Bunlar benim komutlarımdı

$ rvm install ruby-2.2.5
$ rvm use ruby-2.2.5
$ gem install bundler
$ bundle install

Bu ffi, StackOverflow ortamında bildirilen ünlü yükleme hatalarına çarpmama neden oldu :

An error occurred while installing ffi (1.9.14), and Bundler cannot continue.

Bu sorunu çözmek için önerilerin çoğu Xcode komut satırı araçlarını yüklemektir. Ancak bu zaten ortamımda kuruldu:

$ xcode-select -p
/Library/Developer/CommandLineTools

Diğer öneriler gcc yüklemek için dedi ... bu yüzden denedim:

$ brew install gcc46

Ancak bu, segmentasyon hatası nedeniyle de başarısız oldu ¯\_(ツ)_/¯.

Böylece, daha sonra aynı ffihatayı verip vermeyeceğini görmek için pusulayı elle yüklemeyi denedim :

$ gem install compass

Ama sürprizime göre, tamamen farklı bir hatayla karşılaştım:

make: /usr/local/bin/gmkdir: No such file or directory

Bu yüzden bu sorunu araştırdım ve coreutils'i kurduğu söylenen bu eski blog gönderisini buldum :

$ brew install coreutils

coreutilsHomebrew ile kurduktan sonra , paketleyici pusulayı ve bağımlılıkları başarıyla bitirip kurdu.

Son.



2

ne zaman

gem aşırı yükleme

çalıştırıldığında da bu hata terminale yerleştirilmiştir.

Failed to build gem native extension

lütfen aynısını yap

xcode-select --install

ve bu sorunu da düzeltir


Anladım xcode-select: error: command line tools are already installed, use "Software Update" to install updates. Bu sorunu çözmez.
Ade

2

Mac OS için:

Benim hatam, yeni XCode kurulumundan sonra XCode - Tercihler - Konumlar - Komut Satırı Araçları'nda seçeneği seçmeyi unuttum (2 versiyonum vardı ve daha sonra bir tane sildim). Belki birine yardım eder.

resim açıklamasını buraya girin


1

Bunu deneyin, ardından pusulayı tekrar yüklemeyi deneyin

sudo apt install ruby-full

0

Aynı sorunu Linux Mint'te de yaşadım, ancak ruby'yi kaldırıp yeniden yükleyebildim.

Ruby'yi kaldırın:

sudo apt-get remove ruby

Bazı yakut paketleri bildirdi:

Package 'ruby' is not installed, so not removed
The following packages were automatically installed and are no longer required:
libruby2.2 ruby-chunky-png ruby-sass rubygems-integration
Use 'apt-get autoremove' to remove them.

Kalan paketleri kaldırın *

apt-get autoremove

Ruby'yi tekrar yükle

sudo apt-get install ruby2.2

Pusulayı Kur

sudo gem install compass

Son komut başarıyla uygulandı.

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.