Will jemand für Windows ein Programm machen und verteilen, packt er es in eine setup.exe, welche man dann einfach nur noch installieren braucht, und gut ist. Läuft so gut wie auf jedem Windows der letzten 15 Jahre.
Will jemand ein Programm für z. B. Debian erstellen, dann gibt er dafür den Quellcode frei und bittet einen Debian-Maintainer das Paket aufzunehmen (bzw. stellt im Idealfall dafür jemanden bereit). Dabei wird durch den Maintainer dann sichergestellt, dass der Quellcode mit der Binärdatei übereinstimmt, keine Schadsoftware dabei ist und, dass alle Abhängigkeiten erfüllt sind und sich das Programm problemlos installieren lässt. Ebenso landet ein Programm aus Debian auch automatisch in Ubuntu, da Ubuntu sein System alle 6 Monate von Debian abspaltet und damit auch dessen Pakete übernimmt (daher arbeiten auch viele Ubuntu-Entwickler direkt am Debian-Repository, da das dann Ubuntu und Debian zu Gute kommt). Komfortabler geht's doch nicht?!
Der Entwickler muss sich also überhaupt nicht um die Paketierung kümmern, denn das übernehmen die Distributionen.
Will ich auch nur etwas (z.B. Seamonkey) für die aktuellen Linuxe bereitstellen, gibt es keine einheitliche setup.exe, sondern alle möglichen Wege.
Korrekter Weg: Das Programm für die jeweilige Distribution paketieren, sodass es sich jeder Nutzer einfach über das Standard-Repository herunterladen kann.
Wenn ich für Android ein Programm veröffentliche, dann ist das ja nicht anders. Im Idealfall will man das nicht nur im Google Play Store, sondern auch bei Amazon und F-Droid haben. Das erfordert auch tlw. Anpassungen.
Das ist doch für die Software-Hersteller
Wie gesagt: Ein Problem haben nur closed source Programme. Bei quelloffener Software übernehmen es die Maintainer einer jeden Distribution.
als auch für mich als Linux-DAU wirklich nicht optimal gelöst, da nie alles in den jeweiligen Repositories drin ist, was man will.
Dann fügt man seinem System eben noch ein oder zwei andere Repositories hinzu. Ich brauche unter Debian nur ein einziges externes Repository und das ist für den Messenger Riot. Alles andere ist in stable und stable-backports enthalten.
Ansonsten sollte man evtl. einen Packaging Request erstellen, damit das Programm aufgenommen wird. Problem: Häufig fehlt es den Distris an Paketbetreuern, weswegen sie ohne freiwillige Unterstützung nicht noch mehr Pakete aufnehmen können. Ebenso verstoßen manche Pakete gegen die Packaging Guidelines mancher Distributionen.
Von daher wäre eine Linux-Vereinheitlichung zumindest im diesem Bereich ganz nett.
Hört man immer wieder und das funktioniert immer noch nicht. Auf welchen Standard soll man sich denn einigen? DEB mit Apt? RPM mit Apt? RPM mit yum? RPM mit Urpmi? RPM mit zypper?
Das sind einfach unterschiedliche Ansätze mit unterschiedlichen Vor- und Nachteilen. Und selbst wenn man einen Standard hätte, was soll das denn bringen? Die Pakete müssen trotzdem an die einzelnen Versionen einer jeden Distribution angepasst werden, denn die Abhängigkeiten sind bei Ubuntu 14.04 ganz anders als bei Ubuntu 16.04 oder 17.10. Und sowas übernimmt eben im Normfall der Maintainer der Distribution.
Es ist einfach so, dass jede Linux-Distribution ein eigenständiges Betriebssystem ist. BSD-Anwendungen laufen auch nicht ohne Anpassungen unter macOS. Hat sich da schon mal jemand beschwert?
Wenn einem sowas zu viel ist, dann besteht auch die Möglichkeit alle Abhängigkeiten in die *.deb bzw. *.rpm Datei zu packen. Dann braucht man nur zwei Pakete erstellen, denn eine RPM ohne Abhängigkeiten kann ich unter openSUSE, Fedora, Mageia usw. installieren, ebenso eine DEB ohne Abhängigkeiten unter Debian, Ubuntu, usw.. Das ist zwar sehr unsicher und wartungsintensiv, aber möglich. Das gleicht dann eben dem "Windows way of life" ...
Eine weitere Möglichkeit ist z. B. der
openSUSE Build Service. Der bietet die Option Pakete für eine ganze Hand voll Distributionen relativ automatisch bauen zu lassen. Am Ende bekommt man ein externes Repository und das kann der Nutzer dann einbinden.
Ebenso gibt es seit vielen Jahren die Möglichkeit
AppImages bereitzustellen. Diese beinhalten ebenso alle Abhängigkeiten und müssen nicht installiert werden. Neuere Konzepte zur Installation sind
Flatpak und
Snap.
Alle Alternativen zum klassischen Repository haben aber einen erheblichen Nachteil: Die Pakete kommen vom Entwickler und es kann nicht nachvollzogen werden, ob bei einem quelloffenen Programm der Quellcode auch mit der ausgelieferten Binärdatei übereinstimmt. Diese Garantie habe ich bei mittlerweile fast allen klassischen Distributionen (und bei F-Droid unter Android), da diese das Konzept der
reproduzierbaren Builds umgesetzt haben. Für closed source Software ist das aber natürlich egal und dafür gibt's eigentlich mehr als genug Möglichkeiten zur Auslieferung ...
Aber vermutlich liegt das Problem sowieso eher darin, dass manche Leute/Entwickler mit Vielfalt überfordert sind und daher unbedingt alles diktiert haben wollen ... Wo kämen wir denn dahin ... Demokratie, mehr als ein Auto-Modell, kein Volksnotebook, kein Volksbetriebssystem ... Tzzz ... Vielfalt ... Informationen ... Entscheidungen ... mündiger Bürger ... Brrr ...
PS: Für solche Leute kann ich immer wieder
Ubuntu empfehlen! Ich kenne kein Programm, welches nicht für Ubuntu paketiert ist (ob via ext. Repository oder im Hauptrepo) und die Nutzerbasis ist auch im
deutschsprachigen Raum riesig. Für alle nicht überforderten:
Distrowatch :thumbup: