3.4. Die Datei /etc/apt/sources.list verstehen

3.4.1. Format der Paketliste

Wie auf UNIX/Linux-Systemen üblich, ist die Konfigurationsdatei /etc/apt/sources.list eine reine Textdatei. Die Einträge darin erfolgen zeilenweise. Jede einzelne Paketquelle beschreiben Sie vollständig in einer separaten Zeile.

Abbildung 3.2. /etc/apt/sources.list im Texteditor nano

werkzeuge/paketquellen-und-werkzeuge/etc-apt-sources.list-verstehen/sources-list-nano.png

Sie fügen eine weitere Paketquelle hinzu, indem Sie die Liste um eine weitere Zeile ergänzen. Tragen Sie dazu in einer freien oder zusätzlichen Zeile die gewünschte Paketquelle nach. Um eine bereits erfasste Paketquelle zu modifizieren, ändern Sie den Listeneintrag in der entsprechenden Zeile. Mit Hilfe des #-Zeichens zu Beginn einer Zeile kommentieren Sie den jeweiligen Eintrag aus. Eine Paketquelle entfernen Sie endgültig aus der Liste, indem Sie die betreffende Zeile löschen.

Anzahl der Einträge

Es gibt keine Begrenzung für die Anzahl der Einträge. Bitte beachten Sie aber, dass die Zeit und das Übertragungsvolumen für die Aktualisierung der Paketlisten umso größer wird, je mehr Einträge vorhanden sind.

Bei der späteren Aktualisierung der lokalen Paketliste mittels apt-get update, aptitude update oder apt update (siehe Abschnitt 8.41, „Pakete aktualisieren“) werden die Paketquellen in der Reihenfolge abgearbeitet, wie sie in der Datei /etc/apt/sources.list aufgeführt sind. Ignoriert werden dabei Leerzeilen und die Einträge, die mit einem Hashzeichen # beginnen und somit auskommentiert sind.

Empfehlung zur Abfolge

Für das Hinzufügen und Ändern der Paketquellen empfehlen wir Ihnen eine bestimmte Reihenfolge (siehe Abschnitt 3.2, „Empfehlung zum Ablauf für das Hinzufügen und Ändern von Paketquellen“). Damit erleben Sie zukünftig keine bösen Überraschungen mehr.

Zur Automatisierung des Vorgangs wurden ebenfalls eine Reihe von Programmen entwickelt. Dazu zählen apt-cdrom (siehe dazu Abschnitt 3.9, „Physische Installationsmedien mit apt-cdrom einbinden“) und add-apt-repository (siehe dazu Abschnitt 3.10, „Einträge mit add-apt-repository im Griff behalten“)). Sind Sie hingegen weniger tastaturaffin, bieten sich als weitere Möglichkeiten sowohl Synaptic sowie der Sources List Generator für Debian und Ubuntu an. Diese Programme stellen wir Ihnen in Abschnitt 3.11, „Einstellungen mit Synaptic“ und Abschnitt 3.12, „Debian und Ubuntu Sources List Generator“ ausführlicher vor.

3.4.2. Format eines Eintrags

Jeder Eintrag in der Datei /etc/apt/sources.list folgt einem festen Muster mit einer genauen Abfolge von definierten Feldern:

Art_der_Quelle URI Distribution [Komponente 1] [Komponente 2] [...]

Jedes dieser Felder hat eine bestimmte Funktion und erlaubt nur ausgewählte Inhalte:

Art der Quelle
bezeichnet den verwendeten Pakettyp. Zulässig sind entweder deb für Debian-Binärpakete und deb-src für Debian-Quellpakete. Genauer gehen wir dazu unter „Debians Paketvarianten“ in Abschnitt 2.7, „Debian-Pakete (Varianten)“ und „Debian-Paketformat“ im Detail in Kapitel 4, Debian-Paketformat im Detail ein.
URI

