ubuntuusers.de » Wiki » apt-get

apt-get

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

APT (Advanced Package Tool) ist ein Paketmanagement-System, das im Bereich des Betriebssystems Debian GNU/Linux entstanden ist. Mittels APT ist es sehr einfach, Programmpakete zu suchen, zu installieren oder auch das ganze System komplett auf den neuesten Stand zu bringen. In diesem Artikel findet sich eine kurze Einführung in die Bedienung der Paketverwaltung ohne graphische Oberfläche mittels apt-get.

Programme installieren

Zur Installation eines oder mehrerer Pakete dient

sudo apt-get install Paketname1 [Paketname2] ... 

Abhängigkeiten werden dabei automatisch mitinstalliert.

Versionen sperren oder erzwingen

Um einzelne Versionen von Paketen zu bevorzugen bzw. zu sperren oder zu erzwingen, muss man Apt-Pinning benutzen. Dies erfordert aber einige Erfahrung im Umgang mit der Paketverwaltung.

Pakete konfigurieren

Manche Pakete erfordern eine Konfiguration. Die Grundkonfiguration wird automatisch bei der ersten Installation erzeugt. Später dient der Befehl dpkg-reconfigure zur Bearbeitung.

sudo dpkg-reconfigure Paketname1 [Paketname2] ... 

Weitere Details kann man unter dpkg-reconfigure nachlesen.

Sämtliche Pakete neu installieren

dpkg --get-selections | grep "\binstall" | awk '{print $1}' > /tmp/dpkg.log 

sucht alle installierten Pakete und speichert diese in der Datei /tmp/dpkg.log.

sudo xargs -n1 apt-get --reinstall install -y < /tmp/dpkg.log 

nimmt einen Eintrag aus /tmp/dpkg.log und installiert dieses Paket erneut.

Paketquellen freischalten/aktivieren

Die Liste der Paketquellen befindet sich in der Datei /etc/apt/sources.list, die mit einem Texteditor bearbeitet werden kann. Paketquellen, die nicht benötigt werden, können mit einem Kommentarzeichen # am Zeilenanfang deaktiviert werden und umgekehrt durch Entfernen des # wieder aktiviert werden. Dies gilt aber nicht für CD-ROMs, die nicht reaktivierbar sind, sondern erneut hinzugefügt werden müssen.

Ab Ubuntu Karmic Koala 9.10 können PPA-Quellen auch mit folgendem Befehl eingefügt werden:

sudo add-apt-repository ppa:launchpad-team/ppa-name 

Dabei wird die PPA-Quelle auch gleich authentifiziert, d.h. der Signierungsschlüssel importiert.

Nach einer Änderung der Paketquellen muss man diese unbedingt neu einlesen:

sudo apt-get update 

Quelle als vertrauenswürdig einstufen

Um eine Quelle als vertrauenswürdig einzustufen, muss man sich zuvor den zugehörigen GPG-Schlüssel heruntergeladen und gespeichert haben. Danach kann man mit

sudo apt-key add schluesselname.gpg 

die Quelle als vertrauenswürdig einstufen.

CD/DVD als Paketquelle hinzufügen

Standardkonforme Paket-CDs und -DVDs werden mit dem folgenden Befehl hinzugefügt:

sudo apt-cdrom add 

Pakete entfernen

Konfiguration beibehalten (Standard)

Zur Deinstallation eines oder mehrerer Pakete dient

sudo apt-get remove Paketname1 [Paketname2] ... 

Von diesen Paketen abhängige Pakete werden automatisch mit entfernt.

Konfiguration mitlöschen

Zur Deinstallation eines oder mehrerer Pakete dient

sudo apt-get remove --purge Paketname1 [Paketname2] ... 

Dies sollte man nur nutzen, wenn man sicher ist, die Konfiguration nicht später einmal wieder gebrauchen zu können. Es werden allerdings nur systemweite Konfigurationsdateien gelöscht, wie sie zum Beispiel in /etc zu finden sind. Benutzerspezifische Konfigurationsdateien in den Homeverzeichnissen sind davon nicht betroffen. Auch die Konfigurationen automatisch mitentfernter Pakete werden nicht angetastet.

Wenn man sicher ist, dass man nun alle alten Konfigurationen löschen und nicht einzeln angeben will, kann man mit diesen Befehlen alle übriggebliebenen Konfigurationen automatisch löschen.

dpkg -l | grep ^rc | awk '{print $2}' | xargs sudo dpkg --purge 

Automatisch installierte Abhängigkeiten entfernen

Edgy Eft

Ab Ubuntu Edgy Eft (6.10) merkt sich die Paketverwaltung Abhängigkeiten, so dass einmal durch die automatische Installation mitinstallierte Pakete auch wieder einfach deinstalliert werden können. Dieses Aufräumen kann man mit

