Als Mac Administrator*in ist die Beziehung zu den Entwickler*innen in Ihrem Unternehmen, die an macOS arbeiten, um Apps für Apple Plattformen zu entwickeln, oft eine Herausforderung. Sie können sehr enthusiastisch und sachkundig sein, was macOS angeht, aber sie sind auch sehr anspruchsvoll, was die Werkzeuge und die Konfiguration ihrer Macs angeht, oder besser gesagt, sie bestehen darauf, dass man ihnen aus dem Weg geht, um alles genau richtig einzurichten.
Das wichtigste Tool für Entwickler*innen unter macOS ist Xcode, aber die Bereitstellung von Xcode in einer verwalteten Umgebung stellt Mac Administrator*innen vor viele Herausforderungen.
Hinweis: Während ich dies schreibe, ist Xcode 14.3.1 die aktuelle Release-Version und Xcode 15 befindet sich in der Beta-Phase. Es gab einige Änderungen, die für die verwaltete Bereitstellung von Xcode in Xcode 14 relevant sind, und weitere in Xcode 15. Da sich Xcode 15 noch in der Beta-Phase befindet, kann es bis zur Veröffentlichung im September noch zu Änderungen im Verhalten kommen.
Installieren von Xcode
Die erste Herausforderung besteht darin, die Xcode App auf den Macs zu installieren. Xcode ist vor allem wegen seiner schieren Größe eine besondere Herausforderung. Xcode 14 wird ~23 GB groß und Xcode 15 ~11,7 GB. (Warum Xcode 15 viel kleiner ist, werden wir später betrachten)
Mac App Store
Apple bietet Xcode im Mac App Store an. Für Mac Administrator*innen bedeutet das, dass wir in der Lage sein sollten, Xcode über den Volumeneinkauf mit Apps und Büchern bereitzustellen. Sie können im Apple Business Manager oder Apple School Manager eine Reihe kostenloser Lizenzen für Xcode „kaufen” und die App-Bereitstellungsfunktion Ihres Verwaltungssystems nutzen, um diese Apps zu veröffentlichen. Es gibt einige Nachteile bei der Bereitstellung von Apps auf diese Weise, die durch die ungewöhnliche Art und Größe von Xcode noch verstärkt werden.
Beim aktuellen (macOS Ventura und früher) MDM-Protokoll gibt es keine Rückmeldung vom Client an den Server, nachdem der Server den Befehl zur Installation einer App gesendet hat. Es gibt auch keine Möglichkeit für den lokalen Benutzer/die lokale Benutzerin, den Status der Installation zu sehen. Der Benutzer/die Benutzerin wird wahrscheinlich nicht einmal wissen, dass ein umfangreicher Download und eine Installation im Hintergrund ablaufen! Wenn die Installation auf der Client-Seite aus irgendeinem Grund fehlschlägt, werden weder der Benutzer/die Benutzerin noch der MDM-Server benachrichtigt, und es gibt viele Gründe, warum der Download und die Installation fehlschlagen können.
Während des Downloads oder der Installation kann es vorkommen, dass ein Benutzer/eine Benutzerin seinen/ihren Laptop schließt oder in den Ruhezustand versetzt oder das Gerät aus dem Netzwerkbereich entfernt, was zu Fehlern führt. Das kann bei jeder Installation passieren, aber angesichts der Größe von Xcode ist es viel wahrscheinlicher, zumal es keine Möglichkeit gibt, den Benutzer/die Benutzerin über den Status zu informieren.
Ein Vorteil der App Store Installation ist, dass Sie von einem Mac mit aktiviertem Content Caching in Ihrem Netzwerk profitieren können. Dies sollte den Download erheblich beschleunigen.
Apple hat Änderungen am MDM-Protokoll in iOS 17 und macOS Sonoma angekündigt, die den Arbeitsablauf bei der verwalteten Bereitstellung von Mac App Store-Apps erheblich verbessern sollten. Es wird jedoch eine Weile dauern, bis MDM-Entwickler*innen die neuen Funktionen annehmen und implementieren und bis Unternehmen, Benutzer*innen und Entwickler*innen die neuen Versionen von Xcode und den Betriebssystemen annehmen. Es könnte einige Zeit dauern, bis wir alle von diesen neuen Funktionen profitieren können.
Einrichtung der Richtlinie
Im Allgemeinen funktionieren Mac App Store Installationen zuverlässiger, wenn sie vom Benutzer/von der Benutzerin über den Self Service initiiert werden. Ein großer Teil davon ist, dass der Benutzer/die Benutzerin weiß, dass eine Installation stattfinden wird und dass sie einige Zeit dauern kann. Aber (zumindest bis zu Ventura) sind Installationen über Policen zuverlässiger als beim Mengenkauf über Apps und Bücher.
Ein weiteres Merkmal der App-Bereitstellung über Apps and Books ist, dass Sie immer die neueste, nicht-beta Version erhalten. Nach der Installation sollte Xcode auch automatisch Updates herunterladen und anwenden, zumindest solange Xcode nicht geöffnet ist. Sie können die Bereitstellung älterer oder Beta-Versionen nicht verwalten. Je nach Organisation kann dies ein Vorteil oder ein großer Nachteil sein.
Xcode neu paketieren
Wenn Sie Xcode mit einer Jamf Richtlinie installieren möchten, müssen Sie ein Installationspaket oder pkg mit Xcode darin bereitstellen.
Apple bietet in seinem Entwicklerportal Downloads für Xcode an. Diese Downloadseite listet (neben vielen anderen Dingen) ältere Versionen und Beta-Versionen von Xcode auf. Sie benötigen einen Apple Developer Account, um auf diese Seite zuzugreifen, aber die kostenlose Version ist ausreichend. (Ich mag auch die Seite Xcode Releases, die einen nützlichen Überblick bietet)
Xcode wird als xip-Archiv heruntergeladen. Sie können auf das Archiv im Finder doppelklicken, um es zu erweitern. Die Erweiterung wird lange dauern, weil es sich um ein großes Archiv mit mehr als 100.000 Dateien handelt und weil die Signatur und die Integrität des Archivs vor der Erweiterung überprüft werden.
Sobald Sie Xcode entpackt haben, können Sie es neu verpacken. Sie brauchen kein ausgefallenes Verpackungswerkzeug. Sie können einfach productbuild verwenden:
% productbuild --component /path/to/Xcode.app /Applications Xcode-14.3.1.pkg
Der erste Pfad nach dem --component Flag verweist auf den Speicherort des Xcode-Anwendungsbündels, und der zweite ist der Dateipfad, unter dem es auf dem Zielsystem installiert werden soll. Das letzte Argument ist der Dateiname des zu erstellenden pkg. Ich empfehle dringend, die Version in die pkg-Dateinamen aufzunehmen. Xcode muss sich nicht in /Applications befinden und muss für diesen Befehl zum Neupacken nicht gestartet oder konfiguriert werden.
Dies wird viel Zeit in Anspruch nehmen.
Hinweis 1: Wenn Ihnen die Downloadzeit und die Dateigröße wichtig sind, können Sie ~25 % sparen, indem Sie die Option '--componentcompression auto' hinzufügen. Diese Option benötigt mehr Zeit für die Komprimierung (und mehr Zeit für die Dekomprimierung auf dem Zielclient), hat aber den Vorteil einer kleineren Dateigröße. Weitere Einzelheiten finden Sie in diesem Beitrag.
Hinweis 2: Wenn Sie mehrere verschiedene Versionen von Xcode auf demselben System installieren möchten (z. B. die Beta-Version und die aktuelle Version), müssen Sie das Flag „relocatable” im Installationspaket deaktivieren. Eine Anleitung dazu finden Sie unter in diesem Beitrag, aber am einfachsten geht es mit meinem Tool quickpkg.
Erste Startkonfiguration für Nicht-Admin-Benutzer*innen
Die Arbeit eines Mac Administrators/einer Mac Administratorin ist mit der Bereitstellung von Xcode App nicht erledigt. Außerdem müssen wir Xcode so konfigurieren, dass es von den Benutzer*innen verwendet werden kann. Wenn Sie eine neue Version von Xcode zum ersten Mal auf einem neuen System starten, werden Sie aufgefordert, zusätzliche Komponenten zu installieren, für die Administratorrechte erforderlich sind.
Wenn die Benutzer*innen in Ihrer Einrichtung über Administratorrechte verfügen, sollte dies keine große Herausforderung darstellen. Sie können diese Schritte selbst genehmigen. Bei einigen Einsätzen werden jedoch Standardbenutzer*innen verwendet, die diese Schritte nicht autorisieren können.
Es gibt gute Argumente dafür, dass Standardbenutzer*innen ein Relikt der Vergangenheit sind und für viele Bereitstellungen keine gute Praxis mehr darstellen, vor allem weil bei der Architektur und der eingebauten Sicherheit von macOS die Sicherheitsvorteile von Standardbenutzer*innen minimal sind. (Siehe Graham Gilberts Beitrag und MacSysAdmin Präsentation.)
Allerdings haben einige Einrichtungen, wie Schulen und andere Bildungseinrichtungen, diese Möglichkeit nicht. Manche Mac Administrator*innen bevorzugen vielleicht eine andere Lösung, müssen aber ihre Argumente mit der Geschäftsführung und den Sicherheitsinteressen in ihrem Unternehmen sorgfältig abwägen. Was auch immer der Grund sein mag, viele von uns haben es mit Standardnutzer*innen zu tun.
Außerdem bietet die Automatisierung eines Teils der Konfiguration im Hintergrund insgesamt ein angenehmeres Erlebnis, sodass Sie dies vielleicht tun möchten, selbst wenn die Benutzer/die Benutzerin über Administratorrechte verfügen.
Diese Schritte, zu denen Xcode beim ersten Start auffordert, erfordern Administratorrechte:
- Wählen Sie die neue Version aus, wenn mehrere Versionen von Xcode installiert sind
- Akzeptieren Sie die Xcode und Apple SDKs Vereinbarung
- Zusätzliche Komponenten installieren
- Aktivieren Sie die Sicherheit von Entwicklertools für Nicht-Admin-Benutzer*innen
Für all diese Schritte gibt es Befehlszeilentools, sodass wir sie mit einem Skript automatisieren können. Diese Befehle müssen als root ausgeführt werden, z. B. über eine Post-Install-Skript-Richtlinie von Jamf Pro.
Zunächst stellen wir sicher, dass die Kommandozeilen-Tools das neueste Xcode verwenden, das wir gerade mit dem Befehl xcode-select installiert haben. Dann verwenden wir xcodebuild, um die Lizenz zu akzeptieren und den Arbeitsablauf für den ersten Start einzuleiten. Für diese beiden Schritte sind Administratorrechte erforderlich.
Im nächsten Schritt verschachteln wir die Gruppe everyone in die Gruppe _developer. Dies ist eine Vorbereitung für den nächsten Befehl, mit dem wir DevToolSecurity aktivieren. Dadurch können Administrator*innen oder Mitglieder der Gruppe _developer bestimmte Debugger oder Leistungsanalysetools ausführen, ohne sich mit ihrem Passwort autorisieren zu müssen.
Durch die Verschachtelung der Gruppe „everyone” in die Gruppe „_developer” haben wir jeden Benutzer/jede Benutzerin auf dem System, auch Benutzer*innen, die nach der Ausführung dieses Skripts erstelltwerden, im Voraus der Gruppe hinzugefügt, die die Berechtigungen gewährt. Wenn Sie eine restriktivere Vorgehensweise bevorzugen, können Sie die dseditgroup so ändern, dass nur der aktuell angemeldete Benutzer/die aktuell angemeldete Benutzerin hinzugefügt wird.
Die Prozesse, die DevToolsSecurity ermöglicht, scheinen vor allem für Debugging- und Leistungsworkflows mit Befehlszeilentools und Skripten relevant zu sein. Wenn Sie besonders sicherheitsbewusst sind, können Sie testen, ob Ihre Entwickler*innen ihre Arbeitsabläufe auch ohne diese Funktion nutzen können.
Verwalten von Plattform-SDKs mit Xcode 14 und 15
Es gibt noch eine weitere Sache, die Sie vorinstallieren sollten. In den letzten Jahren hat Apple die Größe der Xcode Downloads stark reduziert:
- Xcode 11: 7,5 GB
- Xcode 12: 11 GB
- Xcode 13: 10 GB
- Xcode 14: 7 GB*
- Xcode 15: 3,1 GB**
* enthält keine watchOS und tvOS SDKs
** enthält keine iOS, watchOS, tvOS und visionOS SDKs
Die meisten dieser Einsparungen kommen daher, dass der Xcode Download nicht mehr alle Plattform-SDKs enthält. (Xcode 14 wird mit macOS und iOS ausgeliefert; Xcode 15 enthält nur macOS.) Da die Plattform-SDKs erforderlich sind, um Apps auf den verschiedenen Plattformen zu erstellen und zu simulieren, werden die Benutzer*innen beim ersten Start aufgefordert, die Plattformen herunterzuladen und zu installieren.
Das bedeutet, dass die großen Downloads lediglich aufgeschoben, nicht aber vermieden werden. Insgesamt summieren sich Xcode 15 und alle Plattformen (iOS, watchOS und tvOS) auf mehr als 17 GB, wo bei visionOS noch einmal fast 7 GB hinzukommt. Es gibt also keine wirklichen Einsparungen beim Herunterladen in den neuen Xcode Versionen, ganz im Gegenteil, aber die stark reduzierte Größe der Xcode Erstinstallation sollte Installationen aus dem Mac App Store oder über Apps und Bücher zuverlässiger machen.
Die gute Nachricht für die verwaltete Bereitstellung ist, dass der Xcode Benutzer/die Xcode Benutzerin keine Admin-Rechte haben muss, um zusätzliche SDKs herunterzuladen und zu installieren. Sie können bei der ersten Aufforderung auswählen, was heruntergeladen werden soll, oder in den Xcode Einstellungen auf die Registerkarte „Plattformen” gehen, um zu einem späteren Zeitpunkt weitere Plattformen zu erhalten.
Aber vielleicht wollen Sie dem Endbenutzer/der Endbenutzerin das Leben trotzdem etwas leichter machen. Wenn Sie Xcode in einer Unterrichtsumgebung einsetzen, können Sie nicht die Zeit aller Teilnehmer*innen mit dem erforderlichen Download verschwenden. Oder Sie setzen Xcode auf einem Mac für automatisierte Build-Prozesse ein, an denen kein Benutzer/keine Benutzerin beteiligt ist. In diesem Fall möchten Sie die Bereitstellung der erforderlichen Plattform-SDK(s) automatisieren.
Überraschenderweise hat Apple eine Dokumentation dazu,die uns wiederum auf den Befehl xcodebuild verweist.
Es gibt drei Optionen in xcodebuild, die für diesen Zweck relevant sind: -downloadAllPlatforms wird, nun ja, alle verfügbaren Plattformen herunterladen. Das ist praktisch, aber wir sprechen hier von mehr als 20 GB für alle Plattformen für Xcode 15. -downloadAllPreviouslySelectedPlatforms sollte nach einem Xcode Update nützlich sein.
Schließlich gibt es die Option -downloadPlatform, die die gewünschte Plattform herunterlädt. Die Namen für die verschiedenen Plattformen fehlen in der Dokumentation und in der Befehlshilfe, sind aber meist leicht zu erraten: iOS, watchOS, tvOS und xrOS (für das visionOS SDK; das könnte sich in der Betaphase noch ändern?).
Wenn Sie den Befehl erneut ausführen, wenn eine Plattform bereits installiert ist, wird er dies bemerken und sie nicht erneut herunterladen, sodass wir die gewünschten Plattformen einfach an das Ende unseres Konfigurationsskripts anhängen können:
Xcode 14 wird mit dem iOS SDK geliefert, aber xcodebuild erkennt das vorhandene SDK und lädt es nicht erneut herunter. Bei meinen Tests wurde der Download über einen lokalen Caching-Server abgewickelt, was die Sache erheblich beschleunigte.
Mit Xcode 15 sah ich eine benutzerorientierte Fortschrittsanzeige, während der Download überprüft wurde. Dies könnte für die Benutzer*innen verwirrend sein, wenn dies geschieht, ohne dass sie den Prozess initiiert haben, sollte aber kein Problem darstellen, wenn dies Teil Ihres anfänglichen Verteilungsworkflows ist.
Schlussfolgerung
Ein Skript mit allen Schritten, das Sie in Ihrer Richtlinie verwenden können, finden Sie auf GitHub.
Xcode ist für viele unserer Nutzer*innen eine wichtige App. Dies stellt einige besondere Herausforderungen für verwaltete Implementierungen dar. Die hier vorgestellten Tools und Skripte sollen Ihnen dabei helfen, ein großartiges Erlebnis für Sie und Ihre Nutzer*innen zu schaffen.
Der hier gezeigte Ansatz hat sich für mich bewährt, ist aber wahrscheinlich nicht der einzige oder sogar der beste für bestimmte Umgebungen.
Abonnieren Sie den Jamf Blog
Wir sorgen dafür, dass Apple Updates sowie Jamf Neuigkeiten direkt bei Ihnen im Postfach landen.
Um mehr darüber zu erfahren, wie wir Ihre Informationen sammeln, verwenden, offenlegen, übertragen und speichern, werfen Sie bitte einen Blick auf unsere Datenschutzbestimmungen.