legt die Art der Installationsquelle fest. Hierbei sind diese Angaben zulässig:

  • file: die Installationsquelle ist ein Verzeichnis. Dieses kann sowohl lokal vorliegen, als auch von extern eingebunden sein, bspw. über ein Netzwerkdateisystem wie AFS, NFS oder SMB
  • cdrom: genutzt wird eine CD, eine DVD oder eine Blu-ray als Installationsmedium
  • http: die Installationsquelle ist ein HTTP-Server
  • https: die Installationsquelle ist ein HTTPS-Server
  • ftp: die Installationsquelle ist ein FTP-Server
  • copy: identisch zum Eintrag file, aber die bezogenen Debianpakete werden zusätzlich im Paketcache abgelegt, der sich unter /var/cache/apt/archives/ befindet
  • mirror: Auswahl einer Installationsquelle anhand der GeoIP des Servers (siehe Abschnitt 3.7.2, „Paketquellen über GeoIP auswählen“)
Distribution

benennt die Veröffentlichung (siehe Abschnitt 2.10, „Veröffentlichungen“), aus der Pakete installiert werden sollen. Typisch ist hier die Angabe des Entwicklungsstands (siehe Abschnitt 2.10.1, „Bedeutung der verschiedenen Entwicklungsstände“) wie bspw. stable, unstable oder testing sowie die Nennung des alternativen Distributionsnamens wie bspw. Bullseye, Bookworm oder Sid (siehe Abschnitt 2.10.2, „Alias-Namen“).

Bitte beachten Sie bei Debian und Ubuntu die vollständige Kleinschreibung des Namens. Nicht-offizielle Paketquellen können an dieser Stelle jedoch auch sonstige Zeichenketten bis hin zu einem . verlangen.

Komponente
bestimmt den Distributionsbereich, d.h. bspw. bei Debian main, contrib, non-free oder non-free-firmware. Ausführlicher gehen wir darauf in Abschnitt 2.9, „Distributionsbereiche“ ein.

3.4.3. Beispieleinträge für offizielle Pakete

Der Standardeintrag für den Bezug von stabilen Debianpaketen aus dem Bereich main mit dem deutschen Spiegelserver als Paketquelle sieht folgendermaßen aus:

deb http://ftp.de.debian.org/debian/ stable main

Mit diesem Eintrag beziehen Sie stets nur Pakete aus der aktuellen, stabilen Veröffentlichung. Erscheint eine neue Veröffentlichung, sind Sie damit auf der sicheren Seite und wechseln automatisch zum Nachfolger.

Tragen Sie hingegen anstatt von stable den entsprechenden Aliasnamen der Veröffentlichung in Kleinbuchstaben wie bspw. bullseye oder bookworm ein, nutzen Sie ausschließlich Pakete aus der damit spezifizierten Veröffentlichung, die diesen Aliasnamen trägt. Möchten Sie später von dieser auf eine andere Veröffentlichung wechseln, passen Sie zunächst den Aliasnamen im Eintrag entsprechend an und aktualisieren nachfolgend die lokale Paketdatenbank (siehe „Distribution aktualisieren“ in Abschnitt 8.47, „Distribution aktualisieren (update und upgrade)“).

Um hingegen zusätzlich die Pakete aus weiteren Paketbereichen wie bspw. contrib, non-free und non-free-firmware zu verwenden, ändern Sie den Eintrag auf das Folgende, hier wiederum mit expliziter Angabe des Aliasnamens bookworm:

deb http://ftp.de.debian.org/debian/ bookworm main contrib non-free non-free-firmware

In welcher Reihenfolge Sie die einzelnen, gewünschten Paketbereiche angeben, spielt keine Rolle. Üblich ist jedoch die Abfolge anhand des Freiheitsgrades der Softwarelizenz in der Form von main contrib non-free non-free-firmware.

Auswahl eines Paketmirrors

Mehr Informationen zur Auswahl eines für Sie am besten geeigneten Paketmirrors erfahren Sie unter „Geeigneten Paketmirror auswählen“ in Abschnitt 3.5, „Geeigneten Paketmirror auswählen“. Mit dieser Angabe beeinflussen Sie die Bezugszeiten für Aktualisierungen der Paketlisten und der Pakete erheblich zu ihren Gunsten.

3.4.4. Verzeichnis als Paketquelle

Pakete können Sie auch aus einem Verzeichnis ihres Debian-Systems integrieren. Dabei sind Sie nicht auf lokale Einträge beschränkt, sondern können auch auf entfernte Ressourcen zugreifen, bspw. ein NFS- oder SMB-Share. Voraussetzung ist allerdings, dass die angegebene Ressource vorab in den Verzeichnisbaum eingehängt wurde (auf engl. mounted) und APT darauf zugreifen darf. Eine lokale Ressource geben Sie über das Schlüsselwort file an, hier am Beispiel des Verzeichnisses /home/benutzer/debian:

