apt-get

Aus Foxwiki
apt-get ist die zeitgemäße Benutzerschnittstelle zur Verwaltung von Paketen auf einem Debian System
  • Während es mit dpkg möglich ist, jedes beliebige Debian Paket zu installieren (wenn es zuvor auf die lokale Festplatte kopiert wurde), so ist apt-get zwingend auf eine Paketliste und damit auch eine sinnvolle sources.list angewiesen.
  • Somit ist immer gewährleistet, dass das System in einem stabilen und fest definierten Zustand verbleibt.
  • Mit apt-get wird dem Administrator ein ebenso elegantes wie auch mächtiges Werkzeug gegeben.
  • Dies haben auch viele andere Distributionshersteller erkannt und haben apt-get in die eigenen Distributionen aufgenommen. apt-get ist somit auch auf RPM-basierten Systemen, wie beispielsweise Novell/SuSE oder RedHat/Fedora zu Hause.
  • Die Entwicklung wird dabei über die Webseite koordiniert.
  • Eine Übersicht von Repositories mit RPM-Paketen, die via APT installiert werden können, finden Sie unter http://freshrpms.net/apt/repositories.html.

Dieses Programm ohne grafische Benutzeroberfläche ist recht einfach zu benutzen.

  • Grafische Frontends zu apt sind mit aptitude und gnome-apt verfügbar.

Status-Report

Bevor apt-get die gewünschten Aktionen wie zum Beispiel das Löschen oder Installieren einzelner Pakete ausführt, die das System verändern, werden Sie über den zukünftigen Zustand des Systems informiert.

  • Es werden folgende Informationen angezeigt: die Anzahl der Pakete, die aktualisiert werden (neuere Version), die Anzahl der Pakete, die nicht verändert werden (kept back), die Anzahl der zu löschenden Pakete sowie die Anzahl der neu zu installierenden Pakete.

Zusätzlich werden, wenn Sie die Option install benutzen, die Pakete ausgewählt und angezeigt, die aufgrund der Abhängigkeiten der zu installierenden Pakete benötigt werden.

  • Hier ein Beispiel:
#      The following extra packages will be installed:
       libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl
       mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base
       bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy
       squake pgp-i python-base debmake ldso perl libreadlineg2
       ssh

Sollte es notwendig sein, Pakete zu löschen, oder wurden Pakete zum Entfernen ausgewählt, so werden auch diese gesondert angezeigt.

#      The following packages will be REMOVED:
       xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix
       xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel
       xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid
       nas xpilot xfig

Diese Liste sollte aufmerksam geprüft werden, um sicherzugehen, dass nicht versehentlich Pakete entfernt werden.

Wenn Pakete neu installiert werden, so wird auch darüber informiert:

#      The following NEW packages will be installed:
       zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base

Dies dient nur zur Information; diese Pakete sind bisher nicht auf Ihrem System installiert.

Bei der Auswahl der Pakete kann es passieren, dass aufgrund von nicht erfüllten Abhängigkeiten einzelne Pakete in der aktuellen Version behalten werden.

  • Da nicht alle benötigten Komponenten installiert werden können, werden diese Pakete nicht aktualisiert (kept back).
#      The following packages have been kept back:
       compface man-db tetex-base msql libpaper svgalib1
       gs snmp arena linux xpat2 groff xscreensaver

Immer wenn ein System mit der Option upgrade aktualisiert wird, kann es passieren, dass einzelne Pakete nicht aktualisiert werden können, weil diese auf Paketen basieren, die noch nicht in der benötigten Version verfügbar sind, oder aber es bestehen Konflikte mit bereits installierten Paketen.

  • In diesem Fall werden die Pakete im aktuellen Zustand gehalten.
  • Sie können apt-get install benutzen, um diese Pakete trotzdem zu aktualisieren.
#      The following held packages will be changed:
       cvs

Wenn Sie ein auf „hold“ gesetztes Paket aktualisieren, bekommen Sie die Meldung, dass dieses Paket verändert (changed) wird.

  • Außer bei apt-get install kann diese Meldung auch bei apt-get dist-upgrade auftreten.

Abschließend findet sich noch eine Zusammenfassung über die Anzahl der betroffenen Pakete.

  • Weiterhin wird angezeigt, welches Datenvolumen übertragen werden muss und wie viel Festplattenplatz zusätzlich benötigt wird (oder auch frei wird).
# 206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.
12 packages not fully installed or removed.
Need to get 65.7M/66.7M of archives.
  • After unpacking 26.5M will be used.

Die erste Zeile ist eine knappe Zusammenfassung in Zahlen zu den bereits vorher ausgegebenen Informationen.

  • In der zweiten Zeile finden Sie die nicht installierten Pakete, die bereits entpackt, aber nicht konfiguriert wurden („N packages not fully installed or removed“).
  • In der dritten Zeile finden Sie die Informationen über den benötigten Platz und die zu übertragenden Daten.
  • Hierbei steht die erste Zahl für die tatsächlich noch zu übertragenden Daten und die zweite für den Gesamtwert.
  • Wenn bereits Pakete bei einer früheren Installation (möglicherweise auch nur teilweise) übertragen worden sind, aber nicht installiert werden konnten, so werden diese gespeichert und nicht noch einmal übertragen.