sudo apt-get autoremove 

einleiten.

Dapper Drake und früher

In früheren Ubuntu-Versionen hilft dieser Umweg, um die Abhängigkeiten mit zu entfernen. Als Beispiel wird das Paket gimp einschließlich aller Abhängigkeiten deinstalliert

sudo dpkg -r $(apt-cache show gimp | sed -n '/Depends:/s/^.*://;s/,//gp') 

System auf überflüssige Pakete untersuchen

Da apt-get sich vor Edgy Eft keine Abhängigkeiten merken konnte, bleiben wie beschrieben verwaiste Pakete zurück. Um diese zu entfernen, kann man die Programme debfoster {de} und deborphan {de} nutzen, deren Gebrauch im Debian-Anwenderhandbuch {de} beschrieben ist. Das Paket orphaner enthält eine Benutzerschnittstelle, die die Bedienung vereinfacht.

Eine Anleitung, wie man ohne eines dieser Programme auskommt, findet sich im Forum.

Heruntergeladene Pakete entfernen

Pakete, die installiert wurden, werden normalerweise nach dem Herunterladen in einem speziellen Cache-Archiv (/var/cache/apt/archives) gespeichert. Auf diese Art kann man ein Paket reinstallieren ohne es neu herunterladen zu müssen. Der Nachteil ist, dass dieses Archiv mitunter recht groß werden kann. Um es zu leeren, benutzt man entweder den Befehl

sudo apt-get clean 

oder

sudo apt-get autoclean 

autoclean entfernt dabei aber nur Pakete, die aus den eingetragenen Paketquellen nicht mehr heruntergeladen werden.

Defekte Pakete reparieren

Wenn ein Paket, das nicht zur separaten Installation gedacht ist, eigentlich weitere Pakete benötigt oder in anderer Weise nicht in die bestehende Installation passt, werden bei der nächsten Verwendung von apt-get "kaputte Pakete" gemeldet. Diese muss man reparieren lassen. Der Befehl

sudo apt-get -f install 

führt entweder zur Installation weiterer Pakete oder zur Entfernung des installierten Pakets. In letzterem Fall sollte man sich vergewissern, ob das Paket wirklich für Ubuntu geeignet ist.

Falls die defekten Pakete bekannt sind, kann auch folgender Befehl das Problem lösen:

sudo apt-get -f install PAKETNAME1 PAKETNAME2 

Wobei PAKETNAME1 bzw. PAKETNAME2 usw. durch die Namen der bekannten defekten Pakete ersetzt wird.

Paketverwaltung unbrauchbar

Sollte die Paketverwaltung nach einem upgrade bzw. dist-upgrade unbrauchbar werden, so hilft einer der folgenden Befehle:

sudo apt-get upgrade -f 
sudo apt-get dist-upgrade -f 
sudo dpkg --configure -a 

Lock nicht aufrufbar

Wenn apt oder ein anderer Paketmanager beim Installieren die Fehlermeldung: "Konnte Lock nicht bekommen" ausgibt, sollte man die Datei /var/cache/apt/archives/lock mit Root-Rechten löschen.

Aktualisierung durchführen

Der folgende Befehl bringt alle Pakete auf den neuesten in den Paketquellen verfügbaren Stand:

sudo apt-get upgrade 

Hierbei werden jedoch keine zusätzlichen Pakete installiert oder bereits installierte Pakete entfernt. Falls dies jedoch über neue Abhängigkeiten erforderlich ist, wird bei dem genannten Befehl angezeigt, dass eine bestimmte Anzahl an Paketen nicht aktualisiert wurde. Um auch in diesem Fall eine Aktualisierung durchführen zu können, muss folgender Befehl verwendet werden:

sudo apt-get dist-upgrade 

Erscheint durch einen Paketkonflikt eine Meldung wie

Die folgenden Pakete sind zurückgehalten worden:
  gstreamer0.10-plugins-bad liblucene2-java 

mit abweichenden Paketnamen, so müssen diese explizit aktualisiert werden:

sudo apt-get install gstreamer0.10-plugins-bad liblucene2-java 

Dabei sollte darauf geachtet werden, dass bei dieser Vorgehensweise andere Pakete entfernt werden, was eventuell nicht erwünscht ist.

Kompilieren mit apt-get

apt-get bietet nach vorheriger Aktivierung der deb-src-Paketquellen (siehe oben) die Möglichkeit die Quellpakete und Abhängigkeiten einzelner Programme herunterzuladen, um diese dann zu kompilieren.

Hierzu lädt man mit

sudo apt-get build-dep Paketname 

zuerst alle benötigten Pakete herunter, die man zur Kompilierung von Paketname benötigt. Danach kann man sich den Quellcode mit