deb file:/home/benutzer/debian stable main contrib non-free

Ein Eintrag für einen externen Datenträger, bspw. eine CD, DVD oder Blu-ray, sieht ähnlich wie die vorhergehenden Beispiele aus. Nach dem Schlüsselwort deb folgt der Wert cdrom mit der Kennung des Datenträgers zur Installation. Am Schluss des Eintrags finden Sie die Veröffentlichung und den Distributionsbereich. Nachfolgend sehen Sie einen Eintrag für eine CD, auf dem Ubuntu 12.04 LTS Precise Pangolin enthalten ist:

deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_ - Release i386 (20120423)]/ precise main restricted

Automatisierung der Eintragung

Obige Einträge können Sie von Hand vornehmen. Das Werkzeug apt-cdrom vereinfacht den Vorgang jedoch erheblich. Unter „Physische Installationsmedien mit apt-cdrom einbinden“ in Abschnitt 3.9, „Physische Installationsmedien mit apt-cdrom einbinden“ besprechen wir das Programm genauer.

3.4.5. Einträge für Sicherheitsaktualisierungen

Häufig, aber in unregelmäßigen Abständen – d.h. wenn es erforderlich ist – kündigt das Debian Security-Team [Debian-Security] Sicherheitsaktualisierungen an und stellt diese bereit. Um von diesen Aktualisierungen zu profitieren, braucht es einen entsprechenden Eintrag in der Datei /etc/apt/sources.list.

Typischerweise wird dieser bereits zum Installationzeitpunkt vom Debian Installer angelegt, falls die entsprechende Frage mit "Ja" beantwortet haben.

Hatten Sie während der Installation bei der Frage nach Sicherheitsaktualisierungen "Nein" ausgewählt, oder fehlt der Eintrag aus sonstigen Gründen, so können Sie diesen manuell nachtragen.

Allerdings ist an dieser Stelle darauf zu achten, dass sich das Format des Eintrages zwischen Debian 10 Buster und Debian 11 Bullseye leicht geändert hat.

sources.list-Eintrag für Sicherheitsaktualisierungen bis Debian 10. 

deb http://security.debian.org/ <veröffentlichungsname>/updates <archivbereiche>

sources.list-Eintrag für Sicherheitsaktualisierungen ab Debian 11. 

deb http://security.debian.org/ <veröffentlichungsname>-security <archivbereiche>

Entsprechend hier Beispiele für Debian 10 Buster, Debian 11 Bullseye und Debian 12 Bookworm:

sources.list-Eintrag für Sicherheitsaktualisierungen in Debian 10 Buster

deb http://security.debian.org/ buster/updates main contrib non-free

sources.list-Eintrag für Sicherheitsaktualisierungen in Debian 11 Bullseye

deb http://security.debian.org/ bullseye-security main contrib non-free

sources.list-Eintrag für Sicherheitsaktualisierungen in Debian 12 Bookworm

deb http://security.debian.org/ bookworm-security main contrib non-free non-free-firmware

Obige Angaben beinhalten wiederum die empfohlene explizite Verwendung des Aliasnamens der Veröffentlichung anstatt des Suite-Namens. Dieser Name wird gefolgt vom Unterverzeichnis updates und den daraus gewünschten Distributionsbereichen main, contrib und non-free sowie ab Debian 12 Bookworm auch non-free-firmware. Je nach System nicht benötigte Archiv-Bereiche (z.B. non-free oder non-free-firmware) können Sie einfach weglassen.

3.4.6. Einträge für zusätzliche, nicht-offizielle Pakete

Nicht alle verfügbaren Softwareveröffentlichungen werden in die offiziellen Paketquellen von Debian aufgenommen. Viele Projekte stellen Programmversionen als deb-Pakete bereit, die sich von der Version her von der stabilen Veröffentlichung von Debian unterscheiden.

Im folgenden Beispiel sehen Sie die Einbindung der Paketquellen des PostgreSQL-Projekts [APT-Repo-PostgreSQL] und des X2Go-Projekts [APT-Repo-X2Go] für Debian 10 Buster:

deb https://apt.postgresql.org/pub/repos/apt/ buster-pgdg main
deb https://packages.x2go.org/debian buster main