Wenn Sie nun mit der Installation beginnen (dies müssen Sie bei apt-get install mit einem y anstoßen), werden die Pakete von dem ausgewählten Medium gelesen und installiert.

Status-Anzeige

Während des Herunterladens von Archiven und Paketdateien zeigt apt-get eine Reihe von Informationen an:

# sushi:/root# apt-get update
Get:1 ftp://linux frozen/main Packages [833kB]
Get:2 ftp://linux frozen/main Release [93B]
Get:3 ftp://linux frozen/contrib Packages [33.4kB]
Get:4 ftp://linux frozen/contrib Release [96B]
Get:5 ftp://linux frozen/non-free Packages [78.1kB]
Get:6 ftp://linux frozen/non-free Release [97B]
Get:7 ftp://linux stable/non-US Packages [8880B]
Get:8 ftp://linux stable/non-US Release [95B]
Fetched 953kB in 12s (74.1kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done

Unmittelbar während des Downloads wird auch der Fortschritt angezeigt, inklusive der voraussichtlich noch benötigten Zeit für die Übertragung:

# 11% [5 frozen/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s

In den mit Get: beginnenden Zeilen stehen die benutzte Methode (hier ftp) und der benutzte Server.

  • Den Servernamen können Sie in einem lokalen Netz auch verkürzt angeben, wie hier mit linux gezeigt.
  • Weiterhin werden der Bereich (frozen und stable) sowie die Verzeichnisse (main, contrib usw.) und die Dateinamen mit der Dateigröße angezeigt.

Bei der Installation von Paketen sieht der Vorgang ähnlich aus:

# sushi:/root# apt-get install aptitude
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
aptitude
0 packages upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 148kB of archives. After unpacking 471kB will be used.
Get:1 ftp://ftp.debian.de potato/main aptitude 0.0.4a-3 [148kB]
Fetched 148kB in 5s (25.3kB/s)
Selecting previously deselected package aptitude.
(Reading database ... 22625 files and directories currently installed.)
Unpacking aptitude (from .../aptitude_0.0.4a-3_i386.deb) ...
Setting up aptitude (0.0.4a-3) ...

Hier wird in der Zeile „Get:“ der Paketname der zu installierenden Software angezeigt.

  • Danach wird das Paket entpackt und installiert.

Installation von Paketen überwachen

Im laufenden Betrieb werden von den verschiedenen Diensten auf einem System Logdateien (im Verzeichnis /var/log/) erzeugt.

  • Wünschenswert wäre eine solche Funktionalität auch für die Installation von Software-Paketen, dpkg stellt ab der Version 1.13.5 die Option --log zur Verfügung.

Die Option --log protokolliert sowohl den Aufruf von dpkg (z. B. 2005-12-30 18:10:33 install hello 1.3.18 2.1.1-4) als auch die Ergebnisse (z. B. 2005-12-30 18:10:35 status installed hello 2.1.1-4)

Wenn jeder Aufruf von dpkg protokolliert werden soll (auch wenn dieser über Oberflächen wie aptitude geschehen ist), könnte der Eintrag log /var/log/dpkg.log der Datei /etc/dpkg/dpkg.cfg hinzugefügt werden.

  • Es ist dafür zu sorgen, dass die erstellte Protokolldatei regelmäßig rotiert wird, da die Größe der Datei bei jeder Installation (oder auch beim Entfernen) eines Pakets zunimmt.
  • Wenn das Programm logrotate benutzt wird, kann dies erreicht werden, indem eine Datei /etc/logrotate.d/dpkg mit folgendem Inhalt erstellt wird:
# /var/log/dpkg {
        missingok
        notifempty
        }

Optionen und Kommandos

apt-get benutzt folgende Syntax:

# apt-get [options] [command] [package ...] 

Die Optionen werden Sie sicher seltener benötigen, daher zuerst einige Worte zu den einzelnen Kommandos:

# check 
# Bei jedem Start von apt (es sei denn, Sie benutzen die Option update) wird eine Reihe von Prüfungen durchgeführt, um sicherzustellen, dass apt funktionsfähig und Ihr System in einem guten Zustand ist.
  • Sie können diese Prüfungen auch zu jeder Zeit selbst anstoßen:
# sushi:/root# apt-get check
Reading Package Lists...
  • Done
Building Dependency Tree...
  • Done
# Als Erstes werden die Paketdateien anhand der Informationen in /etc/apt/sources.list eingelesen.
  • Wenn Sie diesen Vorgang noch einmal wiederholen, werden Sie feststellen, dass der zweite Test deutlich schneller beendet ist, die Informationen werden von apt zwischengespeichert.
  • Für Paketdateien, die nicht gefunden werden, wird ggf.
  • eine Warnung ausgegeben; diese Pakete werden dann ignoriert.
