Was ist die beste Vorgehensweise, um einen Linux-Ubuntu-Server auf dem neuesten Stand zu halten (Build-Pakete, Dist-Upgrade, Alt-Repos…)?

8

Wir betreiben einen Produktionsserver, der auf Ubuntu 9.10 Karmic Koala basiert. Der Kernel ist fast auf dem neuesten Stand (2.6.38.2-grsec-xxxx-grs-ipv6-64), aber das karmic- Paket-Repository ist jetzt lächerlich veraltet, z. Nginx ist 0.7.62 - wirklich fehlerhaft - während der neueste Stall 1.0.x ist !!

Außerdem hat Karmic gerade sein Lebensende erreicht.

Diese Frage: Best Practices, um UNIX-Pakete auf dem neuesten Stand zu halten? sieht ähnlich aus, enthält aber nur einige Vorschläge zu Paketmanagern; überhaupt nicht was ich brauche!

Die Optionen, die ich sehe, sind:

  1. Holen Sie sich eine neue Maschine, installieren Sie sie von Grund auf neu, migrieren Sie
  2. Distributions-Upgrade
  3. Verwenden Sie ein anderes Repository ( Launchpad / ppa / backport / pinning ).
  4. Bau dein eigenes

Die Nachteile von 1. liegen auf der Hand.

Ich wage es jedoch nicht, einen Dist-Upgrade-Pfad zu erstellen, da Ausfallzeiten und mögliche katastrophale Folgen für einen Produktionsserver einfach nicht vorhersehbar sind und derzeit hauptsächlich meine eigenen erforderlichen Pakete neu erstellen. Aber ich bin sicher, ich könnte einige vermissen.

Mir ist nicht wirklich klar, welche Risiken (Stabilität / Kompatibilität) bei der Verwendung von Ubuntu-Backports bestehen. Außerdem ist für 9.10 offiziell nichts mehr vorgesehen. Launchpad sind individuelle Builds, ähnliche Fragen - wie besser ist das, als eigene zu kompilieren.

Das Erstellen von Paketen scheint in Ordnung zu sein, aber: 1. Manchmal habe ich Probleme, die richtigen ./configure-Optionen zu reproduzieren, um meine vorhandenen Konfigurationsdateien wiederzuverwenden. 1. Ich bin sicher, dass es Unmengen von Paketen und Abhängigkeiten gibt, die jetzt ziemlich veraltet sind und möglicherweise als Quelle dienen von Fehlern

Endlich ... was ist mit 'alten' Paketen in einer aktuellen Distribution? Ich denke, es gibt keinen anderen Weg, als sie selbst wieder aufzubauen? Ist eine Kombination aus 2. und 4. endlich der beste Weg?

Gibt es einen objektiven Konsens darüber, wie dies am besten funktioniert, oder warum einige meiner Optionen in Ordnung / nicht in Ordnung sind?

Wenn dies wirklich nicht der Fall ist, werde ich akzeptieren, dass die Frage geschlossen wird, bevor ein endloser Thread erstellt wird!

Stefano
quelle
1
Aus Gründen, die derzeit auftreten, sollten nur LTS-Versionen für Server verwendet werden. Als Antwort auf Ihre Frage bleiben Sie bei # 4, bis Sie entweder # 1 oder # 2 machen können. Ich kann sehen, dass # 3 häufig fehlschlägt, wenn mehr Zeit vergeht, da keine Abhängigkeiten verfügbar sind.
Jim Ekleberry
in der Tat @KayakJim, obwohl wir es damals hätten herausfinden sollen - aber wenn die Serverlast gering gewesen wäre, wäre die Wartung akzeptabel gewesen, haben wir nicht weit genug vorausgedacht. Lektion gelernt (hoffentlich).
Stefano

Antworten:

4

Die Pflege Ihrer eigenen Distribution ist eine Menge Arbeit. Selbst wenn Sie die Backports pflegen, werden Sie bald von Sicherheitsproblemen überwältigt sein, die behoben werden müssen, und müssen Bibliotheken auf niedriger Ebene abrufen, um Ihre Software weiter zu aktualisieren, was andere Probleme verursachen könnte (ich unterhalte Server, auf denen 6 Jahre alte Distributionen ausgeführt werden) kein Spaß).

Ein Upgrade ist im Allgemeinen eine gute Lösung. do-release-upgradeist gut gemacht und Sie sollten in der Lage sein, ohne Probleme zu aktualisieren (insbesondere wenn Sie nur offizielle Pakete verwendet haben).

