Erros ao instalar cocoapods com gem

9

Estou usando o macOS Mojave e quando tento instalar os cocoapods usando o gem, estou recebendo o seguinte erro.

Construindo extensões nativas. Isso pode demorar um pouco ... ERRO: Erro ao instalar cocoapods: ERRO: Falha ao criar a extensão nativa gem.

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 não pode encontrar arquivos de cabeçalho para ruby ​​em / System / Library /Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h

extconf falhou, código de saída 1

Os arquivos gem permanecerão instalados em /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2 para inspeção. Resultados registrados em /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out

Este erro ocorre quando eu executo os seguintes comandos.

sudo gem install cocoapods

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

Já instalei as ferramentas de linha de comando xcode e recebo a seguinte mensagem quando executo xcode-select --install

xcode-select: error: as ferramentas de linha de comando já estão instaladas, use "Atualização de software" para instalar as atualizações

Também concordei em xcode os contratos de licença com o comando sudo xcodebuild -license

O log de erros /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.outfornece o seguinte

diretório atual: /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 não pode encontrar arquivos de cabeçalho para ruby ​​em /System/Library/Frameworks/Ruby.fra$

extconf falhou, código de saída 1

O que faço para corrigir esse problema?

Muljayan
fonte
Você tem o ruby ​​instalado? Tente ruby --versionna linha de comando
Robert Crabtree
Oi sim, eu entendo isso. ruby 2.3.7p456 (28-03-2018 revisão 63024) [universal.x86_64-darwin18]
Muljayan
Qual é o conteúdo do arquivo de log? /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out
Robert Crabtree
Eu incluí o log de erros
Muljayan
Eu sugiro que você dê uma olhada nisso AQUI
Robert Crabtree

Respostas:

11

A resposta para isso pode ser encontrada aqui aqui, embora não esteja relacionada a esta pergunta. Abaixo está um trecho da resposta que funciona melhor.

Para o Xcode 11 no macOS 10.14 , isso pode acontecer mesmo após a instalação do Xcode e da instalação de ferramentas de linha de comando e da aceitação da licença com

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

O problema é que o Xcode 11 envia o SDK do macOS 10.15, que inclui cabeçalhos para o ruby2.6, mas não para o ruby2.3 do macOS 10.14. Você pode verificar se esse é o seu problema executando

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

que no macOS 10.14 com Xcode 11 imprime o caminho 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

No entanto, o Xcode 11 instala um macOS 10.14 SDK dentro /Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk. Não é necessário poluir os diretórios do sistema instalando os arquivos de cabeçalho antigos, conforme sugerido em outras respostas. Em vez disso, selecionando esse SDK, os cabeçalhos ruby2.3 apropriados serão encontrados:

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

Agora, isso deve ser impresso corretamente

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

Da mesma forma, gem installdeve funcionar enquanto esse SDK estiver selecionado.

Para voltar a usar o Xcode 11 SDK atual, use

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

sudo xcode-select --switch / Biblioteca / Desenvolvedor / CommandLineTools

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

Hiền Nguyễn
fonte
Isso funcionou para mim. Obrigado
dazzieta 7/04
1
  1. Excute: ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'para descobrir sua configuração de ruby.
  2. Se a saída for um caminho inexistente para o MacOSX10.15. Como: /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 você deve corrigir a configuração executando o próximo passo.
  3. Excute: sudo xcode-select --switch /Library/Developer/CommandLineTools
  4. Você pode executar: ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'novamente para ver se o caminho mudou.
  5. A saída é /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

Então você pode solicitar gem installa instalação de cocoapods!

Nico Pan
fonte
Trabalhou para mim :)
studentaccount4