# Im zweiten Schritt wird eine detaillierte Analyse des Systems durchgeführt, inklusive aller Abhängigkeiten.
  • Es werden von jedem installierten oder bereits entpackten, aber noch nicht konfigurierten Paket die Abhängigkeiten geprüft.
  • Wenn dabei ein Problem auftaucht, wird dies angezeigt, und apt-get bricht die weitere Bearbeitung ab.
# sushi:/root# apt-get check
Reading Package Lists... Done
Building Dependancy Tree... Done
You might want to run apt-get -f install' to correct these.
Sorry, but the following packages have unmet dependencies:
  9fonts: Depends: xlib6g but it is not installed
  uucp: Depends: mailx but it is not installed
  blast: Depends: xlib6g (>= 3.3-5) but it is not installed
  adduser: Depends: perl-base but it is not installed
  aumix: Depends: libgpmg1 but it is not installed
  debiandoc-sgml: Depends: sgml-base but it is not installed
  bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed
  cthugha: Depends: svgalibg1 but it is not installed
           Depends: xlib6g (>= 3.3-5) but it is not installed
  libreadlineg2: Conflicts:libreadline2 (< 2.1-2.1)
# In diesem Beispiel gibt es eine ganze Reihe Probleme: Einige Pakete sind gar nicht installiert, bei anderen Paketen sind falsche Versionen installiert.
  • Für jedes einzelne Paket, bei dem ein Problem festgestellt wurde, wird eine Zeile ausgegeben mit den Informationen, um welches Paket es sich handelt und welches Problem festgestellt wurde.
# Es gibt zwei Möglichkeiten, wie es zu solchen Problemen kommen kann: Bei einem „Upgrade“ kann es passieren, dass ein benötigtes Paket fehlt, oder es ist während der Installation eines Pakets ein Problem aufgetreten.
  • Wenn Letzteres der Fall ist, dann wurde das Paket zwar entpackt, aber nicht korrekt konfiguriert.
# Beide Situationen können von apt in den meisten Fällen mit der Option -f selbst behoben werden.
  • Wenn Sie dselect mit der Methode apt benutzen, wird immer die Option -f verwendet, um eine einfache Verwendung zu gewährleisten.
# Trotzdem kann es passieren, dass bei einem schweren Problem apt nicht in der Lage ist, das Problem zu beheben.
  • In diesem Fall müssen Sie von Hand mit dem Programm dpkg den Konflikt beseitigen.
  • Sie können danach mit apt-get fortfahren.
# update 
# aktualisiert die Übersicht der verfügbaren Pakete, liest also die Informationen aus den Dateien Packages.gz der jeweiligen Distribution ein.
  • Sie sollten update immer ausführen, wenn Sie wissen, dass sich die Inhalte der Paketdateien beziehungsweise die verfügbaren Pakete auf dem Server geändert haben.
  • Auf jeden Fall sollten Sie update vor dem Aufruf von upgrade oder dist-upgrade aufrufen.
# Eine neue Fähigkeit von apt seit Debian 4.0 ist die Möglichkeit, lediglich die Änderungen der Packages-Dateien seit ihrer letzten Aktualisierung herunterzuladen. 
# upgrade 
# Um alle auf dem System installierten Pakete auf die aktuelle Version zu bringen, können Sie upgrade benutzen.
  • Alle bereits installierten Pakete, von denen eine neuere Version verfügbar ist, werden aktualisiert.
  • Es werden keine Pakete gelöscht, die bereits installiert sind (und in den neuen Paketdateien nicht mehr enthalten sind), oder Pakete installiert, die noch nicht auf dem System vorhanden sind.
  • Pakete, die bereits installiert sind und es bei einem Upgrade erforderlich machen, den Status anderer Pakete zu verändern, werden nicht aktualisiert. apt-get update muss vorab ausgeführt werden, so dass sichergestellt ist, dass die Paketinformationen auf dem neuesten Stand sind.
# dist-upgrade 
# ist eigentlich eine Ergänzung oder Erweiterung zu upgrade.
  • Es wird hierbei dafür Sorge getragen, dass für das System wichtigere Pakete zuerst installiert werden.
  • Hierbei werden in engen Grenzen auch Abhängigkeiten verändert, um ein Paket installieren zu können.
  • Dies ist dann notwendig, wenn ein System komplett auf eine neue Version umgestellt werden soll und kein „sanfter“ Übergang gewährleistet werden kann.
# dselect-upgrade 
# Mit dieser Option werden auch die Paketinformationen „recommends“ und „suggests“ ausgewertet.
  • Dies ist sonst nur mit dselect möglich.
  • Diese Vorschläge für weitere Pakete sind zur Funktion des gewünschten Pakets nicht zwingend erforderlich, können aber durchaus sinnvoll sein.
