Seite wählen

Installierte Pakete sichern

von | Jul 10, 2009 | Linux

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?

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

7 Kommentare

  1. Tobias Schug

    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

    Antworten
  2. Julian Hein

    Hallo Tobias, danke für den Tipp zu den MacPorts. Ich habs oben in die Liste mit aufgenommen.

    Antworten
  3. Berny

    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?

    Antworten
  4. Magic T

    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?

    Antworten
  5. Julian Hein

    Magic T: 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.

    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.

    Magic T: 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.

    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.

    Magic T: 3. Wie lassen sich die Konfigurationen der Pakete sichern und übertragen? Reicht es da aus das gesamte home-Verzeichnis zu kopieren?

    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.

    Antworten
  6. Peter Pan

    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

    Antworten
  7. Peter Pan

    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

    Antworten

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Linux

Kickstart your Laptop with Linux

Alle paar Jahre bekomme ich einen neuen Laptop bei Netways. Vor zwei Wochen war es wieder so weit und somit eine gute Gelegenheit mal wieder die Betriebssystem-Frage zu stellen. Die alte Frage also: "Welches Linux ist das Beste?". Also für mich ganz persönlich. Nicht...

Ansible – Testing roles with Molecule

Ansible is a widely used and a powerful open-source configuration and deployment management tool. It can be used for simple repetitive daily tasks or complex application deployments, therefore Ansible is able to cover mostly any situation. If used in complex or...

NETWAYS Support Collector Roadmap

Den Support Collector konnte ich bereits in meinem letzten Blogpost vorstellen. Für alle die den Beitrag verpasst haben, hier kurz umrissen was es ist: Bei dem Tool handelt es sich um einen von uns geschriebenen Datensammler, welche alle möglichen Support relevanten...