Warum aktualisiert sich nicht paketverwaltete Software nicht von selbst?

Warum aktualisiert sich nicht paketverwaltete Software nicht von selbst?

Ich bin ein Benutzer von Debian-basierten Distributionen – Debian, Ubuntu, Linux Mint. Ich weiß, dass die neuesten Softwareversionen oft nicht in den Repos enthalten sind, daher lade ich sie häufig direkt aus der Quelle herunter und installiere sie.

Mir fällt jedoch auf, dass diese Software Sie selten über ein Update informiert. Außerdem habe ich noch nie bemerkt, dass sich eine davon tatsächlich selbst aktualisiert und dann nur um Erlaubnis zur Installation bittet.

Liegt es daran, dass unter Programmierern allgemein davon ausgegangen wird, dass die Linux-Versionen über den Paketmanager aktualisiert werden?

Antwort1

Die Implementierung dieser Art von Funktion ist ziemlich schwierig, sowohl was das „Calling Home“ (um zu sehen, ob es ein Update gegeben hat) als auch was die „Aktualisierung vor Ort“ betrifft:

  • die auf dem System des Benutzers ausgeführte Software muss wissen, wie sie prüft, ob eine neuere Version verfügbar ist (was bedeutet, dass Ihrer Anwendung Netzwerkcode hinzugefügt werden muss, der möglicherweise keinen anderen Grund hat, das Netzwerk zu verwenden);
  • die Software muss unabhängig von den Netzwerkbedingungen funktionieren, denen sie ausgesetzt ist (natürlich, wenn sie vollständig offline ist, aber sie sollte auch nicht mit seltsamen Fehlern ausfallen, wenn sie nur teilweise verbunden ist);
  • Sie müssen in der Lage sein, zu entscheiden, ob eine neuere Version verfügbar ist (wie vergleichen Sie Versionen, wenn Benutzer aus dem Quell-Repository erstellen?).
  • Sie müssen irgendwo einen Server mit der Serverseite der Dinge haben, den Sie möglicherweise auch entwickeln müssen.
  • Sie müssen sicherstellen, dass Updates weder auf dem Server noch durch einen Man-in-the-Middle-Angriff kompromittiert werden können (Sie müssen also TLS und/oder eine Art starke Signatur verwenden).
  • Sie müssen Aktualisierungen in einer für Ihre Benutzer nutzbaren Form verfügbar machen. Möglicherweise haben sie die Software ursprünglich aus dem Quellcode erstellt, aber es besteht keine Garantie dafür, dass das System, auf dem sie die Software ausführen, über alles verfügt, was zum Erstellen einer neueren Version aus dem Quellcode erforderlich ist. Sie müssen also Binärdateien bereitstellen (für alle möglichen Zielplattformen?).

(Dies ist keine vollständige Liste.)

Dies sind alles Probleme, die von Distributionen behandelt wurden, daher ist es einfacher, die Distributionen die Dinge erledigen zu lassen. Darüber hinausKusalanandaerklärt hat, ist es Benutzern, denen die neueste Version einer Software wichtig ist, wahrscheinlich wichtig genug, dass sie zumindest einer Ankündigungs-Mailingliste folgen, damit sie auf diesem Weg benachrichtigt werden.

Ein weiterer zu berücksichtigender Aspekt ist, dass eine beträchtliche Anzahl von Leuten nicht möchte, dass die von ihnen verwendete Software in irgendeiner Weise nach Hause telefoniert. Einige Distributionen gehen so weit,entfernenCode, der dies tut, aus der Software, die sie verteilen, oder sogar andere Teile der Software, die verwendet werden können, um ihre Verwendung zu verfolgen (z.BDokumentation, die Bilder, Schriftarten oder CSS aus dem Internet lädt). Alle „Datenschutzverletzung“-Tags finden Sie inDebians LintianZum Beispiel.

All dies erklärt, warum es so wenige Softwareprogramme gibt, die über die notwendigen Mechanismen verfügen, um selbst Aktualisierungsinformationen bereitzustellen, und noch weniger, die sich selbst aktualisieren können.