# install 
# Diese Option benötigt noch einen oder mehrere Paketnamen.
  • Jedes dieser Pakete (der Paketname, also beispielsweise sendmail, reicht hierbei aus) sowie die noch benötigten Pakete (diese werden automatisch ermittelt) werden auf Basis der Informationen in /etc/apt/sources.list geholt und installiert.
  • Wenn Sie hinter den Namen des Pakets ein Minuszeichen (-) setzen, wird das Paket aus dem System entfernt, wenn es bereits installiert ist.
  • Achten Sie darauf, dass das Minuszeichen (ohne ein Leerzeichen dazwischen) unmittelbar nach dem Paketnamen steht.
  • Diese Funktion kann auch bei Konflikten bei der Installation einzelner Pakete sehr nützlich sein: Sie können so Pakete in einem Vorgang löschen und installieren.
  • Die Option „install“ wählt immer die aktuellste verfügbare Version eines Pakets aus.
  • Es kann jedoch sinnvoll sein, auch Zugriff auf ältere Programmversionen zu haben.
  • Hierzu kann ab der Version 0.5.3 von apt folgende Syntax verwendet werden: apt-get install sane/unstable.
  • Durch einen Slash (/) getrennt, kann hinter dem Paketnamen das gewünschte Release eines Pakets angegeben werden.
# Eine weitere Möglichkeit ist es, falls verschiedene Versionen eines Pakets verfügbar sind, direkt die gewünschte Versionsnummer anzugeben.
  • Zunächst sollte man mit apt-cache prüfen, welche Versionen eines Pakets verfügbar sind.
  • Mit apt-get install vim=6.0.093-2 kann dann ganz gezielt die gewünschte Version installiert werden.
# --reinstall 
# Diese Option installiert das gewünschte Paket komplett neu, auch wenn es bereits installiert ist.
  • Beachten Sie, dass hierbei auch die Option install anzugeben ist!
# remove 
# Diese Funktion ist analog zu „install“, nur mit dem Unterschied, dass die Pakete standardmäßig entfernt werden, anstatt sie zu installieren.
  • Analog zu dem eben Beschriebenen können Sie hier ein Pluszeichen (+) verwenden, um Pakete zu installieren.
# check 
# dient lediglich zur Diagnose.
  • Es wird überprüft, ob sich irgendwelche Unstimmigkeiten in den Paketen finden.
# --purge remove 
# Löscht das gewünschte Paket und alle weiteren Pakete, die direkt von diesem Paket abhängig sind.
  • Weiterhin werden alle zu den Paketen gehörenden Konfigurationsdateien gelöscht.
# clean 
# Dies löscht das lokale Verzeichnis, in dem sich die zu installierenden Pakete befinden.
  • Alles, mit Ausnahme der lock-Datei, wird aus /var/cache/apt/archives/ und /var/cache/apt/archives/partial/ gelöscht.

source

# Dieses Kommando holt die notwendigen Dateien zur Erzeugung eines Binärpakets.
  • Es können so angepasste Pakete erzeugt werden oder aber Pakete auf einer anderen Architektur übersetzt werden.
  • Wichtig ist hierbei ein entsprechender „deb-src“-Eintrag in der Datei sources.list.
  • Um alle zu einem Paket gehörenden Dateien von einem Server zu holen, reicht das Kommando apt-get source paketname.
  • Es werden die aktuellen Versionen der Dateien paketname.orig.tar.gz, paketname.dsc und paketname.diff.gz im aktuellen Verzeichnis gespeichert.
# Um aus den Quellen direkt ein Binärpaket zu erzeugen, kann die Option -b angegeben werden.
  • Das komplette Kommando lautet dann apt-get source -b paketname.
  • Wenn die benötigten Source-Pakete bereits vorliegen, kann das Binärpaket auch direkt mit dem Kommando dpkg-buildpackage -rfakeroot -us -uc erzeugt werden.
# build-dep 
# Die meisten Software-Pakete benötigen bei der Übersetzung aus den Quellpaketen weitere Entwicklungspakete wie Libraries und Header-Dateien.
  • Diese werden häufig nicht mitgeliefert und liegen in gesonderten Paketen vor.
  • Das Debian Paketsystem sieht so genannte „build dependencies“ vor, in denen alle Abhängigkeiten zur Erzeugung eines Pakets beschrieben sind.
# Das Kommando apt-get build-dep paketname sorgt dafür, dass alle zur Übersetzung eines Pakets benötigten Dateien auf dem System vorhanden sind.

moo

# Als kleine versteckte Option haben die Entwickler auch noch ein so genanntes „Easter-Egg“ eingebaut:
# fr@sushi:~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...

Soweit zu den Parametern.

  • Sie können noch folgende Optionen benutzen, um apt-get zu steuern:
-h Zeigt die Hilfe zu apt-get an.
-m Ignoriert eventuell fehlende Pakete.
-d Holt die gewünschten Pakete vom Server, ohne diese zu installieren.
-f Behebt die defekten Abhängigkeiten zwischen den Paketen. apt-get -f install versucht, diese automatisch zu reparieren.
-s Simulation, führt keine Aktionen aus.
-u Zeigt auch die zu aktualisierenden Pakete an.
-y Aktualisiert alle Pakete automatisch, indem alle Fragen mit „Yes“ beantwortet werden.

