Errores al instalar cocoapods con gema

9

Estoy usando macOS Mojave y cuando intento instalar cocoapods usando gem obtengo el siguiente error.

Construyendo extensiones nativas. Esto podría tomar un tiempo ... ERROR: Error al instalar cocoapods: ERROR: Error al construir la extensión nativa de gemas.

current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20200302-707-1iveybq.rb extconf.rb mkmf.rb no puede encontrar archivos de encabezado para ruby ​​en / System / Library /Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h

extconf falló, código de salida 1

Los archivos de gemas permanecerán instalados en /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2 para su inspección. Resultados registrados en /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out

Este error aparece cuando ejecuto los siguientes comandos.

sudo gem install cocoapods

sudo gem install -n /usr/local/bin cocoapods

Ya instalé las herramientas de línea de comandos de xcode y recibo el siguiente mensaje cuando ejecuto xcode-select --install

xcode-select: error: las herramientas de línea de comandos ya están instaladas, use "Actualización de software" para instalar las actualizaciones

También acepté los acuerdos de licencia de xcode con el comando sudo xcodebuild -license

El inicio de sesión de error /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.outda lo siguiente

directorio actual: /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteco $ mkmf.rb no puede encontrar archivos de encabezado para ruby ​​en /System/Library/Frameworks/Ruby.fra$

extconf falló, código de salida 1

¿Qué hago para solucionar este problema?

Muljayan
fuente
¿Tienes instalado Ruby? Probar ruby --versiondesde la línea de comando
Robert Crabtree
Hola, sí, entiendo esto. ruby 2.3.7p456 (2018-03-28 revisión 63024) [universal.x86_64-darwin18]
Muljayan
¿Cuáles son los contenidos del archivo de registro? /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out
Robert Crabtree
Incluí el
Te sugiero que le eches un vistazo AQUÍ
Robert Crabtree

Respuestas:

11

La respuesta a esto se puede encontrar aquí , aunque no está relacionada con esta pregunta. A continuación se muestra un fragmento de la respuesta que funciona mejor.

Para Xcode 11 en macOS 10.14 , esto puede suceder incluso después de instalar Xcode e instalar herramientas de línea de comandos y aceptar la licencia con

sudo xcode-select --install
sudo xcodebuild -license accept

El problema es que Xcode 11 incluye el SDK de macOS 10.15 que incluye encabezados para ruby2.6, pero no para ruby2.3 de macOS 10.14. Puede verificar que este sea su problema ejecutando

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

que en macOS 10.14 con Xcode 11 imprime la ruta inexistente

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

Sin embargo, Xcode 11 instala un SDK de macOS 10.14 dentro /Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk. No es necesario contaminar los directorios del sistema instalando los archivos de encabezado antiguos como se sugiere en otras respuestas. En cambio, al seleccionar ese SDK, se encontrarán los encabezados ruby2.3 apropiados:

sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

Esto ahora debería imprimirse correctamente

/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

Del mismo modo, gem installdebería funcionar mientras ese SDK está seleccionado.

Para volver a usar el SDK actual de Xcode 11, use

sudo xcode-select --switch /Applications/Xcode.app
Anshul Kataria
fuente
6

sudo xcode-select --switch / Library / Developer / CommandLineTools

ruby -rrbconfig -e 'pone RbConfig :: CONFIG ["rubyhdrdir"]'

Hiền Nguyễn
fuente
Esto funcionó para mí. Gracias
dazzieta
1
  1. Excute: ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'para descubrir su configuración de ruby.
  2. Si la salida es una ruta MacOSX10.15 inexistente. Me gusta: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0 debe corregir la configuración haciendo el siguiente paso.
  3. Ejecutar: sudo xcode-select --switch /Library/Developer/CommandLineTools
  4. Puede ejecutar: ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'nuevamente para ver si la ruta ha cambiado.
  5. La salida es /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

¡Entonces puedes ejecutar gem installpara instalar cocoapods!

Nico Pan
fuente
Trabajó para mí :)
studentaccount4