Warum enthalten Paketnamen Versionsnummern?


15

Während der Arbeit mit Ubuntu und anderen Debian-basierten Distributionen ist mir aufgefallen, dass Pakete in den Software-Repos oft die Hauptversionsnummer enthalten.

Beispielsweise,

  • Apache: apache2
  • Kater: tomcat7
  • PHP: php5
  • Wein: wine1.4
  • MySQL: mysql-server-5.5

Mir ist jedoch aufgefallen, dass kein apache1Paket verfügbar ist, und im Übrigen ähnliches. Wenn sich der Name des Pakets mit Updates der Software ändert, steht dies nicht einem der Hauptziele der Paketverwaltung im Wege (einfache Upgrades)?

Wenn Apache 3 morgen veröffentlicht wird, muss ich das apache3Paket dann manuell installieren , wenn ich ein Upgrade durchführen möchte? `

Antworten:


26

Pakete werden so benannt, dass der Übergang zwischen zwei Hauptversionen eines Pakets erleichtert werden musste (oder musste) und die dafür erforderliche Zeit voraussichtlich lang ist. Während der Übergangszeit werden sowohl neue als auch alte Versionen verfügbar gehalten, mit der Maßgabe, dass die älteren Versionen zu einem späteren Zeitpunkt eingestellt werden.

Manchmal tritt die Übergangszeit während der aktuell verwendeten Systemversion auf. Bei einigen Paketen kommt es häufig genug vor, dass in jeder neuen Systemversion Übergangspaketversionen zu erwarten sind . Software-Entwicklungstools fallen häufig in diese Kategorie, da ein Upgrade auf neue Tools nach dem gleichen Zeitplan wie bei System-Releases möglicherweise nicht praktikabel ist. Die Abhängigkeit meines Unternehmens von bestimmten Versionen von GCC, Autoconf und Perl beträgt möglicherweise 5 Jahre, während sich mein Betriebssystem in einem 3-Jahres-Aktualisierungszyklus befindet. Es erleichtert mir daher die Einführung neuer Betriebssysteme, wenn meine älteren Versionen einiger Pakete zusätzlich zu den zum Zeitpunkt der Entwicklung des neuen Betriebssystems aktuellen Versionen enthalten sind.

In anderen Fällen haben sich diese wichtigen Versionsänderungen vor langer Zeit ereignet, und jetzt ist jeder auf der aktuellen Version. Dies ist beispielsweise bei Apache der Fall. Die Änderung von 1.3 auf 2.0 war aus Kompatibilitätsgründen weitaus umfangreicher als alle Änderungen an der 2.x-Version, sodass es nicht länger erforderlich war, in einer bestimmten Betriebssystemversion mehrere Apache-Versionen anzubieten, sobald alle Versionen von 1.3 entfernt waren. Wenn Sie jedoch alle Benutzer des apache2Pakets dazu gebracht haben, gibt es kein gutes Argument , das Paket wieder in "Nur" umzubenennen apache. Das würde einen unnötigen Upgrade-Aufwand verursachen. Wo in der Vergangenheit ein Bedürfnis nach zeitweiliger Bereitstellung von zwei parallelen Versionen vermutet wurde, wird sich dieses Bedürfnis wahrscheinlich in Zukunft wiederholen.

Diese Methode zur Benennung von Paketen tritt normalerweise nur bei Bibliotheken oder wichtigen Kernpaketen auf. Für weitere Peripherie-Pakete wird erwartet, dass Sie nur auf die jeweils aktuelle Version aktualisieren.

Bibliotheken werden auf diese Weise häufiger behandelt als Anwendungen, da andere Pakete von ihnen abhängen. Je beliebter eine Bibliothek ist, desto unpraktischer ist es, zu verlangen, dass jedes andere Paket, das von ihr abhängt, neu erstellt und mit ihr verknüpft wird, damit die Bibliothek ohne diese Übergangszeit schrittweise auf eine neue Hauptversion aktualisiert werden kann.

Wenn eine Anwendung auf diese Weise behandelt wird, liegt dies häufig daran, dass sie ein Bibliothekselement enthält. Beispielsweise ist Apache nicht nur ein Webserver, sondern bietet auch eine Entwicklungs-API für die Plugins. ( mod_foound so weiter.) Wenn jemand ein altes mod_somethingmit dem Apache 1.3-Plugin ABI verknüpft hat und es nicht auf die Verwendung der neueren 2.0-API aktualisiert hat, ist es praktisch, wenn Ihr Betriebssystem weiterhin den alten Apache 1.3 anbietet, bis alle Plugin-Ersteller eine Chance haben um ihre Plugins zu aktualisieren.


3

Nach allem, was ich gesehen habe, sind Gründe dafür:

  • Helfen Sie bei der Migration in Hauptversionen von Paketen: Als PHP 5 veröffentlicht wurde, musste möglicherweise PHP 4 installiert werden. Dies erlaubt einem die Wahl zwischen Versionen (zumindest bis die ältere Version veraltet ist).

  • Stellen Sie weiterhin Updates für eine ältere Version einer Software bereit (z. B. nachdem Apache 3 veröffentlicht wurde, wird möglicherweise ein Patch für Apache 2 benötigt), ohne dass ein Upgrade auf eine neuere Hauptversion durchgeführt werden muss.

ZB hat der Linux-Kernel (ab heute) die stabilen Versionen 3.5, 3.4.7, 3.2.24, 2.6.35.13 usw. Wenn Sie 2.6.35 auf einem System ausführen und es auf dem neuesten Stand halten möchten, Um diesen Kernel auf den neuesten Stand zu bringen, aber nicht zu aktualisieren, können Sie das entsprechende Paket installieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.