Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Diese Seite dient dazu, Tipps zum Umgang mit der Paketverwaltung APT zu bündeln. Dazu zählen auch die diversen Möglichkeiten, Paketlisten zu erstellen, die beim Unzug auf einen neuen Rechner oder bei der Installation mehrerer Rechner mit gleicher Software-Ausstattung nützlich sein können.
Um eine Liste zu erstellen, die alle installierten Pakete und deren Beschreibungen enthält, führt man den Befehl
COLUMNS=200 dpkg-query -l > packages_list.list
aus. Die Paketliste befindet sich danach in der Datei packages_list.list.
Diese Liste ist rein informativ und lässt sich nicht (d.h. nur schwer) zum Wiederherstellen nach einer Neuinstallation verwenden!
Um z.B. einen zweiten Ubunturechner mit der gleichen Paketkonfiguration zu erstellen oder bei einer Neuinstallation des Systems schnell alle zuvor installierten Pakete zu übernehmen, kann man mit dem Befehl
dpkg --get-selections | awk '!/deinstall|purge|hold/ {print $1}' > ~/packages.list eine Liste ~/packages.list zur Wiederherstellung der Pakete erzeugen.
Möchte man diese Liste zur Installation in einer Ubuntu-Neuinstallation verwenden, ist außerdem ein Sichern bzw. Kopieren der Paketquellen nötig, damit auch Pakete aus nachträglich hinzugefügten Quellen installiert werden können. Der folgende Befehl sichert diese Informationen in die Datei ~/sources.list.sav:
find /etc/apt/sources.list* -type f -name '*.list' -exec bash -c 'echo -e "\n## $1 ";grep -v -e ^# -e ^$ ${1}' _ {} \; > ~/sources.list.sav Das Ergebnis enthält eine kommentierte Liste aller eingetragenen Paketquellen.
Um alle in dieser Liste gespeicherten Pakete später zu installieren, gibt man folgenden Befehl ein:
xargs -a "packages.list" sudo apt-get install
Vorher muss evtl. noch die zuvor gesicherte sources.list mit der aktuellen synchronisiert werden und eine Aktualisierung der Paketliste durchgeführt werden:
sudo apt-get update
Die Option --print-uris von apt-get liefert eine URL für alle zu installierenden Pakete. Dies kann man auf einem Rechner mit schlechter Internetanbindung zur Erzeugung einer Liste benutzen, um diese Pakete dann auf einem anderen Rechner herunterzuladen. Der Befehl
sudo apt-get -q -y --print-uris install PAKETNAME | grep ^\' | awk '{print $1}' | tr -d "'" > wget.list schreibt die Adressen in eine Liste wget.list. Der Inhalt dieser kann dann mittels wget
wget -i wget.list
heruntergeladen werden. Wget steht auch für die Windows-Plattform zur Verfügung
, so dass man die Liste auch auf einem Windows-Rechner herunterladen kann.
Anschließend können die so heruntergeladenen Pakete über die Synaptic-Paketverwaltung oder mit dpkg installiert werden.
Eine Liste, der in der letzten Zeit installierten Pakete, kann durch Auswerten der dpkg-Log-Dateien mit grep ausgegeben werden:
grep 'install ' /var/log/dpkg.log
Diese Log-Dateien werden regelmäßig durch logrotate archiviert (/var/log/dpkg.log.NUMMER.gz). Liegt die Änderung also schon weiter zurück können diese Dateien durchsucht werden. Man muss die mit gzip komprimierten Dateien nicht erst entpacken, sondern benutzt einfach zgrep:
zgrep 'install ' /var/log/dpkg.log.NUMMER.gz
Alternativ kann mit find eine Liste, der in den letzten drei Tagen installierten Pakete, angezeigt werden:
find /var/lib/dpkg/info -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' | sort
Eine andere Möglichkeit ist die Erstellung eines eigenen Befehls apt-history. Dieser beruht auf den Log-Dateien /var/log/dpkg.log und /var/log/dpkg.log.1. Dazu wird die Datei ~/.bashrc editiert und folgendes am Ende angefügt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function apt-history(){ case "$1" in install) cat /var/log/{dpkg.log,dpkg.log.1} | grep 'install ' ;; upgrade|remove) cat /var/log/{dpkg.log,dpkg.log.1} | grep $1 ;; rollback) cat /var/log/{dpkg.log,dpkg.log.1} | grep upgrade | \ grep "$2" -A10000000 | \ grep "$3" -B10000000 | \ awk '{print $4"="$5}' ;; *) cat /var/log/{dpkg.log,dpkg.log.1} ;; esac } |
Anschließend neu einloggen (oder ein neues Terminalfenster öffnen), damit der Befehl verfügbar ist. Mittels
apt-history upgrade
lassen sich nun beispielsweise die zuletzt aktualisierten Pakete inkl. Datum und Uhrzeit ermitteln. Andere Möglichkeiten sind install, remove oder rollback.
Durch einen Bug im Update Notifier wird manchmal die Meldung über zur Verfügung stehende Aktualisierungen in der Konsole und beim SSH-Login nicht auf den neuesten Stand gebracht. Das behebt folgender Ablauf:
sudo mv /etc/motd.tail /etc/motd.tail.backup sudo touch /etc/motd.tail sudo /usr/lib/update-notifier/update-motd-updates-available --force
Dabei wird zuerst die aktuelle Datei nach motd.tail.backup umbenannt, dann eine neue leere Datei motd.tail erstellt und anschließend der Update-Notifier zur Korrektur der Angabe gezwungen.
Diese Revision wurde am 9. April 2012 15:22 von Berlin 1946 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen:
Paketverwaltung, Installation, Shell, System
2004 – 2013 ubuntuusers.de • Einige Rechte vorbehalten