Wie aktualisiere ich die von der Quelle installierte Software?


10

Ich installiere NGinx aus dem Quellcode, da die Pakete aus dem Ubuntu-Repository ziemlich alt sind. Ich habe mich gefragt, was die beste Methode ist, um diese Art von Installationen zu aktualisieren.

Mein aktueller Workflow beinhaltet.

  • Herunterladen der neuen Quelle
  • Installieren Sie die Software mit denselben Pfaden.
  • Neustart der Software.

Etwas sagt mir, dass dies nicht die beste Route ist.

Vorschläge?

Antworten:


9

Sie denken zu Recht, dass dies nicht die beste Route ist. Diese Route erfordert viele manuelle Schritte, ist sehr fehleranfällig und lässt sich nicht gut skalieren.

Wenn Sie mit Linux-Distributionen arbeiten, sollten Sie sich so weit wie möglich an die Paketverwaltung halten.

Die Vorteile der Paketverwaltung:

  • Abhängigkeitsunterstützung
  • Einfache Installation / Entfernung
  • Software-Inventar
  • Upgrade- / Downgrade-Unterstützung, einschließlich der Handhabung von Konfigurationsdateien
  • Das Quellpaket dokumentiert im Wesentlichen Ihren Erstellungsprozess und automatisiert ihn für Sie, sobald er geschrieben wurde.
  • Paketsignierung
  • und mehr.

Wenn Sie nur von der Quelle aus arbeiten, verlieren Sie all diese großartigen Funktionen, und die Dinge werden ziemlich schnell chaotisch.

Um Ihr spezielles Problem zu lösen, sollten Sie das Ubuntu-Backports-Repository überprüfen. Möglicherweise verfügen sie über eine aktualisierte Version für NGinx, die Sie verwenden können.

Wenn sie keine geeignete Version haben, besteht die beste Lösung darin, selbst ein backportiertes Ubuntu-Paket zu erstellen. Es ist wirklich nicht so schwer und es ist weniger Arbeit, als es jedes Mal manuell aus dem Quellcode zu kompilieren. Für das Backporting muss im Grunde genommen das Quellpaket von Ubuntu übernommen, die alte Datei upsteam tar.gz durch die neueste Datei ersetzt und das Paket neu erstellt werden.

Sie können mit dieser Anleitung , um Ihnen das Paket zurückzuportieren.


8

Ich fand es sehr praktisch, verschiedene Versionen an verschiedenen Orten zu installieren und nur einen Symlink zu der Version zu erstellen, die Sie verwenden möchten, wie zum Beispiel:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Die Vorteile sind:

  • Minimierte Service-Ausfallzeiten während eines Upgrades
  • einfaches Rollback
  • Sie können immer noch den gleichen Pfad verwenden, wie z /usr/local/foo/bin/bar

Natürlich müssen Sie alle Konfigurationsänderungen, die Sie an der vorherigen Version vorgenommen haben, erneut anwenden, aber dafür können Sie ein Versionsverwaltungssystem (RCS / SVN / GIT) oder ein Konfigurationsverwaltungstool wie Bcfg2 verwenden .

Und natürlich ist dies nur für eine Handvoll oder weniger Gastgeber geeignet.


Dies ist, was ich in den wenigen Fällen mache, in denen das Erstellen von Paketen keine geeignete Antwort ist, außer ich verwende normalerweise / opt anstelle von / usr / local.
Freiheit

2

Nächstes Mal ... wie wäre es damit, es in eine * .rpm oder * .deb zu kompilieren?


1

Wenn Sie dies auf einem einzelnen Computer installieren möchten, ist es am besten, dies jedes Mal von der Quelle aus zu tun. Wenn Sie dies auf mehreren Computern installieren und sicherstellen möchten, dass es konsistent ist, lohnt es sich wahrscheinlich zu lernen, wie man Debian-Pakete erstellt. Sie könnten wahrscheinlich die Verpackung in Ubuntu als Basis verwenden.


1

Es gibt keinen guten Weg. Der Grund für die Schaffung eines effektiven Paketmanagements war die Lösung dieses Problems. Das Aktualisieren und Deinstallieren von quellkompilierten Dingen ist schwierig.

Ich stimme Tom und David zu.

Wenn dies ein einmaliger Fall ist, ist das erneute Kompilieren aus dem Quellcode wahrscheinlich die beste Wahl. Wenn es sich auf einer Reihe von Computern befindet, ist es definitiv an der Zeit, zur unterstützten Paketverwaltung zu wechseln.


0

Ich fürchte, das ist der einzige Weg. Wenn Sie mehr Server warten müssen, sollten Sie eine separate Testumgebung in Betracht ziehen, in der Sie das Ergebnis Ihrer Kompilierung kompilieren und möglicherweise verpacken.

Dadurch werden Ihre Setups leicht standardisiert und die Bereitstellung auf vielen Servern vereinfacht. Außerdem benötigen Sie auf Produktionsmaschinen kein gcc [was viele als Sicherheitsvorteil betrachten].

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.