Beispiel aus der Praxis

  • Beachten Sie bitte, dass Pakete nur mit Superuser-Rechten (root) installiert werden können.
  • Zuallererst muss apt die Informationen über die verfügbaren Pakete erhalten; hierzu dient das Kommando apt-get update.
# apt-get update
Hit ftp://192.168.0.5 potato/main Packages
Hit ftp://192.168.0.5 potato/main Release
Get:1 ftp://192.168.0.5 potato/non-free Packages [78.6kB]
Get:2 ftp://192.168.0.5 potato/non-free Release [99B]
Fetched 68.5kB in 0s (104kB/s)
Reading Package Lists...
Done
Building Dependency Tree...
Done

Nachdem das System nun über den aktuellen Stand der Pakete informiert ist, können Sie weitere Pakete mittels apt installieren, was hier am Beispiel von sane gezeigt wird:

# apt-get install sane
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  libgimp1 libsane
The following NEW packages will be installed:
  libgimp1 libsane sane
0 packages upgraded, 3 newly installed, 0 to remove and 3 not upgraded.
Need to get 703kB of archives. After unpacking 1729kB will be used.
Do you want to continue? [Y/n]

Beachten Sie hierbei, dass automatisch die benötigten Pakete libgimp1 und libsane ausgewählt wurden.

  • Insgesamt werden also drei Pakete installiert.
  • Weiter unten erhalten Sie noch Informationen über den später benötigten Festplattenplatz der Pakete sowie über die Größe der Pakete, die ja eventuell via FTP erst übertragen werden müssen.
  • Wenn Sie mit den Angaben so einverstanden sind, bestätigen Sie dies mit der Eingabetaste, oder drücken Sie die Taste n und danach die Eingabetaste, um den Vorgang abzubrechen.

Wenn mehrere Pakete gleichzeitig installiert werden sollen, so können diese einfach hintereinander auf der Kommandozeile angegeben werden.

Download aller installierten Pakete

Manchmal kann es wünschenswert sein, alle bereits installierten Pakete eines Systems erneut auf den Rechner zu kopieren, beispielsweise um eine Sicherungskopie zu haben oder um ein System zu duplizieren.

  • Natürlich können die Pakete auch auf eine CD-ROM/DVD gebrannt oder in einen Spiegel eingefügt werden.
  • Vorteilhaft bei dieser Methode ist es, dass ein in sich konsistentes System entsteht, in dem alle Abhängigkeiten erfüllt sind.

Ein Download der gewünschten Pakete kann mit folgenden Befehlen erzeugt werden:

# COLUMNS=200 dpkg -l | grep '^ii' | awk '{ print $2 }' > /tmp/pkgliste
# cat /tmp/pkgliste | xargs apt-get --download-only --reinstall -y install

Die erste Zeile listet via dpkg alle Pakete auf und filtert mittels grep nur die installierten heraus.

  • Danach wird die zweite Spalte in die Datei /tmp/pkgliste geschrieben.

Die zweite Zeile gibt via cat die Liste der Dateien aus.

  • Mit xargs wird jede Zeile an das Kommando apt-get weitergegeben.
  • Die Kombination der apt-get Optionen --reinstall und --download-only sowie -y führt dazu, dass auch bereits installierte Pakete aus dem Netz geholt werden, aber keine Installation durchgeführt wird.

Die Debian Pakete sind nach dem Download im Verzeichnis /var/cache/apt/archives/ zu finden und können mit apt-move (siehe apt-move ) in eine Verzeichnisstruktur wie auf einem Debian Spiegel verschoben werden. apt-move ist auch in der Lage, die entsprechenden Packages.gz-Dateien zu erzeugen.

TMP

apt-get

Alle Kommandos von apt-get werden im Terminal eingegeben . Allgemein besteht ein apt-get-Befehl aus den Optionsschaltern, dem "command" (Kommando) und gegebenenfalls aus einem oder mehreren Paketnamen. Manche Kommandos benötigen keine Angabe von Paketnamen. Allerdings benötigt apt-get außer im Fall von -h oder --help die Angabe eines Kommandos. Ein Paketname besteht nur aus dem Namen des Pakets ohne Versionsangabe.

Eine Übersicht der auf APT aufsetzenden Programme bzw. graphischen Oberflächen findet sich im Artikel Paketverwaltung.

apt-get benötigt in den allermeisten Fällen Root-Rechte .

Die allgemeine Form sieht so aus:

[sudo] apt-get [Option(en)] Kommando [PAKET1] [PAKET2]

