Fehler beim Erstellen der nativen Gem-Erweiterung (Installation von Compass)

274

Wenn ich versuche, die neueste Version des Kompasses ( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 ) zu installieren , wird die folgende Fehlermeldung angezeigt.

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

Was ist denn hier los? Wie installiere ich den neuesten Kompass ohne Fehler?

Cusejuice
quelle
Bitte stellen Sie sicher, dass Sie auf Ihrem System gemacht haben.
Sortierer

Antworten:

577

Versuchen Sie dies und versuchen Sie dann erneut, den Kompass zu installieren

apt-get install ruby-dev
Rutger van Baren
quelle
33
Dies behebt den Fehler unter Ubuntu, aber es scheint, dass OP OSX verwendet.
Mhnagaoka
1
Für mich unter Ubuntu 14.04 LTS
behoben
30
Arbeitete unter CentOS mit "yum install ruby-devel", was dem Äquivalent entspricht. Vielen Dank !
B2F
6
Lustig, eine Lösung für mein Ubuntu-Problem in einer Antwort auf eine OSx-Frage zu finden. Trotzdem hast du meine Gegenstimme, da deine Antwort gerade mein Problem gelöst hat. Tnx!
E-Sushi
3
Irgendeine Idee, wie dies unter Windows funktioniert? Ich habe die Ruby- choco install ruby2.devkit
Entwicklungstools mit
123

Um Kompass unter Mac OS X 10.10 (Yosemite) zu installieren, musste Folgendes ausgeführt werden:

1. Richten Sie die Ruby-Umgebung ein

  • Stellen Sie sicher, dass Ruby installiert und auf dem neuesten Stand ist: ruby -v
  • Edelsteine ​​aktualisieren sudo gem update --system

2. Richten Sie die MAC-Umgebung ein

Installieren Sie die Xcode-Befehlszeilentools. Dies ist der Schlüssel zum Installieren von Compass.

xcode-select --install

Die Installation der Xcode-Befehlszeilentools ist der Schlüssel, damit Compass unter OS X funktioniert

3. Installieren Sie Compass

sudo gem install compass
neteru
quelle
3
Für mich war dies genau die richtige Antwort, es braucht die Xcode-Befehlszeilentools
svnm
2
Danke, für mich gearbeitet, Sie haben Recht, die Xcode Command Line Tools sind der Schlüssel.
Sarkom
5
Dies funktionierte bei mir mit einem Zusatz: Sie müssen XCODE tatsächlich starten, damit Sie die Lizenzvereinbarung akzeptieren und die Einrichtung abschließen können. Es könnte sich lohnen, Ihre Antwort zu markieren.
Bruford
Das Akzeptieren des Updates (Vertragsbedingungen) über die GUI funktionierte ebenfalls.
Cassioscabral
Auf einem kürzlich aktualisierten MacBook Pro auf Sierra 10.12.6 musste ich auch "sudo xcodebuild -license" ausführen, um die allgemeinen Geschäftsbedingungen zu akzeptieren, bevor ich sudo gem install
kompass ausführen konnte
46

Am besten sudo apt-get install ruby-compassinstallieren Sie den Kompass.

cooljl31
quelle
1
Wow, manchmal ist es so einfach ^^ versuchte Kompass mit Gem zu installieren, aber es gab einige Abhängigkeiten, die nicht von Gem gelöst wurden. Mit apt-get hat es gut funktioniert! Danke
naitsirch
38

Sie können in Debian mit versuchen

sudo apt-get install gcc ruby-dev rubygems compass

für Fedora, Centos

yum -y install gcc ruby-devel rubygems compass

Es hat bei mir funktioniert.

vanduc1102
quelle
5
Ich musste auch installieren make.
Cweiske
3
ruby-devhat den Trick stackoverflow.com/questions/20559255/…
Bernhard Döbler
30

Ich hatte ungefähr 3 Stunden lang mit Ihnen zu kämpfen. Ab Compass 1.0.alpha19ist die Voraussetzung für die rvm Version 1.9.3.

Es gibt mehrere nicht gesammelte Beiträge, aber was für mich funktioniert hat, war Folgendes:

  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

und das hat es geschafft. Hoffe es funktioniert auch bei dir!

