Bei der Neuinstallation eines Servers oder dem Umzug auf neue Hardware, kann man sich eine Menge Zeit sparen, wenn man auf dem alten System einfach die Liste aller installierten Pakete sichert und diese automatisiert auf dem neuen System wieder einspielt. Wegen der verschiedenen Paketverwaltungssysteme geht das je nach Distribution immer ein bisschen anders. Hier die verschiedenen Möglichkeiten, je nach verwendeter Distribution:
Debian & Ubuntu
Backup
[code lang=“shell“]
# dpkg –get-selections > pakete.log
[/code]
Restore
[code lang=“shell“]
# dpkg –set-selections < pakete.log
# apt-get dselect-upgrade
[/code]
Fedora
Backup
[code lang=“shell“]
# rpm -qa > pakete.log
[/code]
Restore
[code lang=“shell“]
# yum -y install $(cat pakete.log)
[/code]
OpenSUSE
Backup
[code lang=“shell“]
# rpm -qa –queryformat ‘%{NAME} ‘ > pakete.log
[/code]
Restore
[code lang=“shell“]
# sudo zypper install $(cat pakete.log)
[/code]
Gentoo
Backup
[code lang=“shell“]
# cp /var/lib/portage/world pakete.log
[/code]
Restore
[code lang=“shell“]
# cat pakete.log | xargs -n1 emerge -uv
[/code]
MacPorts unter OS X
Backup
[code lang=“shell“]
# port installed | grep -v ‘The following’ | awk ‘{print $1}’ >> Desktop/macports.log
[/code]
Restore
[code lang=“shell“]
# sudo port install $(cat Desktop/macports.log)
[/code]
Hat jemand noch weitere Distributionen, die man in eine solche Liste aufnehmen kann? Und wie sieht es auf anderen Systemen, wie Mac OSX oder Windows aus?
Hallo Netways Team,
MacOSX Tipp
Falls MacPorts auf dem Mac installiert ist, geht es wie folgt:
Auflistung aller installierter Packete:
port installed
Sichern der installierten Packete:
port installed | grep -v ‚The following‘ | awk ‚{print $1}‘ >> Desktop/macports.log
Sicherung zurückspielen:
sudo port install $(cat Desktop/macports.log)
(für mehr Macport Tipps http://www.macports.com)
Mfg
Tobi
Hallo Tobias, danke für den Tipp zu den MacPorts. Ich habs oben in die Liste mit aufgenommen.
Mehrere (oder gar alle?) der oben genannnten Ansätze haben einen Schwachpunkt: Sie installieren auf dem Zielsystem nur zusätzlich die Pakete, die auf dem Quell-System vorhanden sind.
Oft ist aber die Anforderung, auf allen Systemen die gleiche Paket-Auswahl installiert zu haben. Dazu muss man also dann auf dem Zielsystem auch noch die Pakete deinstallieren, die auf dem Quell-System *nicht* vorhanden waren.
Hast Du dazu auch noch ne Idee bzw. Commands?
Die Befehle sind soweit ganz praktisch und helfen auch einige Pakete vom Quellsystem auf das Zielsystem zu übertragen.
Aber
1. was macht man, wenn die Pakete dort nicht bekannt sind, weil die Paketquellen nicht bekannt sind? Oder noch schlimmer was passiert, wenn man aus dem Internet heruntergeladene und ggf. selbst kompilierte Pakete übertragen möchte, aber nicht mehr weiß, woher die stammen.
2. Wie lassen sich die Pakete aus verschiedenen Distributionen synchronisieren (oder auch nur abgleichen)? Wenn ich z.B. die Paketliste von einem OpenSuse-System nehme und sie auf einem Ubuntu-System einspiele, gibt es sicherlich einen Haufen Pakete, die nicht gefunden werden.
Hierfür gibt es wahrscheinlich keine pauschale Lösung, aber vielleicht kennt ja doch jemand einen Ansatz.
3. Wie lassen sich die Konfigurationen der Pakete sichern und übertragen? Reicht es da aus das gesamte home-Verzeichnis zu kopieren?
Dann müsstest Du dafür sorgen, dass die Paketquellen auf dem anderen System bekannt werden. Wenn Du es selbst nicht mehr weisst, wüsste ich keinen Weg, wie das System das dann wissen oder rausfinden soll.
Also grundsätzlich geht das erstmal nicht, denn die Pakete haben ja in verschiedenen Distributionen oft auch unterschiedliche Namen. Da die Befehle ja letztendlich die Liste nur als Text sichern geht das dann nicht über Distributionsgrenzen hinweg.
Ein möglicher Lösungsansatz wäre die Paketinstallationen mit Puppet zu machen. Da definierst Du in einer Art Metadefinition „Stelle sicher, dass MySQL installiert ist“ und Puppet kümmert sich darum das distributionsspezifisch auszuführen. Da geht das, ist aber ein ganz anderer Aufwand, der sich aber langfristig auszahlen kann.
Tja, das hängt letztendlich auch wieder vom Paket ab. Die meisten sollten ihre Einstellungen in /etc sichern. Das zu speichern sollte schon mal weiterhelfen.
Wäre zu schön um wahr zu sen:
# rpm -qa –queryformat ‘%{NAME} ‘ > pakete.log
error: ^‘%{NAME}$: regcomp failed: Invalid content of \{\}
Habe das Problem, daß weder yast noch zypper die installiierten Pakete erkennen.
Trotzdem Danke für die Mühen!
PP
Habe nun eine für mich als simplen User einfache Methode gefunden. Sie funktioniert bei Suse 11.4. Ob sie auch bei anderen Versionen oder Systemen funktioniert, ist mir nicht bekannt.
Ich überschreibe einfach den Ordner /var/lib/rpm des Importrechners mit der des Exportrechners.
Danach wurden wieder alle installierten Pakete mit rpm -qa angezeigt und auch in yast gefunden.
LG PP