Kommandos zu apt-get
update Neueinlesen der Paketlisten
upgrade installierte Pakete wenn möglich auf verbesserte Version aktualisieren
install PAKET(E) Installation von PAKET(E)
remove PAKET(E) Deinstallation von PAKET(E)
autoremove [PAKET(E)] Deinstallation ungenutzter Abhängigkeiten [inkl PAKET(E)]
purge PAKET(E) wie remove, zusätzlich werden alle globalen Konfigurationen von PAKET(E) entfernt
source PAKET(E) Quelltext von PAKET(E) herunterladen
build-dep PAKET(E) zum Erstellen von PAKET(E) notwendigen Abhängigkeiten installieren
dist-upgrade wie upgrade, nur können bei dem Vorgang auch Pakete installiert bzw. entfernt werden
dselect-upgrade in dselect gemachten Anweisungen folgen
clean Leeren des Paketcaches (Entfernen von zur Installation heruntergeladenen Paketen)
autoclean wie clean, nur werden ausschließlich Pakete, die nicht mehr in den Quellen verfügbar sind, gelöscht
check Überprüfung auf Abhängigkeitsfehler
markauto PAKET(E) PAKET(E) als "automatisch installiert" markieren
unmarkauto PAKET(E) PAKET(E) als "manuell installiert" markieren
changelog PAKET(E) Herunterladen und Anzeige des Changelogs von PAKET(E)
download PAKET(E) PAKET(E) herunterladen

Kommandos

apt-get update

update liest alle in der /etc/apt/sources.list und in /etc/apt/sources.list.d/ eingetragenen Paketquellen neu ein. Hierbei erfolgt eine Prüfung auf die Signatur der Paketlisten. update benötigt keine Angabe von Paketnamen.

Dieser Schritt ist vor einem upgrade, dist-upgrade oder nach dem Hinzufügen einer neuen Quelle zu empfehlen, um die aktuellsten Informationen zu den verfügbaren Paketen zu erhalten.

sudo apt-get [Option(en)] update

apt-get upgrade

upgrade bringt die installierten Pakete auf den neuesten in den Paketquellen verfügbaren Stand. Hierbei werden weder neue Pakete installiert noch durch neue Abhängigkeiten unnötig gewordene Pakete deinstalliert. upgrade benötigt keine Angabe von Paketnamen.

sudo apt-get [Option(en)] upgrade

apt-get dist-upgrade

dist-upgrade bringt die installierten Pakete auf den neuesten in den Paketquellen verfügbaren Stand. Hierbei werden im Gegensatz zu upgrade neue Pakete installiert und durch neue Abhängigkeiten unnötig gewordene Pakete ersetzt, auch wenn dies alte Abhängigkeiten beeinflusst. dist-upgrade benötigt keine Angabe von Paketnamen.

sudo apt-get [Option(en)] dist-upgrade

Hinweis

dist-upgrade führt kein Upgrade auf eine neue Ubuntu-Version durch.

apt-get install

install lädt das Paket bzw. die Pakete inklusive der noch nicht installierten Abhängigkeiten (und eventuell der vorgeschlagenen weiteren Pakete) herunter und installiert diese.

Wendet man install auf ein bereits installiertes Paket an, wird dieses unabhängig vom aktuellen Status als "manuell installiert" markiert. install benötigt die Angabe mindestens eines Paketnamens, es können beliebig viele Pakete gleichzeitig angegeben werden. Diese werden durch ein Leerzeichen voneinander getrennt.

sudo apt-get [Option(en)] install PAKET1 [PAKET2]

apt-get clean

clean löscht die bereits heruntergeladenen Installationsdateien aus dem Paket-Cache /var/cache/apt/archives/ und gibt so Festplattenspeicher frei. clean benötigt keine Angabe von Paketnamen.

sudo apt-get [Option(en)] clean

apt-get remove

remove deinstalliert ein oder mehrere Paket(e). Die Konfigurationsdateien, die durch die manuelle oder Autokonfiguration des Pakets erstellt wurden, bleiben erhalten. remove benötigt die Angabe mindestens eines Paketnamens.

Wenn mehrere Pakete gleichzeitig gelöscht werden sollen, müssen diese durch Leerzeichen voneinander getrennt werden.

sudo apt-get [Option(en)] remove PAKET1 [PAKET2]

apt-get autoremove

autoremove deinstalliert nicht mehr benötigte Pakete, die als Abhängigkeit installiert wurden. autoremove kann auf zwei Arten verwendet werden:# Ohne Angabe eines Paketnamens. Hierbei werden alle zur Zeit nicht mehr benötigten Abhängigkeiten deinstalliert (remove)

  1. Mit Angabe eines oder mehrerer Paketnamen. Hierbei wird zuerst das oder die angegebenen Paket(e) deinstalliert (remove), dann die frei gewordenen Abhängigkeiten deinstalliert.

autoremove benötigt keine Angabe von Paketnamen:

sudo apt-get [Option(en)] autoremove [PAKET1] [PAKET2]

apt-get autoclean

autoclean löscht alle heruntergeladenen Paketinstallationsdateien, die aktuell nicht mehr in den Quellen verfügbar sind (Unterschied: clean löscht ausnahmslos alle Installationsdateien). autoclean benötigt keine Angabe von Paketnamen:

