Ik heb XCode op mijn Mac bijgewerkt en sindsdien krijg ik bij het starten van Docker met docker-sync-stack start
deze 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-build
maar 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 install
moeten 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.pkg
te 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 rbenv
te 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-sync
aan 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/include
uit. 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 /
Antwoord 10
Door open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
in de terminal uit te voeren, wordt de pakketinstallatiewizard geopend. Na de juiste installatie kon ik doorgaan.
MacOS 10.4.4