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?



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

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

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.


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


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!


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.


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

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.


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

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.


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


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.


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.


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


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.


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.


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


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.



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


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


1

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

sudo apt install ruby-full

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.