Im Jahr 2021 gibt es mehr Gründe, warum Menschen Linux lieben als je zuvor. In dieser Serie werde ich 21 verschiedene Gründe nennen, um Linux zu verwenden. Heute werde ich darüber sprechen, was das Paketieren für Linux für Programmierer ideal macht.
Programmierer lieben es zu programmieren. Das scheint wahrscheinlich eine offensichtliche Aussage zu sein, aber es ist wichtig zu verstehen, dass die Entwicklung von Software viel mehr umfasst als nur das Schreiben von Code. Es umfasst Kompilierung, Dokumentation, Quellcodeverwaltung, Installationsskripte, Konfigurationsstandards, Supportdateien, Bereitstellungsformat und mehr. Von einem leeren Bildschirm zu einem lieferbaren Software-Installationsprogramm zu gelangen, erfordert viel mehr als nur Programmieren, aber die meisten Programmierer würden lieber programmieren als packen.
Was ist Verpackung?
Wenn Lebensmittel zum Einkaufen in die Geschäfte geschickt werden, werden sie verpackt. Wenn Sie direkt beim Bauern oder in einem umweltfreundlichen Groß- oder Mülleimer kaufen, ist die Verpackung der Behälter, den Sie mitgebracht haben. Beim Kauf in einem Lebensmittelgeschäft kann die Verpackung ein Karton, eine Plastiktüte, eine Blechdose usw. sein.
Wenn Software Computerbenutzern im Allgemeinen zur Verfügung gestellt wird, muss sie auch verpackt werden. Wie bei Lebensmitteln gibt es mehrere Möglichkeiten, Software zu paketieren. Open-Source-Software kann unverpackt bleiben, da Benutzer, die Zugriff auf den Rohcode haben, diesen selbst kompilieren und packen können. Pakete haben jedoch Vorteile, daher werden Anwendungen im Allgemeinen in einem bestimmten Format bereitgestellt, das für die Plattform des Benutzers spezifisch ist. Und hier beginnen die Probleme, denn es gibt nicht nur ein Format für Softwarepakete.
Für den Benutzer erleichtern Pakete die Installation von Software, da die gesamte Arbeit vom Installer des Systems erledigt wird. Die Software wird aus ihrem Paket extrahiert und an die entsprechenden Stellen innerhalb des Betriebssystems verteilt. Es gibt kaum Möglichkeiten, dass etwas schief geht.
Für den Softwareentwickler bedeutet Paketierung jedoch, dass Sie lernen müssen, ein Paket zu erstellen – und zwar nicht nur ein Paket, sondern ein einzigartiges Paket für jedes Betriebssystem, auf dem Ihre Software installiert werden soll. Erschwerend kommt hinzu, dass es für jedes Betriebssystem und manchmal sogar für die verwendete Programmiersprache mehrere Verpackungsformate und Optionen gibt.
Paketierung unter Linux
Paketoptionen für Linux schienen traditionell ziemlich überwältigend. Von Fedora abgeleitete Linux-Distributionen wie Red Hat und CentOS verwenden standardmäßig .rpm
Pakete. Debian und Ubuntu (und ähnliche) standardmäßig auf .deb
Pakete. Andere Distributionen verwenden möglicherweise das eine oder das andere oder keines und entscheiden sich für ein benutzerdefiniertes Format. Auf Nachfrage sagen viele Linux-Benutzer, dass ein Programmierer idealerweise seine Software gar nicht für Linux paketieren würde, sondern sich stattdessen auf die Paketbetreuer jeder Distribution verlassen würde, um das Paket zu erstellen. Alle auf einem Linux-System installierte Software sollte aus dem offiziellen Repository dieser Distribution stammen. Es bleibt jedoch unklar, wie Sie Ihre Software zuverlässig paketieren und in eine Distribution integrieren können, geschweige denn in alle Distributionen.
Flatpak für Linux
Das Flatpak-Paketsystem wurde eingeführt, um Linux als Bereitstellungsziel für Entwickler zu vereinheitlichen und zu dezentralisieren. Bei Flatpak kann entweder ein Entwickler oder jeder andere (ein Mitglied einer Linux-Community, ein anderer Entwickler, ein Flatpak-Teammitglied oder jeder andere) Software paketieren. Sie können das Paket dann an Flathub senden oder das Paket selbst hosten und es praktisch jeder Linux-Distribution anbieten. Das Flatpak-System ist für alle Linux-Distributionen verfügbar, also ist das Zielen auf eine dasselbe wie auf alle.
So funktioniert die Flatpak-Technologie
Das Geheimnis der universellen Anziehungskraft von Flatpak ist eine Standardbasis. Das Flatpak-System ermöglicht es Entwicklern, auf einen gemeinsamen Satz von Software Developer Kit (SDK)-Modulen zu verweisen. Diese werden von den Betreuern des Flatpak-Systems gepackt und verwaltet. Die SDKs werden nach Bedarf eingezogen, wenn Sie ein Flatpak installieren, um die Kompatibilität mit Ihrem System sicherzustellen. Jedes gegebene SDK wird nur einmal benötigt, da die darin enthaltenen Bibliotheken von jedem Flatpak, der es benötigt, gemeinsam genutzt werden können.
Wenn ein Entwickler eine Bibliothek benötigt, die noch nicht in einem vorhandenen SDK enthalten ist, kann der Entwickler diese Bibliothek zum Flatpak hinzufügen.
Die Ergebnisse sprechen für sich. Benutzer können Hunderte von Paketen auf jeder Linux-Distribution von einem zentralen Repository namens Flathub installieren.
Wie Entwickler Flatpaks verwenden
Flatpaks sind auf Reproduzierbarkeit ausgelegt, sodass der Build-Prozess einfach in einen CI/CD-Workflow integriert werden kann. Ein Flatpak wird in einer YAML- oder JSON-Manifestdatei definiert. Sie können Ihr erstes Flatpak erstellen, indem Sie meinem Einführungsartikel folgen, und Sie können die vollständige Dokumentation unter docs.flatpak.org lesen.
Linux macht es einfach
Das Erstellen von Software unter Linux ist einfach, und das Paketieren für Linux ist einfach und automatisierbar. Wenn Sie ein Programmierer sind, macht es Ihnen Linux leicht, das Packen zu vergessen, indem es auf ein System abzielt und dieses in Ihren Build-Prozess integriert.