Gagal membangun ekstensi asli permata (menginstal Kompas)

275

Ketika saya mencoba menginstal versi kompas terbaru ( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 ), saya mendapatkan kesalahan berikut.

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

Apa yang terjadi di sini? Bagaimana cara saya menginstal kompas terbaru tanpa kesalahan?

cusejuice
sumber
pastikan Anda sudah membuat di sistem Anda.
Penyortir

Jawaban:

577

Coba ini, lalu coba pasang kompas lagi

apt-get install ruby-dev
Rutger van Baren
sumber
33
Ini memperbaiki kesalahan pada Ubuntu, tetapi tampaknya OP menggunakan OSX.
mhnagaoka
1
Tetap untuk saya di Ubuntu 14.04 LTS
thomh
30
Bekerja pada CentOS dengan "yum install ruby-devel" yang setara. Terima kasih!
B2F
6
Lucu menemukan solusi untuk masalah Ubuntu saya dalam menjawab pertanyaan OSx. Namun demikian, Anda mendapatkan jawaban saya karena jawaban Anda baru saja menyelesaikan masalah saya. Tnx!
e-sushi
3
Adakah yang tahu cara membuatnya bekerja di Windows? Saya menginstal alat dev Ruby menggunakan choco install ruby2.devkittetapi masih tidak berfungsi
jtate
124

Untuk menginstal kompas Pada Mac OS X 10.10 (Yosemite) harus melakukan hal berikut:

1. Mengatur Ruby Environment

  • Pastikan ruby ​​diinstal dan terbaru: ruby -v
  • Perbarui gem's sudo gem update --system

2. Mengatur Lingkungan MAC

Instal Alat Baris Perintah Xcode ini adalah kunci untuk menginstal Kompas.

xcode-select --install

Menginstal Alat Baris Perintah Xcode adalah kunci untuk membuat Kompas bekerja di OS X

3. Pasang Kompas

sudo gem install compass
neteru
sumber
3
Bagi saya ini adalah jawaban yang tepat, membutuhkan alat baris perintah Xcode
svnm
2
Terima kasih, bekerja untuk saya, Anda benar, Alat Baris Perintah Xcode adalah kuncinya.
sarcom
5
Ini bekerja untuk saya dengan satu tambahan - Anda harus benar-benar memulai XCODE sehingga Anda dapat menerima perjanjian lisensi dan membiarkannya menyelesaikan pengaturan. Mungkin layak untuk menandai jawaban Anda.
Bruford
Menerima pembaruan (ketentuan perjanjian) melalui GUI bekerja juga.
cassioscabral
Pada MacBook Pro yang baru saja diperbarui ke Sierra 10.12.6, saya juga harus menjalankan "sudo xcodebuild -license" untuk menerima syarat dan ketentuan, sebelum menjalankan sudo gem install kompas ....
jocherra
46

Cara terbaik adalah sudo apt-get install ruby-compassmenginstal kompas.

cooljl31
sumber
1
Wow, terkadang ini sangat mudah ^^ mencoba memasang kompas dengan permata, tetapi ada beberapa dependensi yang tidak diselesaikan oleh permata. Dengan apt-get itu bekerja dengan baik! Terima kasih
naitsirch
38

Anda dapat mencoba di Debian bersama

sudo apt-get install gcc ruby-dev rubygems compass

untuk Fedora, Centos

yum -y install gcc ruby-devel rubygems compass

Ini berhasil untuk saya.

vanduc1102
sumber
5
Saya juga harus menginstal make.
cweiske
3
ruby-devmelakukan trik stackoverflow.com/questions/20559255/…
Bernhard Döbler
30

Saya kesulitan dengan Anda masalah yang sama selama sekitar 3 jam. Pada Compass 1.0.alpha19, persyaratannya adalah untuk versi rvm 1.9.3.

Ada beberapa pos yang tidak dikoleksi, namun yang berhasil bagi saya adalah sebagai berikut:

  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

dan itu berhasil. Semoga berhasil juga untuk Anda!

AA Trabucco Campos
sumber
Baru-baru ini saya memiliki masalah yang sama tetapi dengan versi yang lebih baru. Apa yang saya lakukan adalah menghapus versi ruby ​​yang saya instal sebelumnya dengan aptitude dan kemudian saya menginstalnya lagi dengan mengikuti instruksi di: rvm.io/rvm/install . Dengan kompas versi ruby ​​/ rvm baru dibangun dengan benar.
adosaiguas
2
Terima kasih untuk ini, sangat membantu. Saya mengubah langkah 3 menjadi rvm install ruby-2.1.21.9.3 tidak lagi diperbarui
timelf123
24