sudo apt-get [Option(en)] autoclean

apt-get purge

purge kann auf zwei Arten verwendet werden:# Zur Deinstallation eines Pakets inklusive Löschung der globalen Konfiguration. Dies entspricht remove mit dem Parameter --purge

  1. Zum Löschen der globalen Konfiguration eines Pakets nach der Deinstallation mit remove

purge benötigt die Angabe mindestens eines Paketnamens. Sollen mehrere Pakete und ihre globalen Konfigurationsdateien gelöscht werden, werden diese durch Leerzeichen voneinander getrennt.

Der gleiche Effekt lässt sich mit dem Kommando remove --purge erzielen.

sudo apt-get [Option(en)] purge PAKET1 [PAKET2]

apt-get build-dep

build-dep installiert die zum Erstellen von Paket aus dem Quelltext nötigen Abhängigkeiten. build-dep benötigt die Angabe mindestens eines Paketnamens.

sudo apt-get [Option(en)] build-dep PAKET1 [PAKET2]

apt-get check

check überprüft die Liste der installierten Pakete auf Abhängigkeitsfehler. check benötigt keine Angabe eines Paketnamens.

sudo apt-get [Option(en)] check

apt-get source

source lädt das Quelltext-Paket des Pakets in das aktuelle Verzeichnis herunter, damit man diesen selbst kompilieren kann. source benötigt die Angabe eines Paketnamens, aber keine Root-Rechte.

apt-get [Option(en)] source PAKET1

apt-get help

help zeigt den Hilfetext an. Er kann auch via Option -h oder --help aufgerufen werden. Eine ausführliche Informationsseite findet man in der Manpage zu apt-get.

apt-get help

apt-get dselect-upgrade

dselect-upgrade führt die von dselect gemachten oder manuell markierten Änderungen aus. dselect-upgrade benötigt keine Angabe eines Paketnamens.

sudo apt-get [Option(en)] dselect-upgrade

apt-get markauto

markauto markiert die übergebenen Pakete als automatisch installiert. markauto benötigt die Angabe mindestens eines Paketnamens.

sudo apt-get [Option(en)] markauto PAKET1 [PAKET2]

apt-get unmarkauto

unmarkauto markiert die übergebenen Pakete als "manuell installiert". unmarkauto benötigt die Angabe mindestens eines Paketnamens.

sudo apt-get [Option(en)] unmarkauto PAKET1 [PAKET2]

apt-get changelog

changelog lädt den Änderungsbericht (Changelog) des angegebenen Paket herunter und zeigt ihn an. changelog benötigt sinnvollerweise die Angabe eines Paketnamens, aber keine Root-Rechte.

apt-get [Option(en)] changelog PAKET

apt-get download

download funktioniert erst ab Ubuntu 11.04 und lädt die Installationsdateien des angegebenen Pakets in das aktuelle Verzeichnis herunter. download benötigt die Angabe mindestens eines Paketnamens, aber ebenfalls keine Root-Rechte.

apt-get [Option(en)] download PAKET1 [PAKET2]

Unter älteren Ubuntu-Versionen kann man stattdessen die Option -d (siehe unten) verwenden:

sudo apt-get -d --reinstall install PAKET1 [PAKET2]

Die heruntergeladenen Pakete sind dann im Ordner /var/cache/apt/archives/ zu finden.

Optionen

apt-get bietet zahlreiche Schalter, um das Verhalten zu beeinflussen.