AA Trabucco Campos
quelle
Ich hatte vor kurzem das gleiche Problem, aber mit einer neueren Version. Was ich getan habe, ist, die Ruby-Version, die ich zuvor mit aptitude installiert habe, zu deinstallieren und sie dann erneut zu installieren, indem ich den Anweisungen unter: rvm.io/rvm/install folge . Mit der neuen Ruby / RVM-Version Kompass richtig gebaut.
Adosaiguas
2
Danke dafür, sehr hilfreich. Ich habe Schritt 3 geändert, rvm install ruby-2.1.2da 1.9.3 nicht mehr aktualisiert wird
timelf123
24

Um dieses Problem zu lösen, musste ich sicherstellen, dass ich die aktuellste Version von Ruby und den Edelsteinen hatte gem update --system. Dann musste ich sicherstellen, dass Xcode und die Befehlszeilentools installiert waren : xcode-select --install.

BlackHatSamurai
quelle
xcode-select --installwurde getan, aber das löst es nicht für mich
Ade
14

Unter Mac OS müssen Sie diese Funktion installieren!

xcode-select --install
user3645907
quelle
10

Hallo, es war eine Herausforderung, es auf dem Mac zum Laufen zu bringen. Hier ist also eine Lösung

  1. Installieren Sie Macports
  2. Installieren Sie rvm
  3. Starten Sie das Terminal neu
  4. Laufen, rvm requirementsdann laufenrvm install 2.1
  5. Und der letzte Schritt zum Laufen gem install compass --pre

Ich bin mir nicht sicher, aber die Ruby-Version auf Mavericks unterstützt keine nativen Erweiterungen usw. Wenn Sie also auf eine andere Ruby-Version wie "2.1" verweisen, funktioniert dies einwandfrei.

paul.g
quelle
Ich würde empfehlen, keine Macports zu verwenden.
Nomis
6

Ich bin mir nicht sicher, warum keines davon als die richtige Antwort markiert ist, aber ich bin hier über eine Google-Suche gelandet, also werde ich weitergeben, was ich weiß ...

@ paul_gs Methode war ziemlich nah für mich, meine Schritte auf einem Mac osx10.9 Retina:

  • Installieren Sie Macports
  • Installieren Sie rvm (stabil mit Ruby Add --insecureFlag für SSL-bezogene Probleme) $\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • Starten Sie Terminal / Resource Ihr Profil neu
  • Ausführen rvm requirements --with-gcc=clangSie müssen Ruby nicht aktualisieren, da Sie die letzte stabile Version heruntergeladen haben
  • Und der letzte Schritt zum Laufen gem install compass --pre
tbremer
quelle
4

Möglicherweise müssen Sie die Befehlszeilentools von Apple installieren, die wahrscheinlich nicht standardmäßig auf Ihrem System installiert sind. Ich habe den gleichen Fehler erhalten, aber bevor ich eine der Anweisungen hier befolgt habe, habe ich die Befehlszeilentools (aufgrund eines nicht damit zusammenhängenden Problems) installiert und siehe da, der Kompass wurde ohne Probleme installiert, als ich es erneut versuchte. YMMV.

John Ryan
quelle
Dies hat das oben genannte Problem für mich gelöst, daher würde ich sagen, dass dies eine akzeptable Antwort auf die oben genannte Frage ist.
Peter J Harrison
4

Um Compass auf Yosemite zu installieren, müssen Sie die Ruby-Umgebung einrichten und die Xcode-Befehlszeilentools installieren. Am wichtigsten ist jedoch, dass Sie nach dem Aktualisieren von Xcode die Xcode-Anwendung starten und die Apple-Lizenzbedingungen akzeptieren . Damit ist die Installation der Komponenten abgeschlossen. Danach können Sie Compass: sudo gem install kompass installieren

Gratz
quelle
4

Wenn Sie Ubuntu verwenden, sollten Sie versuchen, build-essential zu installieren

apt install build-essential

Ich hatte Probleme mit der Installation von Edelsteinen bei der Neuinstallation von Ubuntu, und diese Lösung funktionierte für mich.

Adi
quelle
Ich hatte das gleiche Problem. Einige weitere Leute sollten dies unterstützen.
Sortierer
3

Stellen Sie unter macOS 10.14 Mojave sicher, dass Sie bereits Befehlszeilentools über installiert haben, xcode-select --installund führen Sie den folgenden Befehl aus, um Standard-Header zu installieren.

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

Versuchen Sie nun Ihren Befehl erneut.

Vincent Sit
quelle
3

Sie müssen gcc, json_pure haben

Ich sammle einige Informationen aus mehreren Post

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

Hallo, wenn ** sudo gem update --system ** nicht funktioniert hast du einen fehler im update bekommen dann benutze

sudo gem update --system 2.7.8

gsm
quelle
Ich musste sudo yum install -y redhat-rpm-configwegen dieses Fehlers auch für Fedora 24 laufen, bevor ich den Kompass installierte:gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
Bryce Guinta
sudo gem update --systemgab mir Fehler ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem:: :(
Ade
2

Auf yosemite müssen Sie lediglich die Befehlszeilentools installieren. dann funktioniert es.

Auch wenn andere Edelsteine ​​gut installiert sind. Sie müssen xcode-select --install ausführen, damit der Gem-Installationskompass funktioniert.

Viel Glück.

A.Sanchez.SD
quelle
2

Wenn Sie es unter Mac OS X 10.9 versuchen xcode-select --install, wird die folgende Fehlermeldung angezeigt:

Die Software kann nicht installiert werden, da sie derzeit nicht auf dem Software Update-Server verfügbar ist.

Die Lösung besteht darin, die Befehlszeilentools (OS X 10.9) direkt von der Apple-Website herunterzuladen: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

Anschließend können Sie die letzte Version der Befehlszeilentools installieren.

Lepix
quelle
2

In Ubuntu 14.04 tritt beim Ausführen von apt-get install rubygems ein Fehler auf

E: Das Paket 'rubygems' hat keinen Installationskandidaten

Befehl folgen, um die Probleme zu lösen.

sudo apt-get install gcc ruby-devel rubygems-integration ruby-kompass

onebraveman
quelle
2

Versuchen Sie es brew install coreutils.

Ich habe dieses Problem beim Wiederaufbau eines alternden Sass / Kompass-Projekts festgestellt, das kürzlich von einem Kollegen auf Ruby 2.2.5 aktualisiert wurde. Das Projekt verwendet rvm und bundler. Das waren meine Befehle

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

Dies führte dazu, dass ich auf die bekannten ffiInstallationsfehler stieß, die in der StackOverflow-Umgebung gemeldet werden:

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

Die meisten Vorschläge zur Lösung dieses Problems sind die Installation von Xcode-Befehlszeilentools. Dies wurde jedoch bereits in meiner Umgebung installiert:

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

Andere Vorschläge sagten, gcc zu installieren ... also habe ich versucht:

$ brew install gcc46

Aber auch dies aufgrund eines Segmentierungsfehler gescheitert ... ¯\_(ツ)_/¯.

Also habe ich versucht, den Kompass von Hand zu installieren, um zu sehen, ob er den gleichen ffiFehler liefert:

$ gem install compass

Aber zu meiner Überraschung habe ich einen ganz anderen Fehler bekommen:

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

Also suchte ich nach diesem Problem und fand diesen alten Blog-Beitrag , in dem Coreutils installiert wurden:

$ brew install coreutils

Nach der Installation coreutilsmit Homebrew konnte Bundler Kompass und Abhängigkeiten erfolgreich beenden und installieren.

Das Ende.

James Wilson
quelle
2
  • sudo gem update --system
  • Sudo Gem installieren Kompass
Federico Bohn
quelle
2

wann

gem install overcommit

wird ausgeführt, auch dieser Fehler wurde im Terminal platziert.

Failed to build gem native extension

Bitte mach das gleiche

xcode-select --install

und es wird auch dieses Problem beheben

Anja Ishmukhametova
quelle
Ich verstehe xcode-select: error: command line tools are already installed, use "Software Update" to install updates. Dies behebt es nicht.
Ade
2

Für Mac OS:

Mein Fehler war, dass ich vergessen habe, die Option in XCode - Einstellungen - Speicherorte - Befehlszeilentools nach der neuen XCode-Installation auszuwählen (ich hatte 2 Versionen und später habe ich eine gelöscht). Vielleicht hilft es jemandem.

Geben Sie hier die Bildbeschreibung ein

Eridana
quelle
1

Versuchen Sie dies und versuchen Sie dann erneut, den Kompass zu installieren

sudo apt install ruby-full
Pokkhi
quelle
0

Ich hatte das gleiche Problem unter Linux Mint, konnte es jedoch beheben, indem ich Ruby deinstallierte und erneut installierte.

Ruby deinstallieren:

sudo apt-get remove ruby

Es wurden einige Rubinpakete gemeldet wie:

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.

Deinstallieren Sie die verbleibenden Pakete *

apt-get autoremove

Installieren Sie Ruby erneut

sudo apt-get install ruby2.2

Installieren Sie Compass

sudo gem install compass

Der letzte Befehl wurde mit Erfolg ausgeführt.

claudiu.f.marginean
quelle