Error al construir la extensión nativa de gemas (instalación de Compass)


275

Cuando intento instalar la última versión de la brújula ( https://rubygems.org/gems/compass/versions/1.0.0.alpha.17 ), aparece el siguiente error.

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

¿Que está pasando aqui? ¿Cómo instalo la última brújula sin error?


posible duplicado de la instalación
Nakilon

por favor asegúrese de tener make en su sistema.
Clasificador

Respuestas:


577

Intente esto, luego intente instalar la brújula nuevamente

apt-get install ruby-dev

33
Esto corrige el error en Ubuntu, pero parece que OP está usando OSX.
mhnagaoka

1
Arreglado para mí en Ubuntu 14.04 LTS
thomh

30
Trabajó en CentOS con "yum install ruby-devel", que es el equivalente. Gracias !
B2F

66
Es divertido encontrar una solución a mi problema de Ubuntu en una respuesta a una pregunta de OSx. Sin embargo, tienes mi voto positivo ya que tu respuesta solo resolvió mi problema. Tnx!
e-sushi

3
¿Alguna idea de cómo hacer que esto funcione en Windows? Instalé las herramientas de desarrollo de Ruby usando choco install ruby2.devkitpero todavía no funciona
jtate

124

Para instalar la brújula en Mac OS X 10.10 (Yosemite) tenía que realizar lo siguiente:

1. Configurar el entorno Ruby

  • Asegúrese de que Ruby esté instalado y actualizado: ruby -v
  • Actualizar gemas sudo gem update --system

2. Configurar el entorno MAC

Instale las herramientas de línea de comandos de Xcode, esta es la clave para instalar Compass.

xcode-select --install

Instalar Xcode Command Line Tools es la clave para que Compass funcione en OS X

3. Instale la brújula

sudo gem install compass

3
Para mí esto era exactamente la respuesta correcta, necesita las herramientas de línea de comandos Xcode
svnm

2
Gracias, funcionó para mí, tienes razón, las herramientas de línea de comandos Xcode son la clave.
sarcom

55
Esto funcionó para mí con una adición: debe iniciar XCODE para poder aceptar el acuerdo de licencia y dejar que termine la configuración. Puede valer la pena etiquetar en su respuesta.
Bruford

La aceptación de la actualización (términos de acuerdo) a través de la GUI también funcionó.
cassioscabral

En un MacBook Pro actualizado recientemente a Sierra 10.12.6, también tuve que ejecutar "sudo xcodebuild -license" para aceptar los términos y condiciones, antes de ejecutar sudo gem instalar brújula ....
jocherra

46

La mejor manera es sudo apt-get install ruby-compassinstalar la brújula.


1
Wow, a veces es tan fácil ^^ intenté instalar la brújula con gem, pero hubo algunas dependencias que gema no resolvió. ¡Con apt-get funcionó bien! Gracias
naitsirch


30

Luché con usted el mismo problema durante aproximadamente 3 horas. A partir de Compass 1.0.alpha19, el requisito es para la versión rvm 1.9.3.

Hay varias publicaciones no recopiladas, sin embargo, lo que funcionó para mí fue lo siguiente:

  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

Y eso lo hizo. ¡Espero que también funcione para ti!


Recientemente tuve el mismo problema pero con una versión más nueva. Lo que hice fue desinstalar la versión ruby ​​que instalé anteriormente con aptitude y luego la instalé nuevamente siguiendo las instrucciones en: rvm.io/rvm/install . Con la nueva versión ruby ​​/ rvm, la brújula se construyó correctamente.
adosaiguas

2
Gracias por esto, muy útil. Cambié el paso 3 a rvm install ruby-2.1.21.9.3 ya no se actualiza
Timelf123

24

Para resolver este problema, tenía que asegurarme de tener la versión más reciente de Ruby y las gemas gem update --system; entonces, tenía que asegurarse de que Xcode y las herramientas de línea de comandos se instalaron: xcode-select --install.


xcode-select --installfue hecho pero esto no me soluciona
Ade


10

Hola, fue un desafío hacerlo funcionar en Mac, así que de todos modos aquí hay una solución

  1. Instalar macports
  2. Instalar rvm
  3. Reiniciar Terminal
  4. Corre rvm requirementsluego corrervm install 2.1
  5. Y el último paso para correr gem install compass --pre

No estoy seguro, pero la versión ruby ​​en Mavericks no admite extensiones nativas, etc., así que si señala otra versión ruby ​​como yo hice "2.1", funciona bien.


Yo recomendaría no usar macports.
nomis

6

No estoy seguro de por qué ninguno de estos está marcado como la respuesta correcta, pero llegué aquí a través de una búsqueda en Google, por lo que transmitiré lo que sé ...

El método de @paul_g fue bastante cercano para mí, mis pasos en una Mac osx10.9 Retina:

  • Instalar macports
  • Instale rvm (estable con ruby ​​add --insecureflag para problemas relacionados con SSL) $\curl -sSL --insecure https://get.rvm.io | bash -s stable --ruby
  • Reinicie Terminal / Resource su perfil
  • Ejecutar rvm requirements --with-gcc=clangNo tendrá que actualizar Ruby porque descargó la última versión estable
  • Y el último paso para correr gem install compass --pre

5

Si está usando Ubuntu, debe intentar instalar build-essential

apt install build-essential

Tuve problemas con la instalación de gemas en una nueva instalación de ubuntu, y esta solución funcionó para mí.


Yo tuve el mismo problema. Algunas personas más deberían votar esto.
Clasificador

4

Es posible que deba instalar las herramientas de línea de comandos de Apple, que probablemente no estén instaladas en su sistema de manera predeterminada. Recibía el mismo error, pero antes de seguir cualquiera de las instrucciones aquí instalé las Herramientas de línea de comandos (debido a un problema no relacionado) y he aquí que la brújula se instaló sin problemas cuando lo intenté nuevamente. YMMV.


Esto resolvió el problema anterior para mí, por lo que diría que esta es una respuesta aceptable a la pregunta anterior.
Peter J Harrison

4

Para instalar Compass en Yosemite, debe configurar el entorno Ruby e instalar las herramientas de línea de comandos Xcode. Pero, lo más importante, después de actualizar Xcode, asegúrese de iniciar la aplicación Xcode y aceptar los términos de la licencia de Apple . Completará la instalación de los componentes. Después de eso, puedes instalar Compass: sudo gem install compass


3

Para macOS 10.14 Mojave, asegúrese de que ya haya instalado las herramientas de línea de comandos xcode-select --instally ejecute el siguiente comando para instalar encabezados estándar.

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

Ahora intente su comando nuevamente.


3

debes tener gcc, json_pure

Recopilo información de varias publicaciones

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

Hola, si ** la actualización de sudo gem --sistema ** no funciona, recibiste un error en la actualización y luego usa

actualización de sudo gem - sistema 2.7.8


También tuve que correr sudo yum install -y redhat-rpm-configpara Fedora 24 antes de instalar la brújula debido a este error:gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
Bryce Guinta

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

2

En yosemite, todo lo que debe hacer es instalar las herramientas de línea de comandos. Entonces funciona.

Incluso si otras gemas se instalan bien. Debe ejecutar xcode-select --install para que la brújula de instalación de gemas funcione.

Buena suerte.


2

En Mac OS X 10.9, si lo intentas xcode-select --install, obtendrás el siguiente error:

No se puede instalar el software porque actualmente no está disponible desde el servidor de Actualización de software.

La solución es descargar Command Line Tools (OS X 10.9) directamente desde el sitio web de Apple: https://developer.apple.com/downloads/index.action?name=for%20Xcode%20-

Luego podrá instalar la última versión de Command Line Tools.


2

En ubuntu 14.04, mientras ejecuta apt-get install rubygems , hay un error

E: El paquete 'rubygems' no tiene candidato de instalación

Siga el comando para resolver los problemas.

sudo apt-get install gcc ruby-devel rubygems-integración ruby-compass


2

Tratar brew install coreutils.

Me encontré con este problema al reconstruir un antiguo proyecto sass / compass que un colega actualizó recientemente a ruby ​​2.2.5. El proyecto usa rvm y bundler. Estas fueron mis órdenes

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

Esto me hizo encontrar los ffierrores de instalación famosos , que se informan alrededor del entorno StackOverflow:

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

La mayoría de las sugerencias para resolver este problema son instalar herramientas de línea de comandos Xcode. Sin embargo, esto ya estaba instalado en mi entorno:

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

Otras sugerencias decían instalar gcc ... así que intenté:

$ brew install gcc46

Pero esto también falló debido a un fallo de segmentación ... ¯\_(ツ)_/¯.

Entonces, intenté instalar la brújula a mano, solo para ver si daría el mismo ffierror:

$ gem install compass

Pero para mi sorpresa, recibí un error totalmente diferente:

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

Así que busqué ese problema y encontré esta antigua publicación de blog que decía que instalar coreutils:

$ brew install coreutils

Después de instalar coreutilscon Homebrew, el paquete pudo terminar e instalar la brújula y las dependencias con éxito.

El fin.



2

cuando

joya instalar sobrecompromiso

Se ejecuta también este error se han colocado en la terminal.

Failed to build gem native extension

por favor haz lo mismo

xcode-select --install

y también solucionará ese problema


Consigo xcode-select: error: command line tools are already installed, use "Software Update" to install updates. Esto no lo arregla.
Ade

2

Para Mac OS:

Mi error fue que olvidé seleccionar la opción en XCode - Preferencias - Ubicaciones - Herramientas de línea de comandos después de la nueva instalación de XCode (tuve 2 versiones y luego eliminé una). Quizás ayude a alguien.

ingrese la descripción de la imagen aquí


1

Intente esto, luego intente instalar la brújula nuevamente

sudo apt install ruby-full

0

Tuve el mismo problema en Linux Mint, pero pude solucionarlo desinstalando ruby ​​e instalándolo nuevamente.

Desinstalar ruby:

sudo apt-get remove ruby

Informó algunos paquetes de rubíes como:

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.

Desinstalar los paquetes restantes *

apt-get autoremove

Instala ruby ​​nuevamente

sudo apt-get install ruby2.2

Instalar brújula

sudo gem install compass

El último comando se ejecutó con éxito.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.