Kommandozeilenoptionen zu apt-get
Lange Option Kürzel Beschreibung
--arch-only Nur Pakete mit der zum System passenden Architektur werden heruntergeladen.
--assume-yes --yes -y Interaktive Fragen werden automatisch mit "YES"/"JA" beantwortet
--compile --build -b Den Quelltext kompilieren, nachdem er heruntergeladen wurde. Benutzung in Verbindung mit source.
--config-file -c Die angegebene Konfigurationsdatei benutzen, die die Standardkonfiguration ersetzt.
--diff-only Nur das Diff-File eines Patchsets herunterladen.
--download-only -d Pakete werden nur heruntergeladen, nicht installiert.
--fix-broken -f Fehl ende Abhängigkeiten werden nachinstalliert, kaputte Pakete werden eventuell deinstalliert. Es erlaubt die Nutzung von install oder remove ohne Angabe von Paketnamen.
--fix-missing --ignore-missing -m Nicht downloadbare Pakete werden auf "hold" gesetzt. In Verbindung mit --no-download werden nur Pakete im Paket-Cache benutzt.
--force-yes Ausnahmslos alle Rückfragen mit "YES"/"JA" beantwortet, auch wenn die Fragen als "kritisch" gekennzeichnet sind. Sehr gefährliche Option!
--ignore-hold Ein Paket wird trotz gesetztem Status "hold" auf die neueste Version gebracht.
--install-suggests Vorgeschlagene Pakete werden mitinstalliert.
--list-cleanup apt löscht nach update gespeicherte Listen aus Quellen, die nicht mehr in der sources.list stehen (standardmäßig aktiv).
--no-install-recommends Empfohlene Pakete werden nicht automatisch installiert.
--no-list-cleanup apt behält nach update die Paketlisten nicht mehr existenter Quellen der sources.list. Nützlich bei häufigem Wechsel des Mirrors.
--no-upgrade Bereits installierte Pakete werden auf dem alten Stand belassen und nicht auf die neueste Version gebracht. In Verbindung mit install ist es so eventuell möglich, alte Abhängigkeiten beizubehalten.
--only-upgrade Ausschließlich bereits installierte Pakete werden auf eine neue Version gebracht, keine neuen Pakete werden installiert.
--option -o Option: Die angegebene Option benutzen, statt dem in der Standardkonfiguration festgelegten Wert.
--print-uris Ausgabe der "download URIs" statt Herunterladen der Quellen bzw Pakete in Verbindung mit update oder install.
--purge Wird in Verbindung mit remove oder autoremove benutzt. Es werden zusätzlich zu den Paketen Konfigurationsdateien gelöscht.
--quiet -q Programmausgabe ohne Fortschrittsanzeige mit logbarer Ausgabe. Erhöhung des "Stille"-Levels mit -qq möglich. -qq impliziert -y, um einen automatischen Ablauf zu ermöglichen.
--reinstall Ein bereits installiertes Paket wird in Verbindung mit install neu aus den Quellen installiert, obwohl es bereits auf der aktuellen Version ist.
--show-upgraded -u Ausgabe einer Liste aller Pakete, die auf die neueste Version gebracht werden.
--simulate --just-print --dry-run --recon --no-act -s Die angedachten Änderungen werden simuliert, keine Änderung am System. Seit Version ?? ohne Root-Rechte möglich.
--tar-only Ausschließlich das TAR-File des Quelltextes herunterladen.
--target-release --default-release -t Setzt die Priorität für die Quellen des genannten Release-Namens auf 990.
--trivial-only Gegenstück zu --assume-yes. Alle Fragen werden mit "NO" beantwortet, so dass nur unkritische Operationen automatisch ausgeführt werden.
--verbose-versions -V Die Textausgabe der heruntergeladenen Daten wird um die vollen Versionsangaben erweitert.
Hinweis

Wie bei Shell-Befehlen üblich, lassen sich kurze Optionen zu einem Block zusammenfassen. Beispiel:

apt-get -s -t lucid update

lässt sich zusammenfassen in

apt-get -st lucid update

Beispiele

Deinstallation inklusive Abhängigkeiten und Konfiguration

Durch die Kombinationen von Kommando und Optionen hat man die Möglichkeit, mehrere Aktionen zu bündeln. Zum Beispiel die Deinstallation eines Pakets, der dann nicht mehr benötigten Abhängigkeiten sowie die Löschung der zugehörigen systemweiten Konfiguration des Pakets.

sudo apt-get --purge autoremove PAKET

Hinweis

Viele Anwendungsprogramme legen ihre spezifische Konfiguration durch den Benutzer in dessen Homeverzeichnis ab. Diese Daten werden niemals automatisch gelöscht.

Beispielskripte

Der Ablauf eines "update"-Vorgangs lässt sich als Skript abbilden und zum Beispiel mit cron aufrufen.

Hier werden einige Beispiele je nach gewünschtem Ergebnis gezeigt, die allerdings nur einen kleinen Teil der Möglichkeiten von apt nutzen.

Halbautomatische Aktualisierung

Falls man bei einem selten kontrollierten Rechner die Aktualisierungen vor dem Einspielen zwar einsehen möchte, aber den Zeitaufwand möglichst gering halten will, bietet sich (von diversen Automatismen abgesehen) folgender Ablauf an:

#!/bin/bash

apt-get update apt-get -d dist-upgrade apt-get autoclean

Hier werden zuerst die Paketlisten auf den neuesten Stand gebracht, dann vorhandene Aktualisierungspakete heruntergeladen und schließlich in den Quellen nicht mehr vorhandene Pakete aus dem Cache gelöscht, um Speicherplatz zu sparen. Dieser Ablauf kann automatisiert werden, so dass bei der nächsten Anmeldung die nötigen Pakete für einen "update"-Vorgang bereits vorliegen.

Automatische Sicherheitsaktualisierung

Zusätzlich zum zuvor beschriebenen Verfahren kann man auch sicherheitskritische Aktualisierungen sofort einspielen:

#!/bin/bash

apt-get update apt-get -yt $(lsb-release -s)-security dist-upgrade apt-get -d dist-upgrade apt-get autoclean

Automatische Sicherheitsaktualisierung
mit Einspielen unkritischer Pakete¶

Zusätzlich kann man unkritische Aktualisierungen auch automatisch einspielen und nur noch diejenigen Pakete manuell aktualisieren, die eine Nachfrage stellen: