"Reue des Käufers" mit apt

7

Heute Morgen habe ich einige Updates installiert, die mich gefragt haben, ob ich Konfigurationsdateien ersetzen möchte:

Configuration file '/etc/apache2/envvars'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** envvars (Y/I/N/O/D/Z) [default=N] ? N

Ich habe meine aktuelle Konfiguration beibehalten, aber danach habe ich mich gefragt:

Gibt es eine Möglichkeit zu sehen, wie die neue Konfigurationsdatei nachträglich ausgesehen hätte?

Bio-Marmor
quelle
In diesem Verzeichnis befanden sich einige Dateien, aber keine aus dem apache2heute Morgen durchgeführten Update.
Bio-Marmor
1
Wo ein Wille ist, ist auch ein Weg! ;-)
Elder Geek

Antworten:

5

Ich habe dies nicht getestet, aber die Logik schreibt vor, dass Sie die Datei überprüfen können, die in dem Paket enthalten ist, das aktualisiert wurde. Ich gehe davon aus, dass das Apache2-Paket für Ihre aktuelle Distribution auf dieser Seite ausgewählt werden kann (Sie können dies bestätigen, indem Sie Ihre dpkg.log überprüfen).

DEB-Dateien sind Archive, die immer die drei Dateien debian-binary, control.tar.gz und data.tar.gz enthalten. Wir können den Befehl dpkg-deb und tar verwenden, um die Dateien aus dem deb-Paket zu extrahieren und anzuzeigen, wie unten gezeigt.

Extrahieren Sie einfach die Dateien aus dem Paket an einen temporären Speicherort. Als Beispiel: dpkg-deb -x packagename.deb /tmpPassen Sie den Paketnamen und den Zielspeicherort nach Bedarf an.

Nachdem Sie den Inhalt des Pakets extrahiert haben, extrahieren Sie als Nächstes den Inhalt der enthaltenen data.tar.gz-Komponente mit tar -xvzf data.tar.gz

Suchen Sie die enthaltene envvars-Datei (Sie können sie find ./ -name envvarsan dem Speicherort verwenden, an dem Sie die Datei data.tar.gz extrahiert haben.

Nachdem Sie die Datei gefunden haben, navigieren Sie zu diesem Verzeichnis und verwenden Sie diff envvars /etc/apache2/envvarsdiese Option, um die Unterschiede zwischen Ihrer aktuellen und der vorgeschlagenen Konfigurationsdatei anzuzeigen. Quellen:

http://www.thegeekstuff.com/2010/04/view-and-extract-packages/

man dpkg

man dpkg-deb

man diff

Elder Geek
quelle
3

Ich akzeptiere die Antwort von Elder Geek , weil sie funktioniert und am allgemeinsten anwendbar zu sein scheint, ohne zu arbeitsintensiv zu sein. Waltinators Antwort scheint mir, dass es funktionieren würde, aber ich bin misstrauisch, es neu zu installieren.

Ich habe mir jedoch zwei zusätzliche Möglichkeiten ausgedacht, um dieses Problem anzugehen.

  1. Ich habe einen Klon meines Servers, der in einer Virtualbox-VM ausgeführt wird. Ich habe einen Snapshot erstellt, das Update angewendet (die Versionen des Paketverwalters ausgewählt), diese Versionen auf ein freigegebenes Laufwerk kopiert, dann den Snapshot gelöscht und das Update für Reals durchgeführt.

    Nachteil: Normalerweise führe ich das Update zuerst in der virtuellen Maschine vor der realen Maschine durch, daher müsste ich wissen, dass ich zuerst den Schnappschuss machen muss. Vielleicht ist dies eine gute Vorgehensweise, bevor Sie ein Apache2-Update anwenden? Ich werde darüber nachdenken müssen.

  2. Dies ist die einfachste Antwort von allen, aber ich weiß nicht, ob sie allgemein anwendbar ist. Ich habe verwendet aptitudeund aktualisiert apache2und im /etc/apache2/Ordner Kopien der Konfigurationsdateien des Paketverwalters gefunden, die ich abgelehnt hatte! Sie wurden benannt apache2.conf.dkpg-distund envvars.dpkg-dist! Wie cool ist das?

Nachteil: Ich weiß nicht, ob dies nur mit aptitudeund \ oder passiert apache2, dies ist möglicherweise nicht allgemein anwendbar.

Bio-Marmor
quelle
3
Ihre Erkenntnisse aus Abschnitt 2 gelten allgemein. Das Programm, das während der Paketinstallation wie in Ihrer Frage Dialoge anzeigt, erstellt auch "Backups" der alten und der neuen Konfigurationsdateivariante (je nachdem, welche Sie verwendet haben).
David Foerster
Ehrlich gesagt sollte Punkt 2 die akzeptierte Antwort sein, aus dem Grund, den David angibt.
Muru
1

Sie können die Bedingung neu erstellen und anders auswählen.

Kopieren Sie zunächst an einen /etc/apache2/envvarssicheren Ort, damit Sie ihn im schlimmsten Fall wiederherstellen können.

dpkg -S /etc/apache2/envvarsteilt uns mit, dass dies /etc/apache2/envvarsTeil des apache2Pakets ist, sodass Sie es über Folgendes neu installieren können:

sudo apt-get install --reinstall apache2
Walzer
quelle