Meine Lieblingslösung könnte jedoch der Neuinstallationspfad sein. Insbesondere sollten Ihre Server mit einem Konfigurationsverwaltungssystem wie Puppet, Cfengine oder Chef verwaltet werden. Wenn alle Ihre Konfigurations- / Paketanforderungen mit einem solchen Tool angegeben werden und Ihre Daten auf einer separaten Partition sicher sind, ist eine schnelle Neuinstallation viel einfacher. Sie installieren einfach eine neue Distribution, ohne die Datenpartitionen zu löschen, und führen dann das Konfigurationsverwaltungstool aus, um Ihre Pakete / Konfigurationen zurückzusetzen. Ich glaube, dies ist der sauberste Weg, insbesondere wenn Sie mehrere Server verwalten müssen.

Wenn Sie nicht offizielle Pakete verwenden, möchten Sie diese möglicherweise vor dem Upgrade / der Neuinstallation identifizieren. Mithilfe der Wartungsprüfung können Sie die Pakete identifizieren, die nicht offiziell von Ubuntu verwaltet werden:

$ bzr branch lp:ubuntu-maintenance-check
$ cd ubuntu-maintenance-check
$ ./maintenance-check -f n

Wenn Sie neu installieren möchten, können Sie auch die Liste der installierten Pakete exportieren:

$ dpkg --get-selections > myinstall.txt

und Ihre Debconf-Datenbank:

$ debconf-get-selections > debconf.txt # from the debconf-utils package

Da Sie derzeit Karmic verwenden, ist ein Upgrade auf Lucid, eine LTS-Version, die bis 2015 für die Hauptserverpakete noch unterstützt wird, möglicherweise nicht zu gewalttätig. Dies sollte Ihnen genügend Zeit lassen, um eine funktionsfähige automatisierte Installation für die Zukunft einzurichten.

Wenn Sie nach Launchpad-Paketen fragen, meinen Sie vermutlich PPAs. Es gibt Unmengen verschiedener PPAs. Einige sind experimentell, andere stabil. Einige werden von offiziellen Ubuntu-Entwicklern gepflegt, andere von Leuten, die kaum wissen, wie man ein Paket richtig macht. Es ist im Allgemeinen schwer zu sagen, ob Pakete, die Sie auf PPAs finden, gut sind. Es gibt keine allgemeine Regel. Der beste Hinweis in diesem Fall könnte sein, dass Sie sich den Eigentümer der PPAs ansehen, um sich ein Bild von der möglichen Qualität ihrer Pakete zu machen.

ℝaphink
quelle
Natürlich haben wir nicht an Puppet & Co. gedacht. damals. Aber in der Tat machen Sie einen sehr guten Punkt: Wenn wir den Pfad der Neuinstallation einschlagen, ist es besser, eine einfach zu replizierende Installation ordnungsgemäß vorzubereiten. PS. "vor allem, wenn Sie nur offizielle Pakete verwendet haben" natürlich nicht, unglücklicherweise!
Stefano
Der erste Schritt, den Sie möglicherweise unternehmen möchten, besteht darin, die nicht offiziellen Pakete zu identifizieren. maintenance-checkkann dir dabei helfen (siehe meine Bearbeitung).
inkaphink
Ausgewählte Antwort auf die zusätzlichen Tipps, einschließlich der Verwendung von Conf-Managementsystemen und Wartungsprüfungen sowie Informationen zu PPAs. Nachdem ich mir die neuesten Repositories angesehen hatte, wurde mir gerade klar, dass Pakete nicht immer auf dem neuesten Stand sind, z. Selbst in 11.04 ist die Nginx-Version ALT (0.8.54-4) und sie werden in dieser Distribution niemals auf 1.0.x umsteigen. Irgendwelche Ratschläge für diese Situationen?
Stefano
1
@Stefano: Ubuntu verwendet die gleiche Art von Richtlinie wie Debian, dh, dass Software nach der Veröffentlichung (genauer gesagt nach dem Einfrieren der Funktionen) in den Haupt-Repositorys nicht aktualisiert wird. Dies kann in der Tat zu alten Softwareversionen in einer noch gepflegten Version führen (insbesondere wenn die Software schnell veröffentlicht wird). Sie können Backports verwenden, um neue Versionen zu erhalten, aber Sie werden wahrscheinlich an Stabilität und Sicherheitsupdates verlieren. Es gibt keine perfekte Lösung dafür, es sei denn, Sie sind bereit, Ihre eigenen Backports zu pflegen, was, wie ich bereits sagte, ziemlich kostspielig ist.
inkaphink
2

