Hallo,
ich habe jetzt seit einigen Jahren SUSE im Einsatz (privat) und habe während SW-Updates und SW-Installationen bisher immer normal weitergearbeitet. Bei Windows wird man aufgefordert vor einer SW-Installation alle (User- ?)Programme zu schließen.
Könnt ihr mir sagen, ob ich bisher nur leichtsinnig war und Glück hatte, oder gibt es einen grundsätzlichen in Unterschied, der es mir gefahrlos erlaubt weiter zuarbeiten ? (z.B. Multi-Userfähigkeit von Linux)
Gruß
heriL
Linux 15.036 Themen, 107.107 Beiträge
Wenn du unter Linux ein Softwareupdate einspielst mußt du nicht alle Programme wie unter Windows schließen. Man sollte aber nach Möglichkeit die Progranmme , welche aktualisiert worden sind, noch mal neu starten.
Sonst arbeitest du mit der alten Programmversion weiter.
Ich kann es nicht so gut erklären.
Der Hauptgrund das man unter Windows alle Programm bei einem Update schließen soll , liegt wahrscheinlich darin begründet , das alle dlls geschlossen sein müssen , damit sie auf der Festplatte überschrieben werden können. Es sollten nach Möglichkiet keine dlls geöffnet sein.
Windows verwendet dlls als (Funktions-) Bibliotheken. Wenn ein Programm unter Windows gestartet wird, wird vom Loader die entsprechende dll automatisch in den Speicher geladen. Das Problem ist das diese dll nur einmal in den Speicher geladen wird und alle anderen Programme auf diesen Speicherbereich zugreifen und die entsprechenden Funktionen starten.
Wenn man unter Windows ein Softwareupdate einspielt werden viele dieser dlls mit aktualisiert. Wenn jetzt ein Programm gestartet wird welches die neuere Version von einer dieser dlls braucht , aber die ältere Version im Speicher geladen ist, dann wird es Probleme geben und das Programm wird nicht richtig funktionieren.
Das Problem was ich bei dlls sehe ist, das eine dll nur einmal in den Speicher geladen wird und alle Programme gemeinsam auf diesen Speicher zugreifen . Dabei sind Versionskonflikte bei den dlls sehr wahrscheinlich.
Als Windowsanwender bekommt man häufig Fehlermeldungen wie "dll Datei nicht gefunden ...".
Diese Probleme gab es schon immer unter Windows und Windowsprogrammierer haben einen Begriff dafür, "DLL Hell" oder zu deutsch DLL Höllle.
Vielleicht ließt du mal in der Wikipedia nach, warum das Konzept mit diesen dlls unter Windows problematisch ist:
http://de.wikipedia.org/wiki/DLL_Hell
Ich weiß nicht ob du dich mit der Windowsprogrammierung etwas auskennst. Ich halte nicht viel vom Konzept mit diesen dlls unter Windows.
Linux macht das anders. Bei Linux werden Shared Librarys an Stelle von dlls verwendet. Unter Linux werden vom Linker ld die notwendigen Funktionen aus den Bibliotheken in den Speicher geladen und mit dem jeweiligen Programm verlinkt und jedes Programm bekommt eine eigene Kopie der jeweiligen Funktionen aus den Bibliotheken. Dadurch sind auch alle Programme im Speicher unabhängig voneinander. Dadurch kommt es nicht zu diesen Versionskonflickten wie bei den dlls unter Windows.
PS: Unter Linux gibt es andere Probleme. Die Versionskonflickte wie bei Windows gibt es bei Linux zum Glück nicht, aber..
Ein Linuxprogrammierer muß keine Funktionsbibliotheken mit seinem Programm auf den anderen Recher installieren. Er muß nur die notwendigen Infomationen in eine bestimmte Datei von einem rpm oder von einem deb Paket reinschreiben. Ein Paketmanager wie APT wertet diese Information aus und installiert die noch fehlende Bibliothek nach , welche dieses fremde Programm braucht. Dabei muß nicht nur der Dateiname stimmen sondern auch der Inhalt. Für diese wichtige Binärkompatibilität zwischen den Distributionen ist die Linux Standard Base entwickelt worden, damit ein Anwender auch mal ein Fremdprogramm installieren kann.
Leider halten sich nicht alle Distributionen an diese wichtigen Standards von der LSB. Dadurch hat ein Anwender nicht immer die Garantie das Fremdsoftware mit seiner Distribution läuft.
Das mal nur nebenbei, aber Microsoft sollte sich wirklich mal überlegen diese dlls abzuschaffen und auf Shared Librarys wie bei Linux umzusteigen.
Das wäre mal eine wichtige Verbesserung die sich ein Windowsprogrammierer wünscht. Außerdem hätte ich gern ein gutes Paketverwaltungssystem wie APT von Debian unter Windows.
Hallo Karsten,
danke für die ausführliche Antwort - bestätigt mich in der Entscheidung für Linux.
Gruß
heriL
Das Problem mit den dll wäre eventuell gar nicht so schlimm , wenn die Windowsprogrammierer eine einheitliche Laufzeitbibliothek verwenden würden. Der eine Windowsprogrammier nutzt noch Visual Studio 6, ein anderer nimmt schon die neue .net Entwicklungsumgebung von Microsoft und dann gab es früher noch Bibliotheken von Borland.
Und alle Windowsprogrammierer müssen verschiedene dlls, die ihre Programme nutzen, mit kopieren , weil Windows diese dlls nicht hat.
Und deshalb gibt es immer wieder Probleme mit dlls unter Windows.
Unter Linux sucht man sich eine Distribution heraus die zur Linux Standard Base kompatibel ist und dann kann man auch Programme installieren die mit einer anderen Distribution erstellt wurden.
Das ist viel besser gemacht als bei AIX Unix von IBM oder Solaris 10 von Sun Microsystems.
Ich glaube ein paar Open Suse Version sind zur LSB kompatibel.
Debian etch ist zu fast 100 % zur LSB 3.1 kompatibel und die neue lenny Version wird wahrscheinlich LSB 3.2 kompatibel sein.
Wenn es dich interessiert:
http://de.wikipedia.org/wiki/Linux_Standard_Base
Bei Unix gibt es nur die Single Unix Spezifikation . Die reicht nicht im Desktopbereich.