Frage von negotio, 53

Abhängigkeiten (Dependencies) unter Linux im Vergleich zu Windows?

Hallo,

hier einmal eine Frage fü Spezialisten ;-)

Ich bin kürzlich von Windows zu Linux (Deian) umgestiegen. Dabei ist mir aufgefallen, daß es unter Linux zu sehr vielen Abhängigkeiten (Dependencies) bei den Paketen kommt. Das keinne ich von Windowsw her nicht. Wenn ich das richtig verstanden habe ist ein .so quasi das Pendant zu einer .dll unter Windows. Aber warum gibt es hier unter Linux diese starken Abhängigkeiten und die damit verbundenen Probleme?

Gibt es eine Möglichkeit diese Abhängigkeitsprobleme zu lösen, insbesondere wenn Paket A ene andere Version einer Library benötigt als Paket B?

Antwort
von eumel88, 53

Das ist OpenSource. Wenn jemand ein Programm schreibt, faengt er nicht beim Urschleim an, sondern bedient sich vorhandener Resourcen des Betriebssystems oder anderer Programme. Dadurch kommt es, dass man Paket C,D,E und F brauch, um Paket A zu installieren. Das ist Teil des Konzepts und jetzt nicht unbedingt ein Nachteil.

Wenn Du auf Abhaengigkeiten verzichten willst, solltest Du nach Programmen suchen, die Libraries statisch gelinkt haben und auf die Verwendung von Shared Libraries groesstenteils verzichtet haben.
Meist muss man dazu aber die Sourcen herunterladen und das Programm selber kompilieren.

Kommentar von negotio ,

Danke erst einmal für deine Antwort. Wie gesagt, ich bin da noch recht neu ;-)

Aber müßte das gleiche Problem nicht auch unter Windows existieren? Da erfindet man das Rad ja auch nicht jedes Mal neu. Unter Windows greift man doch auch auf Standard-dlls zu, die sich auch mit der Betriebssystemversion ändern. Dennoch bleiben die dlls meist kompatibel. Oder wird unter Windows meist statisch gelinkt?

Eigentlich würde ich gerne bei den Binary-Repos bleiben, da das selbst kompilieren auch gerne mal Probleme wegen den Dependencies macht. Unter Windows gibt es den Trick, wenn eine Standard-dll wirklich inkompatibel ist die funktionierende Version im entsprechenden Programmverzeichnis abzulegen, so daß das Programm dann diese verwendet. Das geht unter Linux meines Wissens nicht, da bins und libs immer getrennt abgelegt werden

Kommentar von eumel88 ,

Also bei LInux geht das auch, wenn der Programmierer ALLE abhaengigen Sachen selber mitbringt. Das hatte ich ja schon geschrieben, Stichwort: ld_library_path

Windows ist closed source, es gibt sehr wenig offene Bibliotheken, wo Du dich mal ebend mit einem selbstgeschriebenen Programm dranhaengen kannst. Als Ergebnis hast Du wenige Programme, die viel mit dem Betriebssystem agieren. Die grossen Softwarefirmen wie z.B. Adobe bauen ihre eigenen Bibliotheken fuer ihre eigene Programmsuite. Wahrscheinlich koennten sie auch ihr eigenes Betriebssystem schreiben.

Der Vorteil von closed source ist eine hohe Stabilitaet. Microsoft ist sich schon so sicher, dass er Milliarden Rechner taeglich automatisch einfach updatet - ohne meist den Benutzer zu fragen.

Bei Linux kann so ein Update schon mal daneben gehen, wenn ebend groessere Releasewechsel anstehen und man auf Abwaertskompatibilitaet verzichtet. Der Vorteil ist aber die Vielfalt und die Moeglichkeit, das Programm selbst zu aendern, wenn ich das moechte.

Antwort
von Nightmist62, 26

Ich finde, das ist ein Riesen-Vorteil, da bei der Deinstallation einer Appllikation auch von anderen Anwendungen nicht mehr benötigte Pakete mit deinstalliert werden und damit alles rückstandsfrei entfernt wird - das ist bei Windows nach meiner eigenen Anschauung eher selten der Fall.

Die Abhängigkeiten sind auch alle transparent dargestellt. Solange man keine "wilden" Sachen aus Fremdquellen installiert, gibt es auch keine oder nur wenig Versionskonflikte. Um diese zu vermeiden, werden bei den populären Distributionen die Abhängigkeiten getestet und ein Rundum-Sorglos-Paket geschnürt, was zwar nicht immer die allerneuesten Versionen enthält, aber stabil läuft. Bevor Updates eingespielt werden in die Distribution, werden diese vom Herausgeber auch getestet.

Das ist mir allemal lieber, als das ständige Herumgepatche bei Windows von verschiedenen Herstellern...

Antwort
von blackst0rm, 36

Auch bei Windows hast du diese Abhängigkeiten. Meistens bringen gepackte Programme aber ihre eigenen DLL's mit. Ich habe bisher selten Probleme gehabt mit Versionskonflikten von Abhängigkeiten unter Linux. Effektiv nur mit Spotify und das auch nur weil die zu doof sind anständige Debian-Pakete zu bauen...

Kommentar von negotio ,

Ich bin noch auf Debain 7. Ist das eine konstruktive Schwäche noch Linux, daß man immer die neuste Distro nutzen muß, um aktuelle Programmversionen nutzen zu können?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten