97 votes

macOS Mojave : fichier 'ruby/config.h' introuvable

Lorsque j'essaie de compiler vim(8.1.0509) avec le support ruby(--enable-rubyinterp) sur macOS Mojave(10.14.1) j'obtiens une erreur :

In file included from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10: fatal error:
      'ruby/config.h' file not found
#include "ruby/config.h"

J'ai installé Xcode 10.1.

xcode-select -p
/Applications/Xcode.app/Contents/Developer

Merci

126voto

Jongwook Choi Points 2643

Catalina, Big Sur, etc. (A partir de 2020 et 2021)

Les versions récentes de macOS et de Xcode (par exemple Catalina 10.15 et Xcode 12.2) ont définitivement cassé cette fonctionnalité. Réinstaller Xcode et xcode-select --install ne m'a pas du tout aidé (les solutions déjà postées semblent être dépassées). Je ne voulais pas utiliser rvm car cela peut causer des problèmes ennuyeux.

J'ai fait une solution de contournement en créant manuellement un lien symbolique :

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby
ln -sf ../../../../Headers/ruby/config.h

ruby/config.h peut être trouvé à l'adresse suivante /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/Headers/ruby/config.h .

Vous devez changer la version du SDK (par exemple 11.1 dans l'exemple ci-dessus) en fonction de votre installation xcode actuelle.

Il est également très probable que l'on rencontre une autre erreur où .../universal-darwin19/ruby/config.h ne peut être trouvé ( La gemme Commonmarker ne peut être installée (nécessaire pour jekyll) macos ). Il peut être fixé rapidement comme suit :

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0
ln -sf universal-darwin20 universal-darwin19

120voto

ReDetection Points 172

macOS Catalina

Le problème est réapparu dans Catalina et je n'ai pas pu repérer ce paquet dans le SDK pour développeurs. En attendant de trouver une meilleure solution, j'ai pu contourner le problème avec rubyenv : https://github.com/orta/cocoapods-keys/issues/198#issuecomment-510909030

brew install rbenv ruby-build
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile 
rbenv install 2.6.3
rbenv global 2.6.3

Mojave et plus anciens

Cette réponse m'a aidé : https://stackoverflow.com/a/53194299/2105993

xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

65voto

Eden Points 598

Sur macOS Catalina
Après avoir installé et désinstallé les outils de développement plusieurs fois, c'est la seule chose qui a fonctionné pour moi :

Commencez par installer le gestionnaire de version de Ruby rvm :

curl -L https://get.rvm.io | bash -s stable

Puis installez la dernière version de ruby :

rvm install ruby-2.7.2

Enfin, essayez à nouveau d'installer les coco-pods :

sudo gem install cocoapods

(de cette réponse : https://stackoverflow.com/a/65033418/3605761 )

edit : peut être nécessaire rvm reinstall ruby-2.7.2 au lieu de rvm install ruby-2.7.2 à l'étape 2.

19voto

atamanroman Points 4566

J'ai eu exactement le même problème. Impossible d'installer des gemmes avec des extensions natives. Exécution de

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

a échoué, car le fichier n'existait pas. On dirait que Mojave peut casser les outils de la ligne de commande.

J'ai résolu le problème en supprimant les outils de ligne de commande Xcode, en les réinstallant, puis en installant les en-têtes manquants :

$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

18voto

Suraj Poddar Points 157

Si vous rencontrez ce problème dans Mac Big Sur, réinstallez CommandLineTools peut résoudre ce problème.

sudo rm -rf /Library/Developer/CommandLineTools

xcode-select --install

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X