it-swarm.com.de

Warum ist nur bei einigen Updates ein Neustart erforderlich?

Warum erfordert Ubuntu keinen Neustart für weitere Updates? Ich weiß, dass bei Kernel-Updates und Dingen wie Grafiktreibern die Änderungen nicht ohne Neustart geladen werden können. Aber ich bin neugierig auf grundlegendere Updates von ziemlich grundlegenden Paketen, die oft keinen Neustart erfordern. Dinge wie Telepathy, glibc, gtk usw. Warum erfordern solche Pakete keinen Neustart, um aktualisiert zu werden? Läuft die neue Version tatsächlich direkt nach einem Update?

Ein anderes Beispiel wäre Gwibber. Ich habe kürzlich ein Update von gwibber über den Update Manager erhalten, während gwibber ausgeführt wurde. Das Update wurde erfolgreich abgeschlossen. Würde gwibber die neue Version ausführen, ohne sie manuell neu zu starten? Und ist das bei anderen Paketen auch so? (Ich weiß, dass manche wie MySQL und Apache bei einem Update automatisch neu starten). Kann dies bei Paketen, die nicht automatisch neu gestartet werden, nicht zu einem Sicherheitsproblem für Sicherheitsupdates werden?

Dies ist darauf zurückzuführen, dass ich seit ungefähr einer Woche mit OS X arbeite und fast jedes Update einen Neustart erfordert, auch wenn es nicht mit dem Kernel/Videotreiber zusammenhängt (soweit ich das beurteilen kann - sie geben Ihnen nicht viele Informationen) ). Ein Freund von mir sagte, dass Apple erzwingt einen Neustart bei den meisten Updates "nur für den Fall", es wäre seltsam, wenn Sie nicht neu starten. Windows ist das Schlimmste, da fast jede Installation/Deinstallation oder Aktualisierung erfordert ein Neustart (oft erzwingt er das Herunterfahren eine sehr lange Zeit) Dies mag für diesen Veranstaltungsort etwas allgemein sein, aber warum gehen die verschiedenen Betriebssysteme so unterschiedlich damit um? Warum folgt Ubuntu keiner strengeren Neustartrichtlinie?

18
gregghz

Wann immer Sie eine Datei in Windows öffnen oder ausführen, sperrt Windows die Datei an ihrem Platz (dies ist eine Vereinfachung, aber in der Regel wahr). Möglicherweise sind diese lästigen Fehler aufgetreten, bei denen Sie eine Datei nicht löschen können, weil ein anderer Prozess eine exklusive Sperre aufweist es. Aus diesem Grund müssen Sie jedes Mal, wenn Windows sich selbst aktualisieren muss, einen Neustart durchführen, damit die Aktualisierung wirksam wird. Windows reiht die Aktivitäten zum Ersetzen und Löschen von Dateien beim nächsten Start in eine Warteschlange ein (wenn nichts gesperrt ist).

Andererseits hat Linux einen Mechanismus, bei dem nicht die Datei gesperrt ist, sondern die zugrunde liegenden Daten auf der Festplatte. Dies mag trivial erscheinen, bedeutet aber, dass der Datensatz der Datei im Inhaltsverzeichnis des Dateisystems gelöscht werden kann, ohne ein Programm zu stören, in dem die Datei bereits geöffnet ist. So können Sie eine Datei löschen, während sie noch ausgeführt oder anderweitig verwendet wird, und sie bleibt auf der Festplatte bestehen, solange ein Prozess ein offenes Handle dafür hat, obwohl der Eintrag in der Dateitabelle weg ist. Auf diese Weise kann Linux ein Programm vollständig ersetzen, während es noch ausgeführt wird, und dann einfach das Programm neu starten oder einfach warten, bis der Prozess auf natürliche Weise beendet wird. Sobald die alte Instanz beendet ist, existieren die alten Dateien überhaupt nicht mehr und die neuen Dateien haben in ihren Einträgen in der Dateitabelle ihren Platz eingenommen.

Solange also eine bestimmte Datei in irgendeiner Weise nicht speziell ist (wie zum Beispiel die Kernel-Image-Datei oder Dateien, die zu ähnlich untergeordneten Systemen gehören), kann der Updater in der Regel eine solche Aktualisierung durchführen. Ich bin sicher, es gibt spezielle Fälle und Situationen, in denen dies keine gute Idee wäre, aber in den meisten Fällen ist es in Ordnung.

Was den Grund für OS X angeht, so klingt diese "nur für den Fall" -Theorie plausibel.

23
Andrew Lambert