Jamf Blog
MacBook
February 3, 2022 Von Armin Briegel

Python 2 ist tot – Lang lebe Python!

Apple hat gewarnt, dass die Python 2 Binärdatei entfernt wird. Das ist jetzt eine Tatsache. Lesen Sie, was Sie als Nächstes tun können.

Ist Python auf dem Mac installiert?

Ja. Apple hat gewarnt, dass die vorinstallierte Python 2-Binärdatei, die seit Mac OS X Jaguar 10.2 Teil des Mac Systems ist, in einer „zukünftigen Version von macOS“ entfernt wird, seit die ursprünglichen Beta-Versionshinweise für macOS Catalina veröffentlicht wurden. Darüber hinaus kündigte Apple an, dass Scripting Runtimes wie jene für Python, Ruby und Perl nicht mehr in zukünftigen Versionen von macOS enthalten wären. Die Entwickler wurden angewiesen, alle Runtimes, die ihre Lösungen benötigten, in ihre Apps einzubeziehen.

Warum war diese Änderung erforderlich?

Seit Januar 2020 hat die Organisation, die die Entwicklung und Versionen von Python überwacht, Python ab Version 2.7 offiziell als abgelaufen erklärt und empfiehlt das neue, sichere Python 3 und spätere Versionen. Dies bedeutet, dass Aktualisierungen, Fehlerbehebungen und Sicherheitsupdates ab nun nur Python 3.x unterstützen, da Python 2 das Ende der Unterstützung erreicht hat.

Während Python 3 der offizielle Nachfolger ist, stellt die Aktualisierung von Python Code von Version 2.x auf 3.x keine einfache Aufgabe dar. Man kann die Runtime nicht einfach durch eine neuere Version ersetzen und erwarten, dass alles funktioniert. Das gilt sogar für die verschiedenen Minor-Versionen von Python 3, die derzeit parallel unterstützt werden, da Python 3.7-3.10 aktuell unterstützt wird (zum Zeitpunkt des vorliegenden Texts), während Python 3.11 in Beta ist.

Neben der schriftlichen Warnung für Entwickler in den Versionshinweisen von macOS hat Apple zusätzlich Hinweise angezeigt, wenn Benutzer versuchen, veraltete Python 2 Runtimes in macOS Monterey zu verwenden. Diese Warnungen können für Endbenutzer schwer zu verstehen sein, da sie vor allem an Entwickler und Administratoren gerichtet sind, um Apps und Skripte zu identifizieren, die aktualisiert werden müssen. Zusätzlich enthielten die Beta-Versionshinweise für macOS Monterey 12.3 einen Hinweis von Apple, dass das Verzeichnis /usr/bin/python vollständig entfernt wird.

Dies soll die Sicherheit durch die Entfernung veralteter Programmier-Runtimes aus seinem Flaggschiff macOS verbessern, aber – selbst nach ausreichenden Warnungen im Laufe der Jahre – die Löschung einer derartigen Funktionalität in diesem Maßstab könnte zu Problemen für Benutzer, Administratoren und Entwickler führen. Obwohl Apple eine gut dokumentierte Tradition besitzt, Funktionen für Endnutzer und die Verwaltung im Frühjahr zu veröffentlichen, entspricht die Entfernung von Elementen, die die Funktionsfähigkeit beeinflussen könnten, nicht der Norm und wird deshalb in einem kleineren Update auch nicht erwartet.

Eine weitere Komplikation ist die Tatsache, dass die Betaperiode für eine kleinere Aktualisierung (6-8 Wochen) viel kürzer als die für wichtige Betriebssystemversionen (4-5 Monate) ist. Diese zusätzliche Komplikation bietet Entwicklern und Administratoren viel weniger Zeit, um Code zu aktualisieren, Updates zu testen und sie auf Geräten der Benutzer bereitzustellen.

Beispielsweise zwangen die Warnhinweise in macOS Monterey die meisten Administratoren dazu, ihre Skripte und Tools zu Update zu aktualisieren, da Python 2.7 nun veraltet war. Dennoch können Aufrufe der Legacy-Version 2.7 von Python an einigen unerwarteten Orten erscheinen.

Jamf Skripte

Erstens können Richtlinien-Skripte und Erweiterungsattribute in Jamf Pro vollständig für Python 2.7 geschrieben sein. Sie identifizieren diese Skripte mit dem #! /usr/bin/python oder #! /usr/bin/env Python Shebang in der ersten Zeile des Skripts. Shell-Skripte können auch Python aufrufen, um bestimmte Systemfunktionalitäten zu verwenden. Laurent Pertois hat ein Skript, das die Jamf API verwendet, um alle Skripte und Erweiterungsattribute nach der Verwendung des Python-Befehls zu durchsuchen. Dies sollte Ihnen eine Liste von Speicherorten liefern, wo Sie nach der Verwendung von Python suchen können.

Eine häufige Verwendung von Python ist die Feststellung des derzeit angemeldeten Benutzers. Es gibt einen Ersatz, der nur eine Shell verwendet, sowie JavaScript for Automation (JXA), was auch eine nützliche Lösung für einige der üblichen Python-Zeilen darstellt. Sie können auch nützliche Ersatzoptionen für viele administrative Anwendungen von Python auf Jamf Nation und/oder innerhalb des MacAdmins Slack Channel finden.

Python in Installationsskripten

