4.19 apt-cache

Mit apt-cache können die verschiedensten Abfragen zu den bekannten Paketen (also auch zu den noch nicht installierten) erstellt werden. Dies beschränkt sich nicht nur auf Paketnamen oder die zu einem Paket gehörenden Dateinamen, sondern es können auch Informationen zu den Metadaten erfragt werden.

Wenn Sie nicht die Option -h oder --help benutzen, muss mindestens eines der folgenden Kommandos angegeben werden.

add

fügt die angegebene Package-Datei dem Package-Cache hinzu.

gencaches

Diese Option bewirkt das Gleiche wie apt-get check. Es werden die Source- und Package-Caches aus den Informationen in /etc/apt/sources.list und /var/lib/dpkg/status erstellt.

showpkg

Diese Option zeigt Informationen über die weiterhin auf der Kommandozeile angegebenen Pakete. Es werden die verfügbaren Versionen der Pakete sowie die gesamten Abhängigkeiten dieser Pakete angezeigt. Hierbei wird zwischen so genannten Forward-Dependencies und Reverse-Dependencies unterschieden. Forward-Dependencies (dies sind die im normalen Sprachgebrauch verwendeten Abhängigkeiten) beziehen sich auf die Pakete, die das angefragte Paket benötigt, um einwandfrei zu funktionieren. Reverse-Dependecies beschreiben die Pakete, die das angefragte Paket benötigen, um zu funktionieren. Ein Beispiel: apt-cache showpkg bash gibt folgendes Ergebnis aus:

Package: bash
Versions: 
2.05a-12(/var/lib/apt/lists/192.168.1.1_home_ftp_debian_dists_sid_
main_binary-i386_Packages)(/var/lib/dpkg/status)
2.05a-11(/var/lib/apt/lists/192.168.1.1_home_ftp_debian_dists_woody_
main_binary-i386_Packages)

Reverse Depends: 
  kernel-patch-ltt,bash 2.0
  kernel-patch-lkcd,bash 2.0
  kernel-patch-kdb,bash 2.0
  kernel-patch-acl,bash 2.0
  horde2,bash
  cron-apt,bash 2.03-6
  common-lisp-controller,bash 2.04-9
  cdcontrol,bash 2.0
  bash-doc,bash 2.03-1
  bash-builtins,bash 2.05a-12
  base-files,bash 2.03-3
  txt2regex,bash 2.04
  openmosix,bash 2.0
  mosix,bash 2.0
  mkrboot,bash
  mason,bash
  kernel-patch-ulog,bash 2.0
  kernel-patch-ttl,bash 2.0
  kernel-patch-ltt,bash 2.0
  kernel-patch-kiobuf-bigmem,bash 2.0
  kernel-patch-kiobuf,bash 2.0
  kernel-patch-kdb,bash 2.0
  kernel-patch-irc,bash 2.0
  kernel-patch-badram,bash 2.0
  htmlheadline,bash 2.04-1
  horde,bash 2.03-6
  gopherweblink,bash
  gibraltar-bootsupport,bash
  foomatic-bin,bash 2.05
  diffmon,bash 2.0
  cron-apt,bash 2.03-6
  common-lisp-controller,bash 2.04-9
  colorgcc,bash
  cdcontrol,bash 2.0
  bug,bash 2.04-1
  bash-doc,bash 2.03-1
  bash-builtins,bash 2.05a-11
  base-files,bash 2.03-3
Dependencies: 
2.05a-12 - base-files (2 2.1.12) libc6 (2 2.2.4-4) libncurses5 
(2 5.2.20020112a-1) grep-dctrl (0 (null)) bash-completion (0 
(null)) bash-doc (1 2.05-1) bash-completion (0 (null)) 
2.05a-11 - base-files (2 2.1.12) libc6 (2 2.2.4-4) libncurses5 
(2 5.2.20020112a-1) bash-completion (0 (null)) bash-doc (1 2.05-1) 
bash-completion (0 (null)) 
Provides: 
2.05a-12 - 
2.05a-11 - 
Reverse Provides: 

Es müssen also, damit dieses Paket funktioniert, mindestens die unter Dependencies aufgeführten Pakete installiert sein. Eine weitere wichtige Information sind die Reverse Depends. Dies sind Pakete, die von diesem Paket (bash) abhängen.

stats

Über den aktuellen Cache wird eine Statistik ausgegeben. Es sind keine weiteren Argumente notwendig. Folgende Informationen werden ausgegeben:

fr@sushi:~$ apt-cache stats
Total Package Names : 8953 (358k)
  Normal Packages: 6872
  Pure Virtual Packages: 259
  Single Virtual Packages: 176
  Mixed Virtual Packages: 115
  Missing: 1531
Total Distinct Versions: 9133 (438k)
Total Dependencies: 47613 (1143k)
Total Ver/File relations: 19322 (309k)
Total Provides Mappings: 1889 (37.8k)
Total Globbed Strings: 110 (1273)
Total Dependency Version space: 179k
Total Slack space: 86.3k
Total Space Accounted for: 2374k

Total Package Names - Anzahl der Paketnamen, die im Cache gefunden wurden.

Normal Packages - Dies sind Pakete, deren Namen in einer Abhängigkeit zu einem anderen Paket stehen; hierunter fällt eine große Zahl der Pakete.

Pure Virtual Packages - Anzahl der virtuellen Paketnamen im Cache. Dies sind Pakete, die ein Paket zur Verfügung stellen, deren Name aber nichts mit diesem zu tun hat. Als Beispiel sei hier mail-transport-agent genannt: Einige Pakete (beispielsweise exim, qmail und sendmail) stellen das Paket mail-transport-agent zur Verfügung, es gibt aber kein Programm mit dem Namen mail-transport-agent.

Single Virtual Packages - Dies ist die Anzahl der Pakete, die ein virtuelles Paket zur Verfügung stellen, das aber nur einmal im Cache auftaucht. Das virtuelle Paket X11-text-viewer wird beispielsweise nur von xless zur Verfügung gestellt.

Mixed Virtual Packages - Anzahl der Pakete, die sowohl als virtuelle als auch als reale Pakete vorhanden sind. debconf ist als reales Paket vorhanden, wird aber auch von debconf-tiny zur Verfügung gestellt.

Missing - Pakete, die in einer Abhängigkeit benannt werden, aber nicht im Cache zu finden sind. Dies kann vorkommen, wenn kein Zugriff auf eine komplette Debian Distribution gegeben ist oder wenn Pakete aus der Distribution entfernt wurden.

Total Distinct Versions - Die Anzahl der Paketversionen im Cache. Diese ist im Normalfall gleich der Anzahl der gesamten Pakete. Wenn jedoch zwei Distributionen (beispielsweise stable und testing) benutzt werden, kann es vorkommen, dass mehrere Versionen eines Pakets verfügbar sind. In diesem Fall kann die Zahl deutlich über der der gesamten Pakete liegen.

Total Dependencies - Die Anzahl der gesamten Abhängigkeiten zwischen allen Paketen im Cache.

Total Ver/File relations - Die Gesamtzahl an Version/Datei-Beziehungen.

Total Provides Mappings - Die Gesamtzahl an Bereitstellungen von Mappings.

Total Globbed Strings - Gesamtanzahl von Mustern

Total Dependency Version space - Gesamtmenge an Abhängigkeits/Versionsspeicher.

Total Slack space - Gesamtmenge an Slack Speicher.

Total Space Accounted for - Gesamtmenge des Speichers.

dump

Zeigt eine kurze Information zu jedem Paket an. Dies ist für den normalen Benutzer wenig sinnvoll und ist zur Fehlersuche für Entwickler gedacht.

dumpavail

Zeigt eine Liste der verfügbaren Pakete.

unmet

Zeigt eine Zusammenfassung aller nicht erfüllten Abhängigkeiten.

show

Hat einen ähnlichen Effekt wie das Kommando dpkg --print-avail und zeigt die Paketinformationen für die angegebenen Pakete.

search

Führt eine Volltextsuche über alle verfügbaren Paketdateien durch. Es können reguläre Ausdrücke benutzt werden. Die Paketnamen und Beschreibungen werden nach dem Suchbegriff durchsucht, und es werden der Paketname und die Kurzbeschreibung der entsprechenden Pakete ausgegeben. Wenn die Option --full angegeben wird, entspricht die Ausgabe der von show. Mit der Option --names-only wird die Paketbeschreibung nicht durchsucht; die Suche beschränkt sich auf den Paketnamen.

