Ubuntu, wie man eine neue Maschine wie eine existierende einrichtet

27

Ich habe ein Maschinen-Setup mit den Apps, die ich brauche, und möchte dasselbe auf einer neuen Ubuntu-Box installieren.

Gibt es ein Skript, das alle installierten Apps auflistet, damit ich zwischen den Feldern unterscheiden und die fehlenden Elemente hinzufügen kann?

Danke im Voraus, Chris

Chris Kimpton
quelle

Antworten:

18

Neben den von pjz erwähnten dpkg-Tricks können Sie sich auch etckeeper ( Tutorial ) ansehen - eine App, die Ihre / etc / * der Versionskontrolle unterwirft und es einfacher macht, vorgenommene Änderungen zu finden und auf andere zu replizieren Server.

Für eine kürzere Liste als die, die mit der Methode von pjz erstellt wurde, können Sie auch verwenden

$ deborphan -a --no-show-section > /tmp/mypackagelist

Dadurch erhalten Sie eine Liste von Paketen, die alle anderen Pakete installieren, die Sie als Abhängigkeiten benötigen. Kann nützlich sein, wenn Sie die Liste tatsächlich durchsehen möchten. (dpkg --get-Auswahl wird eine produzieren loooong Liste). Außerdem ist die Liste so kurz, dass Sie Zeilenumbrüche hinzufügen und Einträge mit '#' auskommentieren können. Dann können Sie bei der Installation der zusätzlichen Pakete tun

$ grep -v '#' /tmp/mypackagelist | xargs apt-get install -y

Auf diese Weise müssen einige Pakete, die Sie nur auf bestimmten Computern installieren möchten, nicht vollständig aus der Paketliste gelöscht werden.

Hamish Downer
quelle
etckeeper sieht wirklich interessant aus (+1).
jkp
17
dpkg --get-selections >/tmp/mypackagelist

sollte den Trick machen. Nachdem Sie sichergestellt haben, dass Ihre /etc/apt/sources.list auf dem neuen Computer die gleichen Einträge enthält wie auf dem alten, kopieren Sie die mypackagelist auf den neuen Computer und führen Sie folgende Schritte aus:

cat mypackagelist | xargs apt-get -y install 

und Sie sollten gut zu gehen sein.

Beachten Sie, dass die Zeile dpkg --get-selections auch eine gute Information ist, die Sie gelegentlich in Ihr / etc / dir einfügen können. Dies bedeutet, dass Sie nicht die Mühe haben, / bin / und / usr / bin / und dergleichen zu sichern, weil Sie wissen Welche Pakete sind auf dem System.

pjz
quelle
Ja, Jeff, aber wie sieht es mit den Änderungen an den Konfigurationsdateien aus? Wie wäre es mit den Optionen dpkg-reconfigure? wie wäre es mit Hostnamen ... Benutzern, Freigaben, Reittieren ... Siehe meine Antwort über ddBalg
Elcuco
2

Ubuntu Forums hat eine gute Antwort

  1. Auf der alten Maschine: $ dpkg --get-selections> installierte-Software
    • Dies ruft Ihre Liste der installierten Apps ab
  2. Auf dem neuen Rechner: $ dpkg --set-selections
    • Dadurch wird festgelegt, dass der neue Computer die Pakete installiert, die derzeit nicht auf dem neuen Computer installiert sind.
    • Es könnte interessant sein, zu sehen, ob auf dem neuen Computer einige Pakete nicht auf dem alten Computer installiert sind, sodass Sie den Befehl dpkg --get-selections> auf dem neuen Computer finden und dann diff verwenden, um die Ausgabedateien von beiden zu vergleichen.
  3. Schließlich auf dem neuen Rechner: $ dselect und die Pakete werden installiert.

Einige zusätzliche Links aus der Forumsdiskussion:

  1. Vergessen Sie nicht Ihre GPG-Schlüssel (aus dem gleichen Thread)
  2. So installieren Sie alle gewünschten Pakete und deinstallieren alle unerwünschten Pakete
pcapademic
quelle
2

Die besseren dpkg-Befehle sind möglicherweise [Originalcomputer]

dpkg --get-selections | grep -v deinstall > packages_list

dann bei der Installation [neue Maschine; nach Übertragung der packages_list]

sudo dpkg --set-selections < packages_list
sudo apt-get -u dselect-upgrade
Benji
quelle
1

Wenn Sie kein CLI-Fan sind (obwohl Sie es eigentlich sollten), können Sie mit dem Synaptic-Paket-Manager das Image der installierten Pakete speichern und diese Datei (erneut über Synaptic) zum Laden des neuen Computers verwenden. Unter der Option "Datei / Markierungen speichern" befindet sich ein Kontrollkästchen mit der Bezeichnung "Vollständigen Status speichern".

Nerdfest
quelle
Ich denke, das war die Methode, die Cory gefunden hat
jbdavid
1

Warum klonst du die Maschine nicht einfach mit dd?

elcuco
quelle
1
Dies. Klonen Sie einfach die Maschine und ändern Sie den Namen, es ist bei weitem der schnellste Weg, dies zu tun.
PJC50
1

Die Verwendung von FSArchiver zum Replizieren der Computer ist vollkommen akzeptabel. Ansonsten finden Sie hier nützliche Befehlspaare, von denen Sie die erste Hälfte auch zu Ihrem Sicherungs-Cron hinzufügen können:

debconf-get-selections
debconf-set-selections

~

aptitude-create-state-bundle
aptitude-run-state-bundle --unpack

~

dpkg --get-selections
dpkg --clear-selections; dpkg --set-selections

Zu replizierende Speicherorte sind / etc und / var. Die obigen Befehle manipulieren einige Dateien in / var direkt und einige Dateien in / etc indirekt über debconf. Sie erzielen den gleichen Effekt, wenn Sie nur diese Teilbäume replizieren und aptitude ausführen.

Tobu
quelle
0

Ich denke, Docker wäre der Weg, dies jetzt zu tun - definieren Sie die Anforderungen in einer Docker-Datei - Sie können es dann auf jedem Docker-Host ausführen.

Chris Kimpton
quelle