Ein kleines APT-Kochbuch

Was bedeutet APT?

APT ist eine Abkürzung für Advanced Packaging Tool und stellt eine Sammlung von Programmen und Skripten, welche das System und den Administrator bei der Installation und Verwaltung von Debian-Paketen unterstützt.

Liste der Quellen (sources.list)

Das "APT"-System benötigt eine Konfigurationsdatei, welche Informationen über den Ort der installierbaren und aktualisierbaren Pakete beinhaltet. Im allgemeinen nennt man diese Datei sources.list.

Die Quellen befinden sich in diesem Ordner:
/etc/apt/sources.list.d/

Innerhalb dieses Verzeichnisses befinden sich zwei Dateien:
/etc/apt/sources.list.d/debian.list und
/etc/apt/sources.list.d/aptosid.list

Dies hat den Vorteil, dass leichter automatisch aus Spiegelservern gewählt werden kann ("mirror switching"), und auch das Ergänzen oder Austauschen von Quell-Listen ist so einfacher zu gestalten.

Eigene Quell-Listen-Dateien können mit der Benennung /etc/apt/sources.list.d/*.list hinzugefügt werden.

Alle ISOs von aptosid nutzen folgende Quellserver in der Grundeinstellung:

#aptosid
# Freie Universität Berlin / Spline (Student Project LInux NEtwork), Deutschland
deb ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main
#deb-src ftp://ftp.spline.de/pub/aptosid/debian/ sid main fix.main

Weitere Einträge für non-free findet man in der immer aktuellen aptosid.list und debian.list:

#Debian
# Unstable
deb http://ftp.us.debian.org/debian/ unstable main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ unstable main contrib non-free

# Testing
#deb http://ftp.us.debian.org/debian/ testing main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ testing main contrib non-free

# Experimental
#deb http://ftp.us.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.us.debian.org/debian/ experimental main contrib non-free

ZUR BEACHTUNG: in diesem Beispiel wird der US-amerikanische Debian-Spiegelserver beginnend mit ftp.us verwendet. Diese Einstellung kann als root geändert werden, indem der Landes-Code angepasst wird (zum Beispiel: ftp.at, ftp.de). Die meisten Länder haben lokale Debian-Spiegelserver zur Verfügung. Dies bietet für den Anwender eine höhere Anbindungsgeschwindigkeit und spart auch Bandbreite.

Liste der aktuell verfügbaren Debian-Server und deren Spiegelserver.

Um aktualisierte Informationen über die Pakete zu erhalten, wird eine Datenbank mit den benötigten Einträgen vorgehalten. Das Programm apt-get benutzt sie bei der Installation eines Pakets, um alle Abhängigkeiten aufzulösen und somit zu garantieren, dass die ausgewählten Pakete funktionieren. Die Erstellung bzw. Aktualisierung dieser Datenbank wird mit dem Befehl 'apt-get update' durchgeführt.

# apt-get update
	(mit folgender Ausgabe)
Get:1 http://aptosid.com sid Release.gpg [189B]
Get:2 http://aptosid.com sid Release.gpg [189B]
Get:3 http://aptosid.com sid Release.gpg [189B]
Get:4 http://ftp.de.debian.org unstable Release.gpg [189B]
Get:5 http://aptosid.com sid Release [34.1kB]
Get:6 http://ftp.de.debian.org unstable Release [79.6kB]

Wie installiere ich ein neues Paket?

Das Installieren und Aktualisieren von Paketen bei laufender X-Umgebung kann, unabhängig von der Installationsmethode, zu Problemen führen.

Solange die Installation eines Pakets keine Aktualisierung installierter Pakete initiiert, kann dieses sicher installiert werden, ohne dass X angehalten werden muss. Falls zur Installation dieses Pakets eine Aktualisierung bereits installierter Pakete notwendig wird, sollte mit extremster Vorsicht überprüft werden, ob keines der aktuell verwendeten Pakete aktualisiert wird. Ist ein zu aktualisierendes Paket aktuell in Verwendung, sollte X vor der Installation angehalten werden.

Bei den geringsten Zweifeln, sollte sichergestellt werden, dass, wie in der Anleitung zur Systemaktualisierung beschrieben, X vor der Installation verlassen wird. dist-upgrade - Die einzelnen Schritte .

Vorausgesetzt, dass die APT-Datenbank aktualisiert ist und der Name des Pakets bekannt ist, reicht folgender Befehl (weiter unten wird gezeigt, wie man ein Paket finden kann):

# apt-get install gaim
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
  libavahi-compat-howl0 libgstreamer0.10-0
Vorgeschlagene Pakete:
  libgadu3 libmeanwhile1 libzephyr3 gstreamer0.10-tools gstreamer0.10-plugins
Empfohlene Pakete:
  gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-alsa gstreamer0.10-esd
Die folgenden NEUEN Pakete werden installiert:
  gaim libavahi-compat-howl0 libgstreamer0.10-0
0 aktualisiert, 3 neu installiert, 0 zu entfernen und 1 nicht aktualisiert.
Es müssen 2365kB Archive geholt werden.
Nach dem Auspacken werden 6578kB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren [J/n]?
Hole:1 http://ftp.de.debian.org unstable/main libavahi-compat-howl0 0.6.15-2 [35,4kB]
Hole:2 http://ftp.de.debian.org unstable/main libgstreamer0.10-0 0.10.10-2 [651kB]
Hole:3 http://ftp.de.debian.org unstable/main gaim 1:2.0.0+beta5-8 [1679kB]
Es wurden 2365kB in 4s geholt (518kB/s)
Wähle vormals abgewähltes Paket libavahi-compat-howl0.
(Lese Datenbank ... 138649 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke libavahi-compat-howl0 (aus .../libavahi-compat-howl0_0.6.15-2_i386.deb) ...
Wähle vormals abgewähltes Paket libgstreamer0.10-0.
Entpacke libgstreamer0.10-0 (aus .../libgstreamer0.10-0_0.10.10-2_i386.deb) ...
Wähle vormals abgewähltes Paket gaim.
Entpacke gaim (aus .../gaim_1%3a2.0.0+beta5-8_i386.deb) ...
Richte libavahi-compat-howl0 ein (0.6.15-2) ...

Richte libgstreamer0.10-0 ein (0.10.10-2) ...

Richte gaim ein (2.0.0+beta5-8) ...

Entfernen eines Pakets

Der nächste Befehl entfernt ein Paket. Abhängigkeiten werden nicht mit vom System entfernt:

apt-get remove gaim
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden Pakete werden ENTFERNT:
  gaim
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 1 nicht aktualisiert.
Es müssen 0B Archive geholt werden.
Nach dem Auspacken werden 4678kB Plattenplatz freigegeben worden sein.
Möchten Sie fortfahren [J/n]?
(Lese Datenbank ... 138763 Dateien und Verzeichnisse sind derzeit installiert.)
Entferne gaim ...

In dem letzten Fall werden die Konfigurationsdateien nicht vom System entfernt, sie können bei einer späteren Neuinstallation des Programmpakets (im Beispielfall gaim) wieder verwendet werden. Sollen auch die Konfigurationsdateien entfernt werden, dann wird folgender Aufruf benötigt:

apt-get --purge remove gaim
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden Pakete werden ENTFERNT:
  gaim*
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 1 nicht aktualisiert.
Es müssen 0B Archive geholt werden.
Nach dem Auspacken werden 4678kB Plattenplatz freigegeben worden sein.
Möchten Sie fortfahren [J/n]?
(Lese Datenbank ... 138763 Dateien und Verzeichnisse sind derzeit installiert.)
Entferne gaim ...
Lösche Konfigurationsdateien von gaim ...

Man beachte den Stern * am Ende des Paketnamen in der Ausgabe von apt. Der Stern signalisiert, dass auch die Konfigurationsdateien entfernt werden.

Downgraden/Hold eines Pakets

Manchmal kann es notwendig sein, auf eine frühere Version eines Pakets zurückzugreifen, da die neueste Version einen gravierenden Fehler aufweist.

Hold (Halten)

echo package hold|dpkg --set-selections

So beendet man den Hold eines Pakets

echo package install|dpkg --set-selections

So sucht man nach Paketen, die auf Hold gesetzt sind:

dpkg --get-selections | grep hold

Downgraden (Deaktualisierung)

Debian unterstützt keinen Downgrade von Paketen. In einfachen Fällen kann das Installieren älterer Versionen gelingen, es kann aber auch spektakulär fehlschlagen. Mehr Informationen im englischsprachigen Debian-Handbuch unter dem Kapitel Emergency downgrading.

Obowhl ein Downgrade nicht unterstützt ist, kann er bei einfachen Paketen gelingen. Die Schritte für einen Downgrade werden nun am Paket kmahjongg demonstriert:

  1. Die Quellen von Unstable werden in /etc/apt/sources.list.d/debian.list mit einem Rautezeichen #versehen
  2. Die Quellen für Testing werden /etc/apt/sources.list.d/debian.list zugefügt und und die weiteren Befehle ausgeführt:
    deb http://ftp.nl.debian.org/debian/ testing main contrib non-free
    
  3. apt-get update
    
  4. apt-get install kmahjongg/testing
    
  5. Das nun installierte Paket wird nun vor Aktualisierungen geschützt, auf Hold gesetzt:
    echo kmahjongg hold|dpkg --set-selections
    
  6. nun werden die Quellen für Testing mit einem Rautezeichen <#> in /etc/apt/sources.list.d/debian.list versehen, während das Rautezeichen vor den Quellen für Unstable wieder entfernt werden. Nach dem Speichern der Änderungen:
  7. apt-get update
    

Wenn ein neues, fehlerfreies Paket in sid eintrifft, kann man die neueste Version wieder installieren, wenn man den "hold"-Status beendet:

echo kmahjongg install|dpkg --set-selections
apt-get update
apt-get install kmahjongg

apt-mark

apt-mark ist ein nützliches Programm, welches den Installationsstatus "automatisch" oder "manuell" zeigt und so dem Systemadministrator die Möglichkeit eröffnet, Pakete zu markieren und auf "Hold" zu setzen, die nicht automatisch entfernt werden sollen. Mehr Informationen:

man apt-mark

Aktualisierung des installierten Systems - dist-upgrade - Überblick

Eine Aktualisierung des ganzen Systems wird mit diesem Befehl durchgeführt: dist-upgrade. Vor einer solchen Maßnahme sollten die aktuellen Upgradewarnungen auf der Hauptseite von aptosid beachtet werden, um zu prüfen, ob Pakete des eigenen Systems betroffen sind. Wenn ein installiertes Paket behalten, also auf hold gesetzt werden sollte, verweisen wir auf den Abschnitt Downgrade bzw. "Hold" eines Pakets.

Ein einfaches 'apt-get upgrade' von Debian Sid ist nicht empfohlen.

Wie regelmäßig soll eine Systemaktualisierung durchgeführt werden?

Eine Systemaktualisierung soll regelmäßig durchgeführt werden, alle ein bis zwei Wochen haben sich als guter Richtwert erwiesen. Auch bei monatlichen Systemaktualisierungen sollte es zu keinen nennenswerten Problemen kommen. Die Erfahrungen zeigen, dass länger als zwei, maximal drei Monate nicht zugewartet werden sollte. Besonders beachtet sollten Programmpakete werden, welche nicht aus den aptosid- oder Debian-Repositorien stammen oder selbst kompiliert wurden, da diese nach einer Systemaktualisierung mittels dist-upgrade wegen Inkompatibilitäten ihre Funktionsfähigkeit verlieren können.

Nachdem die interne Datenbank aktualisiert wurde, kann man herausfinden, für welche Pakete eine neuere Version existiert (zuerst muss apt-show-versions installiert werden):

apt-show-versions -u
libpam-runtime/unstable upgradeable from 0.79-1 to 0.79-3
passwd/unstable upgradeable from 1:4.0.12-5 to 1:4.0.12-6
teclasat/unstable upgradeable from 0.7m02-1 to 0.7n01-1
libpam-modules/unstable upgradeable from 0.79-1 to 0.79-3.........

Die Aktualisierung eines einzelnes Pakets (hier z. B. debtags-1.6.6.0) kann unter Berücksichtigung der Abhängigkeiten vorgenommen werden mit:

# apt-get install debtags-1.6.6.0
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden Pakete werden ENTFERNT:
  apt-index-watcher
Die folgenden Pakete werden aktualisiert:
  debtags
1 aktualisiert, 0 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
Es müssen 660kB Archive geholt werden.
Nach dem Auspacken werden 1991kB Plattenplatz freigegeben worden sein.
Möchten Sie fortfahren [J/n]?
Hole:1 http://ftp.de.debian.org unstable/main debtags 1.6.6 [660kB]
Es wurden 660kB in 1s geholt (513kB/s)
(Lese Datenbank ... 138695 Dateien und Verzeichnisse sind derzeit installiert.)
Entferne apt-index-watcher ...
(Lese Datenbank ... 138692 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereiten zum Ersetzen von debtags 1.6.2 (durch .../debtags_1.6.6_i386.deb) ...
Entpacke Ersatz für debtags ...
Richte debtags ein (1.6.6) ...
Installiere neue Version der Konfigurationsdatei /etc/debtags/sources.list ...

(Nur) Downloaden

Eine wenig bekannte, aber großartige Möglichkeit ist die Option -d:

apt-get update && apt-get dist-upgrade -d

-d ermöglicht, die Pakete eines dist-upgrades lokal zu speichern, ohne dass sie installiert werden. Dies kann in einer Konsole durchgeführt werden, während man in X ist. Der dist-upgrade selbst kann zu einem späteren Zeitpunkt in init 3 erfolgen. Dadurch erhält man auch die Möglichkeit, nach eventuellen Warnungen zu recherchieren und danach zu entscheiden, ob man die Aktualisierung durchführen möchte oder nicht:

apt-get dist-upgrade -d
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  elinks-data
The following packages have been kept back:
  git-core git-gui git-svn gitk icedove libmpich1.0ldbl
The following packages will be upgraded:
  alsa-base bsdutils ceni configure-ndiswrapper debhelper
  discover1-data elinks file fuse-utils gnucash.........
35 upgraded, 1 newly installed, 0 to remove and 6 not upgraded.
Need to get 23.4MB of archives.
After this operation, 594kB of additional disk space will be used.
Möchten Sie fortfahren [J/n]?J 

J lädt die zu aktualisierenden bzw. neu zu installierenden Pakete, ohne das installierte System zu verändern.

Nach dem Download der Pakete mittels 'dist-upgrade -d' können diese jederzeit nach folgendem Muster installiert werden:

dist-upgrade - Die einzelnen Schritte

Bitte NIEMALS eine Systemaktualisierung in der graphischen Umgebung X durchführen.
Besuchen Sie vor einer Systemaktualisierung die aptosid-Homepage, um eventuelle Upgradewarnungen in Erfahrung zu bringen. Diese Warnungen sind wegen der Struktur von Debian sid/unstable notwendig, welches täglich neue Programmpakete in seine Repositorien aufnimmt.
# Aus der KDE-Desktopumgebung abmelden
# In den Textmodus gehen mit Ctrl+Alt+F1
# Einloggen als root
init 3
apt-get update
apt-get dist-upgrade
apt-get clean
init 5 && exit
Bitte NIEMALS eine Systemaktualisierung mit einem Programm wie synaptic, adept, aptitude oder kpackage durchführen!

Warnhinweis: Eine Systemaktualisierung, die nicht im Runlevel 3 (init 3) durchgeführt wird, kann große, nicht unterstützbare Probleme mit sich bringen!

Gründe, warum man nur apt-get für eine Systemaktualisierung verwenden soll

Paketmanager wie adept, aptitude, synaptic und kpackage können nicht immer die umfassenden Änderungen in Sid (Änderungen von Abhängigkeiten, Benennungskonventionen, Skripten u.a.) korrekt auflösen. Dies sind keine Fehler in diesen Programmen oder Fehler der Entwickler.

Dies sind exzellente Programme für eine Installation von Debian stable, aber sie sind nicht angepasst an die besonderen Aufgaben der dynamischen Distribution Debian Sid.

Diese Programme können sich sehr gut dazu eignen, Programme zu suchen, aber zum Installieren, Löschen und zum Durchführen einer Systemaktualisierung soll apt-get verwendet werden.

Paketmanager wie adept, aptitude, synaptic und kpackage sind - technisch gesprochen - nicht-deterministisch. Bei Verwendung einer dynamischen Distribution wie Debian Sid unter Hinzunahme von Drittrepositorien, deren Qualität nicht vom Debian-Team getestet sein kann, kann eine Systemaktualisierung zur Katastrophe führen, da diese Paketmanager durch automatische Lösungsversuche falsche Entscheidungen treffen können.

Weiterhin ist zu beachten, dass ALLE GUI-Paketmanager in X ausgeführt werden müssen, und Systemaktualisierungen in X (oder selbst ein ohnehin nicht empfohlenes 'apt-get upgrade') werden früher oder später dazu führen, dass man sein System irreversibel beschädigt hat.

Im Gegensatz dazu führt apt-get ausschließlich das durch, was angefragt ist. Bei unvollständigen Abhängigkeiten in Sid, sprich: wenn das System bricht (dies kann in Sid bei Strukturänderungen vorkommen), können die Ursachen genau festgestellt und dadurch repariert oder umgangen werden. Das eigene System "bricht" nicht. Falls also eine Systemaktualisierung dem Gefühl nach das halbe System löschen möchte, überlässt apt-get dem Administrator die Entscheidung, was zu tun ist, und handelt nicht eigenmächtig.

Dies ist der Grund, warum Debian-Builds apt-get nutzen und nicht andere Paketmanager.

Mit apt-cache nach Programmpaketen suchen

Ein sehr nützlicher Befehl im APT-System ist apt-cache, damit werden die APT-Datenbank durchsucht und Informationen über die Pakete ausgegeben; z. B. die Liste aller Pakete, die "aptosid" und "manual" enthalten oder ansprechen, erhält man durch folgenden Befehl:

$ apt-cache search aptosid manual
.......
aptosid-manual-common - the official aptosid manual - common files
aptosid-manual-es - the official Spanish aptosid manual
aptosid-manual-de - the official German aptosid manual
aptosid-manual-el - the official Greek aptosid manual
aptosid-manual-pt-br - the official Brazilian Portuguese aptosid manual
aptosid-manual-en - the official English aptosid manual

Möchte man mehr Informationen über die aktuellen Versionen eines Pakets, dann benutzt man:

$ apt-cache show aptosid-manual-de
Package: aptosid-manual-de
Priority: optional
Section: doc
Installed-Size: 1096
Maintainer: Kel Modderman <kel@otaku42.de>
Architecture: all
Source: aptosid-manual
Version: 00.00.2010.08.14-1
Depends: aptosid-manual-common
Filename: pool/main/s/aptosid-manual/aptosid-manual-de_00.00.2010.08.14-1_all.deb
Size: 388860
MD5sum: e73f66e8dc90c57e764411a099d45ebc
SHA1: a0a63fa991cab09e4422f26fdb0c4c5ac7b27bdd
SHA256: e177819755f0d04cfe7c455e2bd4257063b7bb5521af6df7d7dd3b30727b2bb2
Description: the official en aptosid manual
 This manual is divided into common sections, for example, .......

Alle installierbaren Versionen des Pakets (abhängig von der sources.list) können folgendermaßen aufgelistet werden:

$ apt-cache policy aptosid-manual-de
aptosid-manual-de:
  Installiert:(keine)
  Mögliche Pakete:00.00.2010.08.14-1
  Versions-Tabelle:
     00.00.2010.08.14-1 0
        500 http://aptosid.com sid/main Packages

Eine vollständige Beschreibung des APT-Systems findet man in Debians APT-HOWTO

Content last revised 10/05/2012 1330 UTC