Ich halte es ja für einen Fehler, Linux oder Unix als solches kritisieren zu wollen. Obwohl die verschiedenen Derivate und Distributionen meistens den Kernel und quasi immer das Software-Set teilen sind sie am Ende des Tages doch ziemlich verschiedene Biester, die es meiner Meinung nach verdienen als verschiedene Betriebssysteme einzeln bewertet zu werden.
Die ganzen Paket-Manager unterscheiden sich, die Init-Systeme unterscheiden sich teilweise, selbst der Dateibaum kann sich fundamental unterscheiden (man schaue auf Gobo Linux).
Klar, Pakete der Distributionen sind untereinander meistens eher so mäßig kompatibel, aber wenn ich ein Betriebssystem machen will, selbst wenn es quelloffene Software nimmt, die woanders schon verwurstet wurde, guck ich doch erst mal, dass die Software das tut was ich von ihr will, und nicht darauf, dass ich mit anderen Betriebssystemen kompatibel bin.
Streng genommen sind ja auch Android, WebOS, iOS, BlackBerryOS und MeeGo Unix-Systeme, und da ist die Software noch viel weniger untereinander austauschbar. BlackBerryOS und WebOS können über Kompatiblitäts-Schichten Android-Software ausführen, aber das ist am Ende des Tages mehr Gefrickel als ein .deb-Paket auf einer RPM-Basierten Distribution zu installieren. Hier existieren wenigstens Tools zum konvertieren, die zwar alles andere als problemlos sind, weil die von oreissig beschriebenen Abhängigkeits-Fuckups durchaus existieren, aber immerhin vorhanden sind.
Das kann man von den großen, kommerziellen Unixen nicht behaupten, nur kräht da kein Hahn nach. Vermutlich weil da kein Linux im Namen ist. Klar, da sind auch riesen Unterschiede, es wird häufig nicht der gleiche Display-Server genutzt, ein ganz anders Paket-Management, Oberfläche etc. Aber ist das eigentlich bei den verschiedenen Desktop-Linuxen so anders?
Im Extremfall habe ich ein anderes Init-System, eine andere Desktop-Oberfläche mit anderem Toolkit und eine andere Paketverwaltung mit anderen Paket-Formaten, und da lasse ich die BSDs, die noch einen ganz anderen Kernel haben, sogar außen vor. Ich finde das sind schon ziemlich große Unterschiede, und trotzdem krieg ich Software von anderen Distributionen meistens noch irgendwie ans Laufen, das ist im Grunde genommen sogar ein Feature, kein Bug.
Ich kann auch das "soll halt jedes Paket seine Abhängigkeiten selber mitbringen" Argument nicht ganz unterstützen. Klar, auf dem modernen Desktop-System an sich ist das gar kein Problem, da haben wir genügend Platz.
Aber Linux läuft eben nicht nur auf modernen Desktops. Ein sehr starkes Argument für Linux ist doch grade die Flexibilität, dass ich im Zweifel auch eine Distribution bauen kann, die mit minimalsten Ressourcen läuft, für Embedded-Systeme oder Retrokisten. Hier zählen die paar MB, die ich durch dynamisch verlinkte Bibliotheken gewinne, und können den Unterschied ausmachen ob das System auf eine Floppy passt oder nicht.
Für moderne Desktop-Systeme statisch linken und bei Embedded-Systemen nicht, kann auch kaum die Lösung sein. Hier verliere ich ja noch mehr Kompatibilität, da verstärke ich den Kritikpunkt der Nicht-Austauschbarkeit von Softwarepaketen zwischen Distributionen ja noch mehr.
Und Innerhalb einer Distribution, die ich - wie bereits ausgeführt - eigentlich als eigenständiges Betriebssystem betrachten würde, funktioniert die Auflösung von Abhängigkeiten dann doch ganz gut. Bei Arch Linux sogar trotz dessen, dass meine Software immer aktuell ist. Ja ich weiß, hier soll es um die grundlegenden Konzepte gehen, nicht um einzelne Distributionen - aber ich finde echt nicht, dass man die Diskussion so anpacken kann, die Unterschiede sind schon groß genug, dass man sich jede Distribution einzeln ansehen sollte.
Edit: Mir ist da grade noch eine guter Vergleich mit Windows eingefallen. Im Grunde gibt's da ja auch drei "Derivate": Normales Desktop Windows 8.1, Windows RT und Windows Phone. Gleicher Kernel, im Grunde die gleiche ModernUI-Oberfläche, trotzdem hab ich keine Chance normale Windows 8.1 Anwendungen auf meinem Telefon oder RT-Gerät zu installieren, weil die meisten nicht Open-Source sind. Und wenn doch, gibt's in den wenigsten Fällen ARM-Ports.
Die allermeisten Linux-Pakete krieg ich sowohl auf meinem Desktop-Linux, als auch auf meinem ARM-Linux, und meistens sogar auf Meego oder WebOS installiert, weil das meiste quelloffen ist. Ich finde schon, dass das eher als Pro-Argument gelten kann.