2012-10-15 12 views
6

Yeni projem için gereken taşları yüklemek için bundle kullanmaya çalışıyorum, ancak 'ffi' geminin 1.1.5 sürümünü yükleme konusunda sorun yaşıyorum.Ubuntu Server'da Ruby gem "ffi" yüklemesiyle ilgili sorunlar 12.04

64-bit Ubuntu Server 12.04'ün sanallaştırılmış yüklemesinde çalışan Ruby 1.9.3 kullanıyorum. bundle komutunu çalıştırırken, ben şu hata iletisi:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

     /home/alex/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb 
checking for ffi.h... no 
checking for ffi.h in /usr/local/include,/usr/include/ffi... no 
checking for rb_thread_blocking_region()... yes 
checking for ruby_native_thread_p()... yes 
checking for rb_thread_call_with_gvl()... yes 
creating extconf.h 
creating Makefile 

make 
Configuring libffi 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux"SampleRails 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux'ems/[email protected] 
make "AR_FLAGS=" "CC_FOR_BUILD=" "CFLAGS=-Wall -fexceptions" "CXXFLAGS=" "CFLAGS_FOR_BUILD=" "CFLAGS_FOR_TARGET=" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=" "LIBCFLAGS=" "LIBCFLAGS_FOR_TARGET=" "MAKE=make" "MAKEINFO=/b/gems/ffi-1.1.5/ext/ffi_c/libffi/missing --run makeinfo " "PICFLAG=" "PICFLAG_FOR_TARGET=" "RUNTESTFLAGS=" "SHELL=/bin/bash" "exec_prefix=/usr/local" "infodir=/usr/local/share/info" "libdir=/usr/local/lib" "mandir=/usr/local/share/man" "prefix=/usr/local" "AR=ar" "AS=as" "CC=gcc" "CXX=g++" "LD=/usr/bin/ld -m elf_x86_64" "NM=/usr/bin/nm -B" "RANLIB=ranlib" "DESTDIR=" all-recursive 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux'ems/[email protected] 
Making all in include 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux/include'[email protected] 
make[3]: Nothing to be done for `all'. 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux/include'[email protected] 
Making all in testsuite 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux/testsuite'[email protected] 
make[3]: Nothing to be done for `all'. 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux/testsuite'[email protected] 
Making all in man 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux/man'[email protected] 
make[3]: *** No rule to make target `ffi.3', needed by `all-am'. Stop. 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux/man'[email protected] 
make[2]: *** [all-recursive] Error 1 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux'ms/[email protected] 
make[1]: *** [all] Error 2 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux'ms/[email protected] 
/gems/ffi-1.1.5/ext/ffi_c/libffi-x86_64-linux"/.libs/libffi_convenience.a] Error 2 


/gems/ffi-1.1.5 for inspection. in /home/alex/.rvm/gems/[email protected] 
/gems/ffi-1.1.5/ext/ffi_c/gem_make.out/[email protected] 
An error occurred while installing ffi (1.1.5), and Bundler cannot continue. 
Make sure that `gem install ffi -v '1.1.5'` succeeds before bundling. 

hata hattı make[3]: *** No rule to make target 'ffi.3', needed by 'all-am' neden gibi görünüyor ama bu ne anlama geldiğini hiçbiri akıllıca değilim.

Herkes bana yardım edebilir mi? Şimdiden teşekkürler!

+0

Paketleyici olmadan yüklemeyi denediniz mi? gem ffi yüklemek? – corroded

+0

Maalesef tam olarak aynı sorunu yaşıyorum. İlk hata hattından önceki çizgi, bir mutluluk yaratmadan yaşayabildiğim bir manpage yaratıyor gibi görünüyor - bu yüzden Makefile'nin bu bölümlerini kaldırmanın bir yolu da bundan memnun olurum. – ultrafez

+0

gem yükleme ffi --no-ri --no-rdoc hakkında nasıl? – corroded

cevap

13

libffi-dev paketini yükleyin:

sudo apt-get install libffi-dev 

modern bir Linux sistemi üzerindeasla libffi için başlıklar/link lib, bulamazsa iç libffi kütüphane inşa edecek ffi mücevher Ne İstediğiniz - sadece sisteminizin dev paketlerini yükleyin.

+0

Fantastik - bu mükemmel çalıştı. Çok teşekkürler! Çoğu mücevherde, sisteme zaten yüklenmemişse kendi iç kütüphanelerini kuracakları durum böyle midir? – ultrafez

+1

Mücevher büyük ölçüde bağlıdır. Ffi ile libffi'nin bir iç kopyasını ekledim, çünkü (zaman) kanama kenarındaki libffi'nin bazı özelliklerini kullandı. Çoğu linux sistemi artık yeterince yeni bir libffi ile birlikte geliyor, ancak hala libffi göndermeyen diğer sistemler için hala yararlı. –