Ähnliches gilt für Unternehmen, die erfreulicherweise inzwischen vielfach eigene deb-Pakete für ihre Produkte zur Verfügung stellen. Die exakte Bezugsquelle finden Sie zumeist auf der Webseite des jeweiligen Unternehmens. Um bspw. die Pakete für den Webbrowser Opera des gleichnamigen skandinavischen Herstellers einzubinden, hilft Ihnen folgender Verweis[8] auf den Bereich non-free auf dessen Paketserver:

deb http://deb.opera.com/opera stable non-free

Ergänzung der Signatur der Paketquelle

Damit Debian dieser zusätzlichen Paketquelle auch vertraut, überprüft es dazu eine entsprechende digitale Signatur. Wie dieses Konzept funktioniert und Sie einen passenden Schlüssel beziehen, lesen Sie unter „Paketquelle auf Echtheit überprüfen“ in Abschnitt 3.13, „Paketquelle auf Echtheit überprüfen“.

Eigene .list-Datei für fremde Paketquellen.

Anstatt alle Einträge direkt in die Datei /etc/apt/sources.list zu schreiben, können Sie einen oder mehrere Einträge auch in separate Dateien unter /etc/apt/sources.list.d/ ablegen. Dateien in diesem Verzeichnis bedürfen der Endung .list, um von APT beachtet zu werden.

So könnten Sie z.B. die Beispiele in diesem Abschnitt in den Dateien /etc/apt/sources.list.d/postgresql.list, /etc/apt/sources.list.d/x2go.list und /etc/apt/sources.list.d/opera.list speichern. Damit behalten Sie bereits anhand des Dateinamens den Überblick, aus welchen Fremdquellen weitere Pakete bezogen werden.

3.4.7. Einträge für Quellpakete

Um Debian-Quellpakete (siehe Abschnitt 2.7.4, „Source-Pakete (dsc und weitere Dateien)“) zu nutzen, benötigen Sie eine weitere Zeile in ihrer Paketliste. Im Vergleich zu Binärpaketen ändert sich lediglich das Schlüsselwort am Anfang eines Eintrags von deb auf deb-src. Danach erwartet APT wie gewohnt den Eintrag der Paketquelle. Für die offiziellen Quellpakete sieht der Eintrag wie folgt aus, hier am Beispiel des deutschen Paketmirrors für Debian 12 Bookworm:

deb-src http://ftp.de.debian.org/debian/ bookworm main

3.4.8. Einträge für Deutschland

Liegt ihr Lebens- und Arbeitsmittelpunkt in Deutschland oder Sie beziehen die Pakete von einem Paketmirror, der in Deutschland steht, enthält die Datei typischerweise die folgenden Einträge:

deb http://ftp.de.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://ftp.de.debian.org/debian/ bookworm main contrib non-free non-free-firmware

deb http://security.debian.org/ bookworm-security main contrib non-free non-free-firmware

Mit den ersten beiden Zeilen beziehen Sie alle Binär- und Sourcepakete für die Distributionsbereiche main, contrib und non-free für die Veröffentlichung Debian 12 Bookworm vom primären deutschen Debian-Spiegelserver. Mit den Zeilen drei und vier beziehen Sie zusätzlich die dazugehörigen Sicherheitsaktualisierungen für alle Distributionsbereiche der gleichen Veröffentlichung von der zentralen Stelle security.debian.org.

Für Veröffentlichungen vor Debian 12 Bookworm müssen Sie allerdings den Distributionsbereich non-free-firmware weglassen. Dieser kam erst mit Debian 12 Bookworm hinzu. Paket aus diesem Bereich waren bei vorherigen Veröffentlichungen im Bereich non-free mit dabei.

3.4.9. Einen Eintrag auf syntaktische Korrektheit prüfen

Beim Ergänzen oder Ändern von Einträgen von Paketquellen können uns Fehler unterlaufen, die dazu führen, dass die lokalen Paketlisten nicht mehr sauber mit den Listen vom Paketmirror abgeglichen und aktualisiert werden. Üblicherweise sind das simple Schreibfehler — fehlende Leerzeichen oder auch falsche Namen der genutzten Veröffentlichung. Um diesen Fehlern auf die Spur zu kommen, verfügen bislang weder APT, noch apt-get und aptitude über ein spezifisches Unterkommando, mit dem sich die einzelnen Einträge auf korrekte Schreibweise prüfen lassen.