Sie werden auch häufig Python-Skripte oder Aufrufe in Prä- und Post-Installationsskripten in Installationspaketen finden. Da die Pakete normalerweise vom Softwareanbieter erstellt werden, wissen Sie vielleicht nicht, dass diese Python-Skripte überhaupt vorhanden sind. Ich habe ein Skript namens pkgcheck geschrieben, das einen Ordner von Installationspaketen durchsucht und alle Skripte auflistet, die einen Python-Shebang oder das Python-Tool im Code verwenden. Die Verwendung dieses Skripts wird definitiv helfen, Installationspakete von Drittenabietern zu identifizieren, die Probleme verursachen können.

Wenn Sie ein Paket mit einem Skript identifizieren, das Python verwendet, hilft es, den Anbieter zu benachrichtigen, dass sein Installationsprogramm bei macOS 12.3 und höher nicht funktionieren wird. Wenn der Softwareanbieter trotz aller Bemühungen nicht rechtzeitig ein Update bereitstellen kann, stellt die Verwendung der Smart Groups von Jamf Pro zur Verhinderung der Installation dieses Pakets auf Ihren Macs, die auf macOS 12.3 aktualisiert und höher aktualisiert wurden, einen Ausweg da, um Probleme zu vermeiden, welche die Endbenutzerleistung beeinträchtigen könnten. Sie können auch versuchen, die betroffenen Python-Skripte selbst zu aktualisieren und die Software für die Bereitstellung neu zu verpacken, aber je nach der Beschaffenheit der Installationsskripte kann das eine schwierige Aufgabe sein.

Weitere Tools

Open-Source-Tools für Mac Administratoren werden oft vollständig in Python 2 geschrieben. Sie können diese am Shebang identifizieren, wie bereits zuvor erwähnt. Wenn der Shebang /usr/bin/python ist, verwendet es das integrierte Python 2, das später in macOS 12.3 nicht mehr funktionieren wird. Gehen Sie zum GitHub Repository oder der Website des Entwicklers für das betreffende Tool, um Aktualisierungen oder Anweisungen zu erhalten, um diese Tools unter macOS 12.3 und höher funktionsfähig zu machen. Wenn Sie das wollen, können Sie auch andere Mac Administratoren in Jamf Nation oder dem MacAdmins Slack Channel um alternative Lösungen bitten.

Ein Beispiel für die möglichen Lösungen für Ihr spezifisches Problem wäre das Tool DockUtil. Während Entwickler an einer neuen Python 3 Version arbeiten, kann in DockLib ein alternatives Tool gefunden werden, das bereits Python 3 unterstützt.

Lang lebe Python 3

Während Python 3 keinen müheloser Ersatz für Python 2 darstellt, bleibt es jedoch der logische Schritt nach vorn. Es gibt eine Python 3 Binärdatei in macOS. Allerdings ist das nur eine Ersatz-Binärdatei, die entweder auf die Python-Runtime umgeleitet wird, die mit Xcode installiert ist oder Benutzer auffordert, die Developer Line Tools zu installieren. Die in macOS enthaltene Python 3 Binärdatei ist keine gute Alternative zum veralteten Python 2.

Apple empfahl schon in den Versionshinweisen zu macOS Catalina, dass Sie Ihr eigenes Python bereitstellen sollten, wenn sie eine zuverlässige Version benötigen.

Der Autor von DockLib empfiehlt die Verwendung der MacAdmins Python Version. Dieses Open-Source-Projekt bietet ein Pkg-Installationsprogramm für Python 3, das eine Reihe nützlicher Python-Module vorinstalliert hat. Es wird auch an einen nicht standardmäßigen Ort im Dateisystem installiert, um einen Konflikt mit anderen Python-Versionen zu vermeiden, die Entwickler möglicherweise verwenden.

Das ist eine ausgezeichnete Lösung, wenn Sie weiterhin Python für Ihre Admin-Tools verwenden wollen. Eine weitere hilfreiche Option ist die Erstellung Ihres eigenen benutzerdefinierten Python mit Modulen unter Verwendung des Relocatable-Python Tools von Greg Neagle.

Egal welche Version von Python Sie am Ende verwenden können, sollten Sie sich daran erinnern, dass Sie jetzt für die Pflege und Aktualisierung verantwortlich sind.

Lang lebe Python 3

Selbst mit der besten Vorbereitung wird dieser Übergang einige Probleme erzeugen. Sie müssen Ihre eigenen Skripte überprüfen, aktualisieren und verifizieren sowie Anbieter und Tool-Entwickler informieren, dass sie ihre Installationsprogramme aktualisieren sollten, um die durch das veraltete Python 2 verursachten Funktionsstörungen zu vermeiden.

Sie müssen sich vielleicht auf Jamf Pro und Smart Groups verlassen, um die Installation von Software und Aktualisierungen von Apps zu verschieben, die in macOS Monterrey 12.3 noch Aufrufe von Python verwenden. Wenn die Software für Ihr Unternehmen geschäftskritisch ist, stellen Sie vielleicht fest, dass eine Verschiebung des Update auf 12.3 erforderlich ist, bis alle von Python 2 abhängige Software gepatcht ist. Wenn Sie weiterhin Python für Open Source oder Ihre eigenen Tools verwenden möchten, kann es am besten sein, der ursprüngliche Empfehlungen von Apple zur Bereitstellung und Verwaltung Ihrer eigenen Version zu folgen.

Photo of Armin Briegel
Armin Briegel
Jamf
Armin Briegel, Senior Consulting Engineer
Jamf Blog abbonieren

Industrietrends, Apple Neuigkeiten und das Neueste von Jamf, direkt in Ihrer Inbox.

Um mehr darüber zu erfahren, wie wir Ihre Informationen sammeln, verwenden, offenlegen, übertragen und speichern, werfen Sie bitte einen Blick auf unsere Datenschutzbestimmungen.