Docker voor Mac – mkmf.rb kan geen header-bestanden voor ruby ​​vinden

Ik heb XCode op mijn Mac bijgewerkt en sindsdien krijg ik bij het starten van Docker met docker-sync-stack startdeze foutmelding:

mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/include/ruby.h

Ik heb geprobeerd ruby ​​te installeren met: brew install rbenv ruby-buildmaar dit verandert niets.

Weet iemand hoe ik dit kan oplossen?

Bedankt!


Antwoord 1, autoriteit 100%

Voor Xcode 11 op macOS 10.14kan dit zelfs gebeuren na het installeren van Xcode en het installeren van opdrachtregelprogramma’s en het accepteren van de licentie met

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

Het probleem is dat Xcode 11 de macOS 10.15 SDK verzendt die headers voor ruby2.6 bevat, maar niet voor ruby2.3 van macOS 10.14. U kunt controleren of dit uw probleem is door het uitvoeren van

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

die op macOS 10.14 met Xcode 11 het niet-bestaandepad afdrukt

/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

Xcode 11 installeert echter een macOS 10.14 SDK binnen /Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk. Het is niet nodig om de systeemmappen te vervuilen door de oude header-bestanden te installeren, zoals in andere antwoorden wordt gesuggereerd. In plaats daarvan, door die SDK te selecteren, worden de juiste ruby2.3-headers gevonden:

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

Dit zou nu correct moeten worden afgedrukt

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

Evenzo zou gem installmoeten werken terwijl die SDK is geselecteerd.

Om terug te schakelen naar het gebruik van de huidige Xcode 11 SDK, gebruik

sudo xcode-select --switch /Applications/Xcode.app

Antwoord 2, autoriteit 73%

Geen van de andere oplossingen werkte voor mij, dit is wat ik heb uitgevoerd om het probleem op Mac OS 10.14.x op te lossen:

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

Antwoord 3, autoriteit 19%

Bij het upgraden van XCode moet je de Command-Line Tools installeren en daarnaast de algemene voorwaarden accepteren:

sudo xcode-select --install

Dan:

sudo xcodebuild -license

Antwoord 4, autoriteit 10%

Vanaf Xcode 11 lijkt het erop dat de ruby-ontwikkelingsheaders niet langer zijn opgenomen, dus je zult ze handmatig moeten installeren buiten Xcode Command Line Tools.

Bijvoorbeeld voor mij met rbenv deed ik dat

rbenv install 2.6.4
rbenv global 2.6.4
eval "$(rbenv init -)"

Vervolgens de bundelinstallatie uitgevoerd en alles werkte zoals verwacht.


Antwoord 5, autoriteit 9%

Voor Xcode 11 heb ik dit opgelost door ook het pakket /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgte installeren.


Antwoord 6, autoriteit 9%

Opdrachtoplossing voor één regel:

Op OSX Mojave heb ik het volgende commando uitgevoerd:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

en het probleem is verholpen.


Antwoord 7, autoriteit 4%

Ik had hetzelfde probleem tijdens het installeren van fastlane. Het antwoord van de tadman is correct, maar de opdrachtregels werken niet voor mij met Xcode 10.2.1 (ik weet het niet zeker met andere versies). U moet Xcode openen, vervolgens Voorkeuren openen, Locaties selecteren en Command Line Tools kiezen. In mijn geval is het veld Command Line Tools leeg.


Antwoord 8, autoriteit 4%

Zoals @bdorfmanin zijn commentaar zei, zijn de Ruby-headers niet langer opgenomen vanaf de build van Xcode 11, maar ze lijken om te proberen hier zo snel mogelijk een nieuwe build voor te maken (?): https://discuss.circleci.com/t/xcode-11-gm-seed-2-released/32505/12.

Wat voor mij werkte, was om rbenvte gebruiken zoals @bdorfman zei:

rbenv install 2.6.4
rbenv global 2.6.4
eval "$(rbenv init -)"

Maar met de extra stap van het toevoegen van docker-syncaan je nieuwe ruby-versie. Sinds nadat je de ruby-versie hebt gewijzigd (bijvoorbeeld)

$ ruby -v
ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]

En dan een lijst met edelstenen:

$ gem list
bigdecimal (default: 1.4.1)
bundler (default: 1.17.2)
cmath (default: 1.0.0)
csv (default: 3.0.9)
date (default: 2.0.0)
dbm (default: 1.0.0)
did_you_mean (1.3.0)
e2mmap (default: 0.1.0)
etc (default: 1.0.1)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.1.0)
forwardable (default: 1.2.0)
io-console (default: 0.4.7)
ipaddr (default: 1.2.2)
irb (default: 1.0.0)
json (default: 2.1.0)
logger (default: 1.3.0)
matrix (default: 0.1.0)
minitest (5.11.3)
mutex_m (default: 0.1.0)
net-telnet (0.2.0)
openssl (default: 2.1.2)
ostruct (default: 0.1.0)
power_assert (1.1.3)
prime (default: 0.1.0)
psych (default: 3.1.0)
rake (12.3.2)
rdoc (default: 6.1.2)
rexml (default: 3.1.9)
rss (default: 0.2.7)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
shell (default: 0.7)
stringio (default: 0.0.2)
strscan (default: 1.0.0)
sync (default: 0.5.0)
test-unit (3.2.9)
thwait (default: 0.1.0)
tracer (default: 0.1.0)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)

(bevat geen docker-sync)

Als u de gem-installatie voor docker-sync uitvoert, gebruikt u de docker-sync voor uw door rbenv beheerde ruby.

$ gem install docker-sync


Antwoord 9, autoriteit 2%

Als u meer inzicht wilt krijgen in het probleem:

Mac OS X 10.14 is gestopt met het plaatsen van de include-bibliotheken in hun
gebruikelijke locatie, /usr/include, ze alleen binnen de XCode houden
directory.

Om te bevestigen dat dit het probleem is, voert u gewoon ls /usr/includeuit. Als
het resultaat komt leeg uit, het is echt dit probleem.

Apple levert een “verouderd installatieprogramma” zodat u de
headers op de “oude locatie”.
Voer dit uit om het probleem op te lossen:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
-target /

https://silvae86.github.io/sysadmin/mac/osx/mojave/beta/libxml2/2018/07/05/fixing-missing-headers-for-homebrew- in-mac-osx-mojave/


Antwoord 10

Door open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgin de terminal uit te voeren, wordt de pakketinstallatiewizard geopend. Na de juiste installatie kon ik doorgaan.

MacOS 10.4.4

Other episodes