apt-get source Paketname 

besorgen und das Programm manuell kompilieren. Alternativ und ggf. einfacher kann man mit der Option --build den Quellcode nicht nur herunterladen, sondern auch gleich kompilieren, soweit möglich. In Verbindung mit dem Programm fakeroot (siehe hier) kann man so ein fertiges deb-Paket erstellen, was danach nur noch einzeln installiert werden muss (siehe hier).

fakeroot apt-get --build source Paketname 

Pakete suchen

Pakete können mit dem folgenden Befehl gesucht werden:

apt-cache search Suchbegriff1 [Suchbegriff2] ... 

wobei als Standard nicht nur die Namen, sondern auch die Paketbeschreibungen durchsucht werden. Mit Hilfe der Option --names-only wird die Suche auf die Paketnamen eingeschränkt.

Paketinformationen anzeigen

Informationen zu Status, Herkunft, Betreuer, Abhängigkeiten u.a. eines Paketes lassen sich wie folgt anzeigen:

apt-cache show Paketname 

Abhängigkeiten eines Paketes anzeigen

Möchte man sich ausschließlich über die Abhängigkeiten eines Paketes informieren, kann man sich diese folgendermaßen übersichtlich auflisten lassen:

apt-cache depends Paketname 

Analog dazu, kann man sich auch alle Pakete auflisten lassen, die das angegebene Paket als Abhängigkeit haben:

apt-cache rdepends Paketname 

Zuordnung von Paketen und Dateien

In manchen Fällen will man wissen, in welchem Paket eine bestimmte Datei steckt, weil diese z.B. als fehlend aufgeführt wird, wenn man ein Programm startet. In diesem Fall hilft das Paket

  • apt-file (universe)

Apt-file muss wie apt-get seine Listen auf den neuesten Stand bringen:

sudo apt-file update 

Die Suche erfolgt dann mit:

apt-file search Dateiname 

Dabei werden die Inhalte aller in den Paketquellen vorhandenen Pakete durchsucht.

Dateien in bereits installierten Paketen können einfacher mit dem folgenden Befehl zugeordnet werden:

dpkg -S Dateiname 

Alle Dateien in einem Paket listet der Befehl

dpkg -L Paketname 

auf.

Paketlisten

Übersicht der installierten Pakete

Reine Informationsliste erzeugen

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 

aus. Die Paketliste befindet sich danach in der Datei packages.list.

Hinweis:

Diese Liste ist rein informativ und lässt sich nicht (d.h. nur schwer) zum Wiederherstellen nach einer Neuinstallation verwenden!

Paketliste zur Wiederherstellung erzeugen

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.

Installation von Paketen aus einer Liste

Um alle in dieser Liste gespeicherten Pakete später zu installieren, gibt man folgenden Befehl ein:

xargs -a "packages.list" sudo apt-get install 

URL-Liste zu installierender Pakete

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.

Verlaufslisten

Der folgende Befehl erzeugt eine Liste der in den letzten drei Tagen installierten Pakete:

find /var/lib/dpkg/info/ -daystart \( -name \*.list -a -mtime -3 \) | sed 's#.list$##;s#.*/##' | sort 

Eine andere Möglichkeit ist die Erstellung eines eigenen apt-history-Befehls. Dieser beruht auf der Log-Datei /var/log/dpkg.log. Da diese aber von Zeit zu Zeit gegen eine neue, leere Datei ausgetauscht wird, ist dieses leider keine Universallösung. Dazu wird die Datei ~/.bashrc editiert und Folgendes am Ende angefügt:

function apt-history(){
      case "$1" in
        install)
              cat /var/log/dpkg.log | grep 'install '
              ;;
        upgrade|remove)
              cat /var/log/dpkg.log | grep $1
              ;;
        rollback)
              cat /var/log/dpkg.log | grep upgrade | \
                  grep "$2" -A10000000 | \
                  grep "$3" -B10000000 | \
                  awk '{print $4"="$5}'
              ;;
        *)
              cat /var/log/dpkg.log
              ;;
      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.

Konfiguration

Apt kann über die Konfigurationsdatei /etc/apt/apt.conf umfassend konfiguriert werden. Beispieldateien liegen in /usr/share/doc/apt/examples/

Geschwindigkeit begrenzen

Eine Geschwindigkeitsbegrenzung für http-Quellen setzt man beispielsweise so:

Acquire
{
  Queue-mode "access";
  http
  {
     Dl-Limit "100";
  };
};

"100" steht in diesem Fall für eine Geschwindigkeitsbegrenzung von 100KB/s und kann durch jede beliebige Zahl ersetzt werden.

Diese Revision wurde am 23. Juni 2010 um 20:37 Uhr von Deadman44 erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Shell, Paketverwaltung

Passwort vergessen?