Pkgsrc ist ein weit verbreitetes, portables Paketverwaltungssystem, entwickelt von NetBSD, das für eine Vielzahl von Unix-basierten Betriebssystemen unterstützt wird. Seine Fähigkeit, Softwarequellen plattformunabhängig zu übersetzen und zu verwalten, macht es besonders attraktiv für Umgebungen, in denen viele verschiedene Unix-Handelsplattformen zusammentreffen. Ein Betriebssystem, das historisch gesehen auch von Pkgsrc unterstützt wurde, ist AIX, IBM’s proprietäres Unix auf PowerPC-Architektur. Doch diese Unterstützung ist im Laufe der Zeit eingeschlafen. Der Herausforderung, Pkgsrc auf AIX wieder in Gang zu bringen, habe ich mich gewidmet und dabei wertvolle Erkenntnisse gewonnen, die vor allem für Systemadministratoren und Entwickler, die sich mit AIX beschäftigen, relevant sind.
AIX und die Paketverwaltung: Eine schwierige Kombination Im Gegensatz zu populären Linux-Distributionen oder anderen Unix-Systemen ist AIX traditionell weniger offen für große Paketverwaltungs-Repositorien. IBM bietet zwar das sogenannte AIX Toolbox for Open Source Software an, in welchem einige gängige Werkzeuge und Bibliotheken verfügbar sind, doch der Umfang ist begrenzt und viele wichtige Pakete sind entweder veraltet oder fehlen ganz. Besonders die Abhängigkeiten moderner Software stellen eine Herausforderung dar. Die vorhandenen Repositorien beschäftigen sich zumeist mit 32-Bit-Paketen, was für neuere AIX-Installationen auf 64-Bit-Architekturen wie PowerPC64 nicht ideal ist. Die Verfügbarkeit von Pkgsrc auf AIX könnte hier einen Paradigmenwechsel bedeuten.
Es ermöglicht Nutzern, aktuelle Softwarepakete für eine Vielzahl von Anwendungen bereitzustellen und effizient zu verwalten. Der Weg dahin war jedoch alles andere als trivial und erforderte ein tiefgehendes Verständnis von AIX und dessen Besonderheiten beim Kompilieren und Verwalten von Software. Installation von AIX in einer virtuellen Umgebung Für mein Vorhaben stand keine native IBM Power Hardware zur Verfügung. Deshalb entschied ich mich, AIX 7.2 in einer QEMU-Emulation anzulegen.
Diese Auswahl bietet den Vorteil, ein echtes AIX-System nutzen zu können, ohne auf teure proprietäre Hardware angewiesen zu sein. Die virtuelle Maschine wurde so konfiguriert, dass sie mehrere CPUs und eine großzügige Menge an RAM sowie eine ausreichend große virtuelle Festplatte besitzt. Dies ist essentiell, da der Bauprozess von Paketen, insbesondere bei Pkgsrc, ressourcenintensiv sein kann. Netzwerkeinrichtung war ein erster Stolperstein, da AIX wie viele Unix-Derivate eigene Konfigurationen benötigt. Insbesondere musste auf korrekte DNS-Auflösung geachtet werden, was durch eine einfache /etc/resolv.
conf Datei realisiert wurde. Das ermöglichte, Pakete und Updates später direkt von Online-Repositorien zu beziehen. Update der Basissoftware – OpenSSL als Schlüsselkomponente AIX bringt zwar einige Open-Source-Komponenten mit, doch die Version von OpenSSL war zu alt für die moderne Paketverwaltung mittels dnf. Ein Update war daher unvermeidlich. Die Herausforderung bestand darin, aktuelle AIX-kompatible OpenSSL-Pakete zu finden.
IBM stellt zwar Pakete zum Download bereit, allerdings hinter einer Login-Schranke, die einen IBMid-Account erfordert. Mit Zugang zu diesem konnte ich die neuesten OpenSSL-Versionen auf das System kopieren und manuell installieren. Eine eigens entwickelte Schnittstelle namens lwp-download war auf AIX vorhanden und eignete sich, um Downloads ohne standardmäßige Tools wie curl oder wget durchzuführen. Installation und Nutzung der AIX Toolbox Die AIX Toolbox für Open Source bietet ein rudimentäres Paketverwaltungssystem mit dnf, dem Nachfolger von yum. Durch die Installation dieses Systems können grundlegende Entwicklungs- und Hilfswerkzeuge schnell hinzugefügt werden.
Damit war es möglich, eine neuere GCC-Version (12.3.0) zu installieren, die essenziell ist, da ältere Compilerversionen AIX-spezifische Flaggen wie -m64 nicht korrekt unterstützen. GCC 12.3.
0 beseitigt wichtige Limitierungen bei der 64-Bit-Kompilierung und erleichtert die Arbeit mit Pkgsrc immens. Zusätzlich wurden Tools wie GNU Tar, xz und wget aus dem Paketmanagement installiert, um die Arbeit und spätere automatische Abläufe reibungslos zu gestalten. Technische Herausforderungen beim Buildprozess Die Kompilierung von Paketen unter AIX bringt eigene Tücken mit sich. Beispielsweise versteht das native ar-Tool zur Archivierung von Objektdateien standardmäßig nur 32-Bit-Objekte. Für 64-Bit-Operationen muss die Umgebungsvariable OBJECT_MODE auf 32_64 gesetzt werden, damit Programme automatisch den korrekten Objektmodus wählen.
Analog ist es notwendig, pthread-Bibliotheken explizit in den Linkerflags anzugeben, um korrekte Thread-Unterstützung zu gewährleisten, da AIX hier nicht automatisch das passende Flag ergänzt. Start des Pkgsrc-Bootstraps Die Installation von Pkgsrc begann mit einem sorgfältig angepassten Bootstrap-Vorgang, der die vorgenannten Besonderheiten berücksichtigte. Durch Verwendung von GCC 12, LDFLAGS für pthread und der 64-Bit-Option ließ sich Pkgsrc erfolgreich installieren und einsetzbar machen. Dennoch gab es kosmetische Warnungen vom pkg_add-Tool in Hinblick auf unterschiedliche Plattformangaben, die die Funktion jedoch nicht beeinträchtigten. Die Paketkompilierung erwies sich zunächst als verwirrend, da Pkgsrc ungefragt begann, alte GCC-Versionen (6.
5) nachzuinstallieren. Der Grund war zunächst unklar, denn die Umgebungsvariablen und Pfade waren korrekt gesetzt und auf GCC 12 verwiesen. Eine tiefer gehende Analyse zeigte offenbar plattformspezifische Besonderheiten auf AIX, die Pkgsrc zu dieser Entscheidung veranlassten. Der Traum vom LLVM-Compiler Als Alternative zu GCC erschien der Einsatz von IBM’s eigenem Open XL C/C++ Compiler verlockend, der auf LLVM und Clang basiert und speziell auf IBM Power-Server optimiert ist. Allerdings stellte sich heraus, dass dieser Compiler für Einzelnutzer mit astronomischen Lizenzkosten verbunden ist, die weit über das übliche Maß hinausgehen.
Die Idee, eine Open-Source Variante von Clang/LLVM auf AIX zu bauen und damit das Problem elegant zu lösen, war schnell geboren. Der Bau von LLVM 20.1.4 auf AIX wurde mit Hilfe von modernen Tools wie CMake und Ninja versucht. Mit Hilfe von GCC 12 und expliziten Flags konnte eine Grundversion von LLVM erstellt werden, aber der anschließende Versuch, Clang auf diese Art zum Laufen zu bringen, scheiterte mehrfach an tiefsitzenden Problemen und Inkompatibilitäten.
Die elegante Lüge: GCC als Clang ausgeben Eine pragmatische Lösung fand sich darin, Pkgsrc schlichtweg vorzugaukeln, dass der verwendete Compiler Clang sei, obwohl in Wahrheit weiterhin GCC verwendet wird. Dies wird erreicht, indem GCC-Binarys unter dem Namen clang und clang++ platziert werden. Mit dieser Täuschung akzeptiert Pkgsrc GCC als Clang und vermeidet die ungewollte Installation von GCC 6.5. Der Vorteil: Keine langwierigen Kompilierungsprobleme mit LLVM, und gleichzeitig moderne Kompilerunterstützung für 64-Bit und moderne Features.
Diese Lösung wurde sowohl beim Bootstrappen von Pkgsrc als auch bei der Kompilierung der Pakete angewandt und führte zum Erfolg. Fazit und Ausblick Die Revitalisierung von Pkgsrc auf AIX ist zwar kein Kinderspiel, bietet aber enorme Vorteile in der Bereitstellung moderner Open-Source-Pakete für ein komplexes Unternehmensbetriebssystem. Die Kombination aus neuem GCC, angepassten Tools und einem cleveren Workaround für den Compiler führte zum Erfolg. Es zeigt sich, dass mit relativ geringem Aufwand eine unmittelbare Verbesserung der Softwareumgebung von AIX-Systemen realisiert werden kann, was letzlich Zeit, Geld und Ressourcen spart. Die in diesem Prozess gewonnenen Erkenntnisse wurden gesammelt und als vorgeschlagene Verbesserungen an das Pkgsrc-Team weitergegeben – eine Entwicklung, von der die gesamte AIX-Community profitieren kann.
Für Administratoren und Entwickler, die auf AIX angewiesen sind und ihre Systeme modernisieren wollen, ist Pkgsrc somit eine interessante und praktikable Alternative zur sporadischen AIX Toolbox. Die Zukunft wird zeigen, wie sich diese Entwicklungen verbreiten und weitere Optimierungen ihren Weg in den offiziellen Zweig von Pkgsrc finden werden. Bis dahin bleibt die bewährte Kombination aus QEMU-basierten Testumgebungen und den beschriebenen Workarounds eine verlässliche Basis für eigene AIX-Projekte mit moderner Softwarebereitstellung.