Mehrere Suchargumente können angegeben werden und werden dann über eine UND-Verknüpfung ausgewertet.

depends

Zeigt alle Abhängigkeiten eines Pakets an. Weiterhin werden alle anderen Pakete angezeigt, die die geforderten Abhängigkeiten erfüllen können.

fr@sushi:~$ apt-cache depends bash
bash
  Depends: base-files
  PreDepends: libc6
  PreDepends: libncurses5
  Suggests: grep-dctrl
  Conflicts: <bash-completion>
  Replaces: bash-doc
  Replaces: <bash-completion>

policy

Die Option policy zeigt zu einem Paket die installierte sowie die verfügbaren Versionen aus den erreichbaren Quellen an.

fr@sushi:~$ apt-cache policy bash
bash:
  Installed: 2.05b-5
  Candidate: 2.05b-5
  Version Table:
 *** 2.05b-5 0
        500 ftp://ftp.freenet.de sid/main Packages
        100 /var/lib/dpkg/status
     2.05b-3 0
        500 ftp://ftp.freenet.de testing/main Packages
        500 ftp://ftp.freenet.de sarge/main Packages
     2.05a-11 0
        500 ftp://ftp.freenet.de woody/main Packages

pkgnames

Zeigt eine Liste aller Paketnamen. Optional kann eine Zeichenkette angegeben werden, die als Suchpräfix verwendet wird.

dotty

Dieser Option kann eine Liste von Paketnamen mitgegeben werden. Die Ausgabe erfolgt in einem Format, das vom Programm dot aus dem Paket GraphVis (http://www.research.att.com/sw/tools/graphviz/) gelesen werden kann. GraphVis ist auch als Debian Paket verfügbar, kann also mittels apt-get installiert werden. Mit dieser Option und dem Programm dot kann eine grafische Darstellung der Paketabhängigkeiten erstellt werden. Normalerweise werden alle Abhängigkeiten verfolgt, was zu sehr großen Dateien führen kann.

Um die Grafik etwas zu verkleinern, kann die Zeile

APT::Cache::GivenOnly "true";
				

in der APT-Konfigurationsdatei /etc/apt/apt.conf hinzugefügt werden. Dies bewirkt, dass nur die auf der Kommandozeile angegebenen Pakete ausgewertet werden. Es kann passieren, dass eine sehr lange Liste von Paketen zum Abbruch des Programmes führt.

Das Ergebnis ist eine Grafik, die unterschiedliche Symbole für Pakete verwendet. Normale Pakete werden als schwarzes Rechteck dargestellt. Direkt abhängige Pakete (provides) werden als Trapez dargestellt. Diamant-förmige Pakete sind mixed-provides, und fehlende Pakete werden als Hexagon dargestellt. Orange-farbene Rechtecke bedeuten, dass die rekursive Suche abgebrochen wurde. Blaue Linien stellen Pre-Dependencies dar, und grüne Linien stehen für Konflikte.

Hier zwei kleine Beispiele dafür, wie diese Option sinnvoll eingesetzt werden kann:

apt-cache dotty vim | dot -Tps > packgraph.ps

apt-cache dotty $(dpkg --get-selections | grep -v deinstall \
         | awk 'print $1') | dot -Tps > packgraph.ps

Abbildung 4.5. apt-cache dotty vim - Beispiel

apt-cache dotty vim - Beispiel


Beide Beispiele erzeugen eine Postscript-Datei packgraph.ps. Diese kann beispielsweise mit dem Programm gv angezeigt werden.

[Tipp]Suchen ohne apt-cache

Die aus der Bash-Shell bekannte Vervollständigung von Dateinamen (mittels TAB-Taste) kann auch auf Debian Pakete ausgeweitet werden. Hierzu ist die Datei /etc/bash_completion zu sourcen, beispielsweise durch das Kommando source /etc/bash_completion. Nun kann auch apt-get install durch das Drücken der Taste TAB vervollständigt werden.

 Impressum