Daher bleiben nur die folgenden Workarounds:

apt update und apt-get update
Führe die Aktualisierung der lokalen Paketlisten durch. Geben apt und apt-get dabei keine Fehler aus, sind die Einträge fehlerfrei.
apt-get --no-download update

Führe die Aktualisierung der lokalen Paketlisten durch, lade aber keine Paketlisten herunter. Gibt apt-get dabei keine Fehler aus, sind die Einträge fehlerfrei. Einen fehlerhaften Eintrag in Form eines fehlenden Leerzeichens bemängelt apt-get wie folgt:

Fehler in der Datei /etc/apt/sources.list aufspüren. 

# apt-get --no-download update
E: Typ »debhttp://deb.debian.org/debian/« in Zeile 1 der Quellliste /etc/apt/sources.list ist unbekannt.
E: Die Liste der Quellen konnte nicht gelesen werden.
#

apt-get indextargets

Gedacht ist das Unterkommando als Schnittstelle für externe Werkzeuge, die mit APT arbeiten. Gemäß Manpage zu apt-get zeigt es damit "eine Liste im Deb822-Format mit Informationen über alle Datendateien (auch als Indexziele bekannt) an, die apt-get update herunterladen würde." Das gelingt nur, wenn die Datei keine groben Fehler beinhaltet, bspw. fehlende Leerzeichen zwischen dem Pakettyp und dem Paketmirror. Fehlerhafte Angaben in Distributionsbereichen kann es nicht aufspüren, ignoriert dann aber den gesamten Eintrag.

Zusätzlich "unterstützt [apt-get] eine --format-Option, um das Ausgabeformat zu ändern und auch um Zeilen der Standardausgabe zum Filtern der Datensätze zu akzeptieren."

Informationen zu den Paketquellen anzeigen (Auszug). 

# apt-get indextargets

MetaKey: contrib/binary-amd64/Packages
ShortDesc: Packages
Description: http://deb.debian.org/debian bookworm-updates/contrib amd64 Packages
URI: http://deb.debian.org/debian/dists/bookworm-updates/contrib/binary-amd64/Packages
Filename: /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm-updates_contrib_binary-amd64_Packages
Optional: no
KeepCompressed: no
Codename: bookworm-updates
Label: Debian
Origin: Debian
Suite: stable-updates
Trusted: yes
Version: 12-updates
Architecture: amd64
Base-URI: http://deb.debian.org/debian/dists/bookworm-updates/
By-Hash: yes
Component: contrib
CompressionTypes: xz bz2 lzma gz lz4 zst uncompressed
Created-By: Packages
DefaultEnabled: yes
Fallback-Of:
Identifier: Packages
KeepCompressedAs: lz4 zst gz xz bz2 lzma uncompressed
PDiffs: yes
Release: bookworm-updates
Repo-URI: http://deb.debian.org/debian/
Site: http://deb.debian.org/debian
Sourcesentry: /etc/apt/sources.list:9
Target-Of: deb

...
#

Um aus der Ausgabe die berücksichtigten Ressourcen herauszufiltern, bietet sich eine Kombination aus apt-get und grep wie folgt an:

Genutzte Paketquellen herausfiltern. 

# apt-get indextargets | grep Description
Description: http://deb.debian.org/debian bookworm/main Sources
Description: http://deb.debian.org/debian bookworm/contrib Sources
Description: http://deb.debian.org/debian bookworm/non-free-firmware Sources
Description: http://deb.debian.org/debian bookworm/main amd64 Packages
Description: http://deb.debian.org/debian bookworm/main i386 Packages
Description: http://deb.debian.org/debian bookworm/main Translation-de_DE
Description: http://deb.debian.org/debian bookworm/main Translation-de
Description: http://deb.debian.org/debian bookworm/main Translation-en
Description: http://deb.debian.org/debian bookworm/main amd64 Contents (deb)
Description: http://deb.debian.org/debian bookworm/main i386 Contents (deb)
...
#



[8] Die aktuelle Konfiguration des APT-Repositories erlaubt nur die Verwendung von stable als Veröffentlichung. Verwenden Sie z.B. stretch anstatt von stable, so beschwert sich APT, dass dies nicht vorgesehen sei.