Wer länger mit einem Ubuntu- oder Debian-System gearbeitet hat, der weiß natürlich die Paketverwaltung zu schätzen. Sie ist eines DER Argumente pro Linux, wenn nicht sogar DAS Argument. Wer nicht nur einen Rechner besitzt, sondern neben dem Desktop noch ein Notebook, ein Netbook usw. der möchte oft die selben Pakete auf all seinen Rechnern installiert haben. So kann man nahtlos auf allen Rechner sämtliche Aufgaben erledigen. Dafür gibt es schon seit längerem Tricks und Kniffe, wie man eine Paketliste auf einem System erstellt, und diese dann auf einem anderen Rechner einspielt. Allerdings kommt diese Methode mit manuell installierten Paketen und zusätzlichen Quellen nicht mehr wirklich gut klar, so dass es seit Ubuntu Natty mit apt-clone ein Werkzeug gibt, das das Clonen von Systemen vereinfacht.
Wie angesprochen kann man über den Befehl dpkg
die installierten Pakete ausgeben lassen. Mit ein bisschen Shell-Magie kann man aus dieser Liste eine Datei erzeugen, die sich dann auf einem anderen Rechner dazu verwenden lässt, die selben Pakete zu installieren. Im Endeffekt läuft das das Ganze so ab…
# Paketliste auf Rechner A erstellen... $ dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > packages.list # Pakete aus der Liste auf Rechner B installieren $ xargs -a "packages.list" sudo apt-get install
Nun funktioniert dieses Vorgehen leider nur solange, wie die Liste der verfügbaren Pakete in den Paketquellen identisch ist. Referenziert die Liste auf ein Paket, das manuell installiert wurde oder auf ein Paket aus einer zusätzlichen Paketquelle, so muss diese erst über die /etc/apt/sources.list
bzw. über add-apt-repository
hinzugefügt werden. Manuell installierte Pakete müsste man sogar von Hand aus der Liste löschen.
Hier kommt nun das Programm apt-clone
ins Spiel. Dieses sichert nicht nur eine Paketliste, sondern speichert auch auch die sources.list
inkl. weiterer in /etc/apt/sources.list.d/
abgelegten Quellen und erzeugt sogar aus manuell installierten Programmen wieder installierbare Pakete. So kann man in der Tat das komplette System klonen, ohne dass man groß Aufwand treiben muss. Einzig Konfigurationsdateien aus /etc werden bislang nicht mitgesichert, so dass man Dienste erneut konfigurieren muss, doch daran arbeitet man aktuell auch noch.
Wenn Ihr das Ganze ausprobieren wollt, dann müsst Ihr erst einmal apt-clone auf beiden Rechnern installieren. Das Paket gibt es jedoch nur seit Ubuntu Natty 11.04, ältere Ubuntu-Versionen lassen sich daher auf diesen bequemen Weg nicht clonen…
$ sudo apt-get install apt-clone
Danach müsst ihr auf dem fertig eingerichteten System apt-clone
ausführen. Die Option clone --width-dpkg-repack
sorgt dafür, dass von Hand installierte Pakete wieder erneut verpackt werden, so dass Ihr sie auf dem zweiten System wieder erneut installieren könnt. Bei mir schmeißt das Ganze ein paar Fehlermeldungen aus, die jedoch keine Auswirkungen hatten.
$ sudo apt-clone clone --with-dpkg-repack / dpkg-deb: warning: './dpkg-repack-7727/DEBIAN/control' contains user-defined field 'Original-Maintainer' dpkg-deb: warning: ignoring 1 warning about the control file(s) dpkg-deb: building package `libxapian15' in `./libxapian15_1.0.20-2_amd64.deb'. dpkg-deb: building package `teamviewer6' in `./teamviewer6_6.0.9224_amd64.deb'. dpkg-deb: building package `openshot-doc' in `./openshot-doc_1.3.0-maverick1_all.deb'. dpkg-deb: warning: './dpkg-repack-8460/DEBIAN/control' contains user-defined field 'Python-Version' dpkg-deb: warning: ignoring 1 warning about the control file(s) dpkg-deb: building package `arte+7recorder-5' in `./arte+7recorder-5_5.0.beta3~ppa3~maverick_all.deb'. dpkg-deb: warning: './dpkg-repack-8498/DEBIAN/control' contains user-defined field 'Original-Maintainer' dpkg-deb: warning: ignoring 1 warning about the control file(s) ...
Danach findet ihr im Wurzelverzeichnis /
eine Datei mit dem Namen apt-clone-state-rechnername.tar.gz
, in dieser stecken nun die gesammelten Informationen. Habt ihr keine Pakete manuell installiert, so ist sie nur ein paar KB groß. Sollten jedoch Programme wie Skype, Teamviewer und Co. manuell über .deb Dateien installiert worden sein, so wird diese Sicherung natürlich recht schnell aufgeblasen.
Packt die Datei nun auf einen USB-Stick oder schiebt sie über das Netzwerk auf eurer zweiten Rechner und startet auf dem zweiten Rechner ebenfalls apt-clone
. Diesmal übergebt ihr mit restore
die Option, dass die Paketinformationen aus dem Archiv wiederhergestellt werden sollen.
$ sudo apt-clone restore apt-clone-state-rechnername.tar.gz
Je nachdem wie viele Pakete gefehlt haben, wird nun die Paketverwaltung eine Weile lang beschäftigt sein, da ich auf meinem Testsystem bspw. eine komplette Latex-Umgebung installiert hatte, wird diese nun auch auf dem geclonten System installiert usw…
Damit Ihr nicht völlig unnötige Pakete installieren lässt, würde ich vorher auf dem zu klonenden System etwas aufräumen. Schmeißt dazu am besten Synaptic oder das Software-Center an und schaut was ihr nicht wirklich braucht. Räumt dann noch mit…
$ sudo apt-get autoremove
…nicht mehr benötigte Pakete runter und entfernt am besten noch bei den nicht mehr benötigte Kernel, die sammeln sich recht gerne an und brauchen viel Platz. Schau euch dazu am besten mal den Beitrag alte Kernel inkl. Header mit nur einem Befehl entfernen an. Mit einem Kommando räumt ihr alle alten Kernels vom System.
Getestet habe ich das alles mit meiner „normalen“ Natty-Installation unter einem 64-Bit Ubuntu und einer 32-Bit Installation in einer VirtualBox. Selbst bei diesem Sprung von 32- auf 64-Bit ging alles klar. Alles in allem ist apt-clone für alle ein tolles Werkzeug, die ihr System neu einrichten wollen.
Das klingt ja mal sehr interessant. Um apt-clone auch unter Lucid zu nutzen, kann man das source package von https://launchpad.net/apt-clone herunter laden und das Python-Script nach dem Entpacken entweder direkt aufrufen oder per checkinstall installieren (ich musste vorher lediglich die Pakte „python-argparse“ und „dpkg-repack“ installieren). Ob das Widerherstellen der Sicherung funktioniert, werde ich noch in einer VM testen.
Eventuell kann man auch gleich das Paket aus Natty installieren. Bin mal gespannt, ob dein Test erfolgreich abläuft 🙂
Beim Wiederherstellungsversuch sowohl unter Lucid als auch unter Natty in einer VM wirft „apt-clone restore“ jeweils folgende Fehlermeldung und bricht ab:
Ebenso bei „apt-clone info“. Da scheint das vorherige „apt-clone clone“ unter Lucid nicht ganz rund gelaufen zu sein. Schade! Aber vielleicht ergibt sich da ja noch in Zukunft etwas seitens der Entwickler.
Hört sich interessant an, werde es morgen mal testen, wenn es wirklich so einfach ist wird es mir bestimmt ein großteil der arbeit abnehmen 😉
Hallo Christian, als erstes ein großes Kompliment für Deine Arbeit.
Dann, eine Frage: Kann ich „apt-clone“ auch in „chroot“ benutzen?
In „chroot“ kann ich auch software installieren…“apt-clone“, außer:
ggf. was muss noch gemountet werden?
Danke im Voraus, Tony
habe auch
gemonted weil gemekkert hat, aber bei
kamen zwei Feler
jrgend eine Idee?
1a!
Danke für die gute Anleitung!
Mich würde interessieren, ob es auch möglich ist eine Liste nur der Pakete zu erzeugen, die man „aktiv“ installiert hat (sei’s über die Paketverwaltung oder manuell per .deb). So hätte man eine Liste der Software und Pakete, die man selbst zusätzlich installiert hat und nicht aller installierten Pakete, was nach einer Neuinstalltion (z.B. wegen Update) ja sinnvoller ist und viel übersichtlicher. Wenn ich die Liste „manuell installiert“ in Synaptics durchschaue, erscheinen dort viele Pakete, die ich nicht aktiv installiert habe (evtl. Abhängigekeiten von solchen Pakekten?).
Vielen Dank für jegliche Hinweise!
@Horst Meyer: Eine Liste der aktuell installierten Pakete bekommt man über den Befehl:
Allerdings sind hier auch die „Löschkandidaten“ drin, deshalb diese mittels
rausfiltern.
Kurze Frage: Warum? o_O
Ich kopiere immer einfach eine Installation nach der Einrichtung komplett auf die anderen Rechner. Dann muss nur noch der Bootloader neu geschrieben werden und alles läuft wieder.
Geniale Lösung!
Frage: Klappt dies auch bei einem Downgrade von 17.10 auf 16.04 LTS?
Danke und LG
Robin