Es gibt andere Möglichkeiten, das „Problem“ zu lösen: Softwareentwickler, die ein CI-System verwenden, können dieses normalerweise erweitern, um „nächtliche“ Builds in einer Art nutzbarer Form (als Pakete) bereitzustellen. Interessierte Benutzer können ihre eigenen Build-Systeme einrichten, um regelmäßig aktualisierte Quellen für die Software abzurufen, die sie interessiert (dies ist in Unternehmenskontexten recht üblich). Oder Sie können Pakete im AUR-Stil einrichten, die sich selbst aus den neuesten Quellen erstellen.

Antwort2

Sofern die Software selbst nicht die Möglichkeit hat, „nach Hause zu rufen“, um nach Updates zu suchen, wie einige Browser und Dinge wieSynchronisationscheint in der Lage zu sein, gibt es normalerweise keinen Mechanismus, der den Benutzer/Administrator automatisch darauf aufmerksam machen kann, dass eine neuere Version der Software verfügbar ist.

Die Pakete, die Sie mit Ihrem Paketmanager installieren, werden von Menschen erstellt, also von Benutzern, die wahrscheinlich ein Interesse daran haben, die Pakete auf dem neuesten Stand und auf den für sie wichtigen Betriebssystemen funktionsfähig zu halten.

Jemand, der verpackt, z. B.Ansible, oderGNU-Kerndienstprogramme, oderdie Yash-Shell, oderCMakeoder andere der Tausenden von Softwareprojekten für ein bestimmtes Unix-System sind höchstwahrscheinlich (aber nicht notwendigerweise) bei den entsprechenden Mailinglisten für diese Projekte angemeldet und/oder verfügen über spezielle Tools zum regelmäßigen Überwachen von Quellcode-Repositorys oder Quellverteilungsdateien. Wenn sie von einer neuen Version erfahren, werden sie die Software herunterladen, kompilieren, testen, patchen (usw.) und verpacken, je nach den Verpackungsverfahren auf ihrem Unix. Dies kann die Kommunikation sowohl vorgelagert (an den Entwickler der Software) als auch nachgelagert (an die Benutzer der Software) über Inkompatibilitäten oder andere Probleme umfassen, die beim Erstellen/Verpacken auftreten.

Anschließend werden sie, je nachdem, mit welchem ​​Unix sie arbeiten und wie die Paketverteilung durch Drittanbieter funktioniert, das Paket irgendwie registrieren, hochladen oder festschreiben, sodass Benutzer wie Sie und ich unsere Paketmanager zum Aktualisieren unserer Systeme verwenden können.

Mir ist zum Beispiel wichtig,GNU Stowfür OpenBSD verfügbar (ich bin der „Port-Betreuer“ für diese Software). Ich überprüfe von Zeit zu Zeit den aktuellen Status von Stow auf der GNU-Website (sie wird nicht sehr oft aktualisiert), und wenn ich eine neue Version entdecke, installiere ich sie und stelle sicher, dass sie funktioniert, und aktualisiere den OpenBSD-Port auf meinem privaten Rechner. Dann sende ich eine E-Mail mit einem Patch für den Port an die OpenBSD-Portliste (Ports werden unter OpenBSD als Satz von Makefiles verteilt). Jemand mit Commit-Rechten stellt dann sicher, dass mein Patch sauber angewendet wird und dass der Port korrekt aussieht, bevor er ihn in den CVS-Baum der OpenBSD-Ports einbindet.

Wenn ein Benutzer das nächste Mal den CVS-Baum aktualisiert und den Port neu erstellt oder den Binärport herunterlädt, der schließlich angezeigt wird, wird seine GNU Stow-Installation aktualisiert.GNU Stow weiß jedoch nicht selbst, ob eine neue Version von ihm verfügbar ist.Das ist einfach nicht die Aufgabe von GNU Stow. Es ist ein Tool, mit dem man Drittanbieter-Software in eigenständigen Verzeichnishierarchien installieren kann, und es wäreernsthaft seltsamwenn es bei jeder Verwendung versucht, „nach Hause zu telefonieren“ (so merkwürdig, als ob lszum Ausführen plötzlich Netzwerkzugriff erforderlich wäre).