Bagi saya untuk mengatasi masalah ini, saya harus memastikan saya memiliki Ruby dan permata versi terbaru gem update --system; kemudian, saya harus memastikan bahwa Xcode & Tools Command Line dipasang: xcode-select --install.

BlackHatSamurai
sumber
xcode-select --installsudah dilakukan tetapi ini tidak menyelesaikannya untuk saya
Ade
14

Di Mac OS Anda perlu menginstal fitur ini!

xcode-select --install
pengguna3645907
sumber
10

Hai itu adalah tantangan untuk membuatnya bekerja di Mac jadi bagaimanapun di sini adalah solusinya

  1. Instal macports
  2. Instal rvm
  3. Mulai ulang Terminal
  4. Jalankan rvm requirementskemudian jalankanrvm install 2.1
  5. Dan langkah terakhir untuk dijalankan gem install compass --pre

Saya tidak yakin tetapi versi ruby ​​pada Mavericks tidak mendukung ekstensi asli dll ... jadi jika Anda menunjuk ke versi ruby ​​lain seperti yang saya lakukan "2.1" itu berfungsi dengan baik.

paul.g
sumber
Saya akan merekomendasikan untuk tidak menggunakan macports.
nomis
6

Tidak yakin mengapa tidak ada yang ditandai sebagai jawaban yang benar, tetapi saya mendarat di sini melalui pencarian google, jadi saya akan menyampaikan apa yang saya tahu ...

Metode @ paul_g cukup dekat bagi saya, langkah saya di Mac osx10.9 Retina:

  • Instal macports
  • Instal rvm (stabil dengan --insecuretanda tambah ruby untuk masalah terkait SSL) $\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • Mulai ulang Terminal / Sumber daya profil Anda
  • Jalankan rvm requirements --with-gcc=clangAnda tidak perlu memperbarui Ruby karena Anda mengunduh versi stabil terakhir
  • Dan langkah terakhir untuk dijalankan gem install compass --pre
tbremer
sumber
5

Jika Anda menggunakan Ubuntu, Anda harus mencoba menginstal build-essential

apt install build-essential

Saya memiliki masalah dengan pemasangan permata pada instalasi baru Ubuntu, dan solusi ini berhasil bagi saya.

Adi
sumber
Saya memiliki masalah yang sama. Beberapa orang lagi harus membenarkan ini.
Penyortir
4

Anda mungkin perlu menginstal Alat Baris Perintah Apple, yang mungkin tidak diinstal pada sistem Anda secara default. Saya mendapatkan kesalahan yang sama, tetapi sebelum mengikuti instruksi di sini saya menginstal Command Line Tools (karena masalah yang tidak berhubungan) dan lihatlah kompas terpasang tanpa masalah ketika saya mencoba lagi. YMMV.

John Ryan
sumber
Ini menyelesaikan masalah di atas untuk saya, jadi saya akan mengatakan ini adalah jawaban yang dapat diterima untuk pertanyaan di atas.
Peter J Harrison
4

Untuk menginstal Kompas di Yosemite, Anda perlu mengatur lingkungan Ruby dan menginstal Alat Baris Perintah Xcode. Tapi, yang paling penting, setelah memperbarui Xcode, pastikan untuk meluncurkan aplikasi Xcode dan menerima persyaratan lisensi Apple . Ini akan menyelesaikan pemasangan komponen. Setelah itu, Anda dapat menginstal Kompas: sudo gem instal kompas

Gratz
sumber
3

Untuk macOS 10.14 Mojave, pastikan Anda telah menginstal alat baris perintah via xcode-select --installdan jalankan perintah berikut untuk menginstal std header.

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

Sekarang coba perintah Anda lagi.

Vincent Sit
sumber
3

Anda harus memiliki gcc, json_pure

saya mengumpulkan beberapa informasi dari beberapa pos

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

Hai jika ** pembaruan sudo gem --sistem ** tidak berfungsi Anda mendapat kesalahan dalam pembaruan lalu gunakan

pembaruan sudo gem --sistem 2.7.8

