Ich füge nur einige Probleme mit meinen virtuellen Debian-Servern hinzu und füge hinzu, um alle von Grund auf neu zu installieren. Ich hatte jedoch immer noch Zugriff auf die alte Version und konnte die Liste der installierten Pakete abrufen.
Um die Wiederherstellung eines virtuellen Servers in Zukunft zu vereinfachen, möchte ich für jeden meiner Server eine Liste spezifischer Pakete erstellen.
Um besser zu erklären, was ich erreichen möchte. Ich habe bereits einen automatisierten Prozess zum Erstellen eines neuen virtuellen Servers mit einigen grundlegenden Paketen und Konfigurationen, die überall verwendet werden. Jetzt möchte ich das Delta mit diesem "Skelett" speichern, um die Neuinstallation eines bestimmten Servers zu vereinfachen.
Ein echtes Plus wird sein, auch die geänderten Konfigurationsdateien aus der Standardeinstellung zu speichern, aber ich kann nur mit der Paketliste leben.
Kurz gesagt, ich möchte eine Möglichkeit zum Erstellen einer Liste von Paketen erstellen, die auf einem Host installiert sind, jedoch nicht auf einem anderen.
Es ist wirklich großartig, wenn die Liste nur manuell installierte Pakete enthält und nicht die Liste aller Abhängigkeiten.
Wenn Sie über einige Tools verfügen, die für diese spezielle Aufgabe entwickelt wurden, können Sie diese gerne vorschlagen, aber ich möchte die Abhängigkeit so gering wie möglich halten. Zur Information, es handelt sich nicht gerade um virtuelle Server, sondern um LXC-Container.
quelle
Antworten:
Bei der Referenzinstallation (nur einmal):
(Das Folgende setzt voraus
bash
)So fügen Sie die Pakete aus der Referenzinstallation hinzu (dies zeigt nicht an, was entfernt wurde):
Noch besser: Vermeiden Sie Kopien von
baselist.txt
:quelle
Führen Sie auf einem alten Server Folgendes aus:
Kopieren Sie die obige Datei auf einen neuen Server und führen Sie diese auf einem neuen Server aus:
Denken Sie auch daran
/etc/apt/sources.list
, vor dieser Migration von Paketen alle zusätzlichen Repositorys vom alten zum neuen Server hinzuzufügen. Wenn Sie dies nicht tun, werden die meisten Pakete nicht installiert.quelle
cut -f1
wird wahrscheinlich schneller als awk sein und wie in der Antwort von Khaled kommentiert, wird diff nicht immer ein richtiges Ergebnis zurückgeben. Die Lösung mitcomm
wirklich bitte vorerst ... Allerdings fehlt mir eine Version, die nur manuell installierte Pakete auflistet.Mit dem folgenden Befehl können Sie die vollständige Liste der Pakete auf beiden Servern abrufen:
Dann können Sie die Unterschiede ermitteln, indem Sie:
Sie können die erforderlichen Änderungen mit grep filtern. Außerdem kann diff verwendet werden, um die Änderungen in den Konfigurationsdateien abzurufen und Patches zu generieren, die bei Bedarf angewendet werden können. Übrigens kann diff zwei Ordner vergleichen, nicht nur zwei Dateien.
quelle
Blueprint ist genau auf Ihre Bedürfnisse zugeschnitten. Es spuckt ein installiertes Beschreibungspaket und Konfigurationsdateien aus, die geändert wurden. Diese Beschreibungen können in Puppet- oder Chef-Skripte konvertiert werden, um sie auf saubere Boxen anzuwenden.
quelle
Ich habe auch dieses hilfreiche Paket gefunden, dessen Beschreibung wie folgt lautet:
Ein Bash-Skript, das den Dateisystembaum eines Debian-Pakets mit dem aktuellen Dateisystembaum vergleicht und einheitliche Unterschiede für Dateien druckt, die sich unterscheiden.
https://code.google.com/p/dpkg-diffs/
Nur eine einzige Bash-Datei, die Sie irgendwo in Ihren PATH stecken und ausführen können - scheint für mich zu funktionieren und ist nicht zu alt.
Hoffe das hilft jemandem.
quelle