Software-Updates einzeln durchzuführen, ist in vielen Fällen unerwünscht, da viele Komponenten eines Systems gemeinsam getestet werden müssen. Die dafür benötigte Infrastruktur würde kleinere Pakete zudem stark aufblähen, und es wäre für Einzelpersonen, denen das Know-how oder die Ressourcen fehlen, um einen hochverfügbaren Update-Server zu betreiben, unmöglich, Software zu entwickeln, die sich automatisch auf dem neuesten Stand hält.

Antwort3

Früher wurden Computer von Fachleuten verwaltet, die bei Bedarf neue Software installierten.

Im Laufe der Zeit haben sich bei verschiedenen Betriebssystemen zwei unterschiedliche Traditionen herausgebildet, um die Last der manuellen Aktualisierung von Software zu verringern.

  • Unter Linux und den meisten anderen modernen Unix-Varianten verfügt das Betriebssystem über einePaket-Manager. Die meiste Software wird über diesen Paketmanager installiert und der Paketmanager aktualisiert die Software, wenn eine neue Version verfügbar ist.
  • Da Windows bis vor kurzem noch keinen Paketmanager hatte, haben sich die Anbieter von Windows-Software daran gewöhnt, für die Installation von Updates eigenen Code zu verwenden.

Der Paketmanager-Ansatz eignet sich besonders gut für die Open-Source-Welt, da Open-Source-Software aus Tausenden von Paketen besteht, die unabhängig voneinander entwickelt und zusammengefügt werden. Beim Zusammenfügen von Paketen kann viel schiefgehen, daher bieten die meisten Linux-Distributionen einen konsistenten Satz, genanntfreigeben. Einige Distributionen haben „Rolling Releases“, bei denen die einzige Konsistenzprüfung darin besteht, dass die Software kompiliert wird. Andere haben mehr Tests und stellen nur ein- oder zweimal im Jahr oder sogar alle paar Jahre eine neue Version bereit.

Ein Vorteil des Linux-Ansatzes gegenüber dem Windows-Ansatz besteht darin, dass Softwarepakete zusammenarbeiten können. Dies ist beim Windows-Ansatz schwierig, denn wenn Software A und Software B etwas gemeinsam tun möchten, müssen sie überwachen, ob ihr Partner installiert ist, mit Upgrades zurechtkommen, darauf achten, dass bei der Deinstallation keine Krümel zurückbleiben … Aus diesem Grund muss Windows-Software insbesondere alle von ihr verwendeten Bibliotheken bündeln. Das bedeutet, dass bei einem Fehler in der Bibliothek die gesamte Software, die die Bibliothek verwendet, aktualisiert werden muss. Im Gegensatz dazu muss unter Linux nur das Paket aktualisiert werden, das die Bibliothek enthält, unabhängig davon, wie viele Programme es verwenden.

Da das Betriebssystem einen Mechanismus für Softwareaktualisierungen bereitstellt, müssen Autoren von Linux-Software das Rad nicht neu erfinden.

Es besteht selten die Notwendigkeit, neuere Softwareversionen zu installieren, als die, die Ihre Distribution bereitstellt. Neuere Software ist im Allgemeinen nicht weniger fehlerhaft. Distributionen stellen Updates bereit, wenn ein schwerwiegender Fehler gefunden wird (insbesondere Sicherheitslücken). Eine neuere Version einer Software ist nur dann nützlich, wenn diese Version eine neue Funktion hat, die Sie gebrauchen können.

Wenn Sie die neueste Softwareversion auch dann haben möchten, wenn Sie sie nicht benötigen, sollten Sie eine Rolling-Release-Distribution wie Debian unstable oder Arch Linux installieren. Distributionen mit zusammenhängenden Releases wie Ubuntu, Mint oder Debian stable sind für Leute gedacht, die ihr System nicht jede Woche kaputt machen möchten.

Antwort4

Die anderen Antworten sind gut, aber ich möchte etwas hinzufügen, was in keiner davon prominent angesprochen wurde: das Sicherheitsproblem.

Die Installation von Software (zumindest die systemweite Installation) erfordert im Allgemeinen Root-Zugriff. Sie vertrauen darauf, dass der Paketmanager Ihrer Distribution und die Personen, die die Software verpacken, dieses Privileg angemessen nutzen, aber Sie vertrauen nicht unbedingt darauf, dass jede beliebige Software, die Sie installiert haben, es richtig macht.

verwandte Informationen