gsm
sumber
Saya juga harus mencalonkan diri sudo yum install -y redhat-rpm-configuntuk Fedora 24 sebelum menginstal kompas karena kesalahan ini:gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
Bryce Guinta
sudo gem update --systemmemberiku kesalahan: ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem:(
Ade
2

Di yosemite, yang harus Anda lakukan adalah menginstal alat-alat baris perintah. lalu bekerja.

Bahkan jika permata lain terpasang dengan baik. Anda harus menjalankan xcode-select --install for gem install kompas agar berfungsi.

Semoga berhasil.

A.Sanchez.SD
sumber
2

Pada Mac OS X 10.9, jika Anda mencoba xcode-select --install, Anda akan mendapatkan kesalahan berikut:

Tidak dapat menginstal perangkat lunak karena saat ini tidak tersedia dari server Pembaruan Perangkat Lunak.

Solusinya adalah mengunduh Command Line Tools (OS X 10.9) langsung dari situs web Apple: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

Anda kemudian dapat menginstal versi terakhir dari Alat Baris Perintah.

lepix
sumber
2

Di ubuntu 14.04, saat menjalankan apt-get install rubygems , ada kesalahan

E: Paket 'rubygems' tidak memiliki kandidat instalasi

ikuti perintah memecahkan masalah.

sudo apt-get install gcc ruby-devel rubygems-integrasi ruby-compass

onebraveman
sumber
2

Coba brew install coreutils.

Saya mengalami masalah ini saat membangun kembali proyek penuaan / kompas yang menua yang baru saja diperbarui menjadi ruby ​​2.2.5 oleh seorang rekan. Proyek ini menggunakan rvm dan bundler. Ini adalah perintah saya

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

Ini menyebabkan saya mengenai ffikesalahan instalasi terkenal , yang dilaporkan di sekitar lingkungan StackOverflow:

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

Sebagian besar saran untuk mengatasi masalah ini adalah menginstal alat baris perintah Xcode. Namun ini sudah diinstal di lingkungan saya:

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

Saran lain untuk menginstal gcc ... jadi saya mencoba:

$ brew install gcc46

Tapi ini juga gagal karena kesalahan segmentasi ... ¯\_(ツ)_/¯.

Jadi, saya kemudian mencoba menginstal kompas dengan tangan, hanya untuk melihat apakah itu akan memberikan ffikesalahan yang sama :

$ gem install compass

Tetapi yang mengejutkan saya, saya mendapatkan kesalahan yang sangat berbeda:

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

Jadi saya mencari masalah itu, dan menemukan posting blog kuno yang mengatakan untuk menginstal coreutils:

$ brew install coreutils

Setelah menginstal coreutilsdengan Homebrew, bundler berhasil menyelesaikan dan menginstal kompas dan dependensi dengan sukses.

Tamat.

JamesWilson
sumber
2
  • sudo gem memperbarui --sistem
  • sudo permata instal kompas
Federico Bohn
sumber
2

kapan

gem instal overcommit

Dijalankan juga kesalahan ini telah ditempatkan di terminal.

Failed to build gem native extension

tolong lakukan hal yang sama

xcode-select --install

dan itu akan memperbaiki masalah itu juga

Anja Ishmukhametova
sumber
Saya mengerti xcode-select: error: command line tools are already installed, use "Software Update" to install updates. Ini tidak memperbaikinya.
Ade
2

Untuk Mac OS:

Kesalahan saya adalah saya lupa memilih opsi di XCode - Preferensi - Lokasi - Alat Baris Perintah setelah instalasi XCode baru (saya punya 2 versi dan kemudian saya menghapus satu). Mungkin itu akan membantu seseorang.

masukkan deskripsi gambar di sini

Eridana
sumber
1

Coba ini, lalu coba pasang kompas lagi

sudo apt install ruby-full
Pokkhi
sumber
0

Saya memiliki masalah yang sama pada Linux Mint tetapi saya dapat memperbaikinya dengan menghapus ruby ​​dan menginstalnya lagi.

Copot ruby:

sudo apt-get remove ruby

Ini melaporkan beberapa paket ruby ​​seperti:

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.

Copot paket yang tersisa *

apt-get autoremove

Pasang ruby ​​lagi

sudo apt-get install ruby2.2

Instal Kompas

sudo gem install compass

Perintah terakhir dijalankan dengan sukses.

claudiu.f.marginean
sumber