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.





Schreibe einen Kommentar