Wenn der Server nicht der Welt ausgesetzt ist und Sie Ihren Benutzern absolut vertrauen (im Allgemeinen ist das keine gute Idee), können Sie ihn einfach stehen lassen, wenn er funktioniert.

Wenn es in irgendeiner Weise der Außenwelt ausgesetzt ist und / oder Sie die Idee haben, dass ein legitimer Benutzer auf illegitime Weise damit spielt, benötigen Sie unbedingt Korrekturen und Patches für Ihre installierte Software.

In diesem Fall haben Sie zwei Möglichkeiten:

  1. Führen Sie eine unterstützte Distribution aus und erhalten Sie Updates für Ihre Software oder

  2. Backportieren Sie alle Korrekturen an Ihrer nicht unterstützten Distribution, was offen gesagt nicht machbar erscheint.

Ich bin kein Ubuntu-Benutzer, daher kann ich die Vollständigkeit der Patches, die Sie durch Ihre Option 3 erhalten würden, nicht kommentieren. Wenn Sie jedoch Zweifel haben, würde ich davon ausgehen, dass Sie keine vollständige Abdeckung haben.

Die beste Lösung besteht darin, auf eine LTS-Version von Ubuntu umzusteigen, die Ihnen für einige Zeit Unterstützung für die angegebenen Paketversionen bietet. Mit der Zeit werden einige der Pakete veraltet sein, aber Ihre Umgebung verfügt über Sicherheitspatches und ist stabil (keine Probleme mit der Paketversion). Nach meiner Erfahrung ist die Stabilität einer bekannten Arbeitsumgebung normalerweise wertvoller als neue Funktionen.

Es scheint, dass Ihre aktuelle Position nicht aufrechterhalten werden kann und Sie sich bewegen müssen. Der einzig sichere Weg besteht darin, eine zweite Maschine (oder eine virtuelle Maschine) zu erwerben und Migrationen zu testen, bis Sie eine wiederholbare erfolgreiche Prozedur haben, und diese dann auf die Produktionsmaschine anzuwenden. Wenn Sie Ihre Backups für Testmigrationen verwenden, haben Sie eine gute Gelegenheit, auch Ihre Backup-Verfahren zu testen.

Paweł Brodacki
quelle
danke @ Pawel-Brodacki. Der Server ist definitiv ausgesetzt! Ich verstehe Ihren Standpunkt zur Stabilität gegenüber Funktionen. Das Problem ist, dass Stabilität häufig mit wichtigen Versionsschritten einhergeht. Z.B. Die Serie nginx 1.0. * ist stabiler als die Serie 0.8, die selbst in der neuesten Version von natty enthalten ist. Irgendwelche Vorschläge dazu?
Stefano
1
Wenn es derzeit gut genug ist, gilt die Regel "Wenn es nicht kaputt ist, beheben Sie es nicht". Danach ist es eine Geschäftsberechnung: Durch zusätzliche Stabilität sparen Sie mehr, als es kostet, eine Reihe von Paketen selbst zu warten. Wenn es sich nur um Nginx oder Nginx und eine Handvoll Bibliotheken handelt, können Sie selbst kompilieren, testen und bereitstellen. In diesem Fall wäre es jedoch ratsam, die Entwicklung der Pakete genau zu verfolgen, um entdeckte Fehler schnell zu schließen.
Paweł Brodacki
2

Der einzige wirkliche Weg nach vorne ist ein Distributions-Upgrade. Ich kann verstehen, dass Sie darüber nervös sind, da Sie jetzt mehrere Veröffentlichungen vor sich haben werden (11.04 wurde gerade veröffentlicht).

Ich würde empfehlen, einen Klon der Laufwerke in diesem Computer zu erstellen und dann einen separaten Computer zu verwenden, um mit den Klonen zu arbeiten, und damit eine Reihe von Test-Upgrades durchzuführen. Machen Sie sich Notizen zu allen aufgetretenen Problemen und wiederholen Sie diese, bis Sie ein klares Verfahren für alle Probleme haben. Wenden Sie dies dann auf Ihren Live-Server an.

Wenn Sie sich keine Ausfallzeiten leisten können, ist die Migration Ihr einziger Ausweg. Vergessen Sie die Pinning und Backports, die Sie nur für einen begrenzten Zeitraum am Leben halten. Und die Option "Roll your own" ist nicht einmal eine Überlegung wert. Nur meine 2 Pennies wert.

wolfgangsz
quelle