Eine Paket-Quelle ist der Server, von dem dein System Software bezieht. Jede Distribution liefert eine sorgfältig kuratierte Default-Liste mit, doch sobald du Software von Drittanbietern installieren willst — sei es ein Docker-Repo, ein PPA für eine neuere Version oder ein RPM-Repo eines Herstellers — kommst du an den eigentlichen Mechanismen nicht vorbei. Dieser Artikel zeigt, wie Repos, Mirrors, PPAs und GPG-Signaturen zusammenspielen und wie das Vertrauensmodell aufgebaut ist.
Was eine Paket-Quelle ist
Eine Paket-Quelle (Repository) ist im Kern ein Webserver, der zwei Dinge bereitstellt: eine Paket-Liste (Index aller verfügbaren Pakete mit Metadaten und Hashes) und die Pakete selbst als .deb-, .rpm- oder .pkg.tar.zst-Archive. Beides ist mit einem GPG-Schluessel des Repository-Betreibers signiert.
Wenn du ein Paket installierst, läuft im Hintergrund immer derselbe Ablauf:
- Der Paketmanager liest die konfigurierten Quellen.
- Er laedt die signierte Paket-Liste herunter und prüft die Signatur gegen die lokal installierten öffentlichen Schluessel.
- Findet sich das gewünschte Paket, wird es heruntergeladen und sein Hash gegen den Eintrag in der Liste geprüft.
- Erst danach wird das Paket entpackt und installiert.
Das Vertrauensmodell ist also zweistufig: Die Liste bestätigt, welche Hashes erwartet werden — die Signatur bestätigt, dass die Liste vom legitimen Betreiber stammt. Wer einem Repository vertraut, vertraut seinem GPG-Schluessel und damit allem, was darüber installiert wird.
Wo Quellen konfiguriert sind
Jede Distribution legt ihre Quellen-Konfiguration an einem eigenen Ort ab. Das Format unterscheidet sich, das Prinzip nicht.
| Distribution | Hauptdatei | Drop-in-Verzeichnis | Format |
|---|---|---|---|
| Debian / Ubuntu | /etc/apt/sources.list | /etc/apt/sources.list.d/ | *.list (klassisch) oder *.sources (Deb822, modern) |
| Fedora / RHEL / Rocky | — | /etc/yum.repos.d/ | *.repo (INI-ähnlich) |
| Arch Linux | /etc/pacman.conf | /etc/pacman.d/mirrorlist | INI mit Server-Einträgen |
| openSUSE | — | /etc/zypp/repos.d/ | *.repo |
| Alpine | /etc/apk/repositories | — | Eine URL pro Zeile |
Die wichtigste Konvention quer über alle Distributionen: eine Datei pro Drittanbieter-Repository. Das macht es trivial, ein Repo wieder zu deaktivieren — du löschst oder benennst die Datei um, und der Eintrag verschwindet aus dem System.
Aufbau einer Debian-Source-Zeile
Die klassische *.list-Syntax für Debian und Ubuntu ist eine Zeile pro Repository. Jeder Teil hat eine konkrete Bedeutung.
deb [signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stableDie Felder im Detail:
| Feld | Wert im Beispiel | Bedeutung |
|---|---|---|
| Typ | deb | deb für Binärpakete, deb-src für Quellpakete |
| Optionen | [signed-by=...] | In eckigen Klammern: hier die Bindung an einen bestimmten GPG-Schluessel |
| URL | https://download.docker.com/linux/ubuntu | Basis-URL des Repository-Servers |
| Distribution | jammy | Codename der Distro-Version (Ubuntu 22.04 = jammy) |
| Komponenten | stable | Ein oder mehrere Bereiche des Repos, getrennt durch Leerzeichen |
Das moderne Deb822-Format *.sources druckt dieselben Informationen lesbarer als Block aus.
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: jammy
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpgBeide Formate sind funktional aequivalent. Neue Setups sollten Deb822 nutzen — es ist mehrzeilig, kommentierbar und unterstuetzt Mehrfachwerte sauberer.
Mirrors
Ein Mirror ist eine geographisch verteilte Spiegelkopie des Original-Repositories. Anstatt dass alle Welt von einem zentralen Debian-Server in Europa lädt, gibt es Mirrors in jedem größeren Land — schneller für den Endnutzer und weniger Last für das Original.
Wie Mirrors konfiguriert werden, unterscheidet sich pro Distro:
| Distribution | Mechanismus | Werkzeug |
|---|---|---|
| Debian | URL in sources.list zeigt direkt auf den Mirror | manuell oder netselect-apt |
| Ubuntu | ”Software & Updates”-GUI oder Eintrag in sources.list | software-properties-gtk |
| Arch Linux | Liste in /etc/pacman.d/mirrorlist, oben steht der bevorzugte | reflector zum Auto-Sortieren |
| Fedora | Eintrag metalink=...mirrors.fedoraproject.org/... wählt automatisch | DNF erledigt das selbst |
| openSUSE | MirrorBrain-Service auf download.opensuse.org | Automatisch |
Für Arch Linux laesst sich der Mirrorlist mit reflector automatisch nach Geschwindigkeit und Aktualität sortieren.
sudo reflector --country DE --age 6 --sort rate --save /etc/pacman.d/mirrorlistDer Befehl wählt deutsche Mirrors aus, die in den letzten 6 Stunden synchronisiert wurden, und sortiert sie nach gemessener Download-Rate. Das Ergebnis überschreibt die bestehende mirrorlist.
Bei Fedora ist das Mirror-Routing in den Default-Repos bereits aktiv: Das Feld metalink zeigt auf einen zentralen Service, der pro Anfrage die schnellsten Mirrors zurückgibt. Du musst also nichts tun.
PPAs — Personal Package Archives
PPAs sind eine Ubuntu-Spezialität. Sie werden vom Launchpad-Service (von Canonical betrieben) gehostet und ermöglichen es einzelnen Entwicklern oder Teams, eigene .deb-Pakete zu verteilen, ohne einen Mirror oder eigenen Server betreiben zu müssen.
Hinzufügen ist ein Einzeiler:
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt updateHinter den Kulissen passiert dabei genau das, was du auch manuell machen könntest: Eine .list-Datei wird in /etc/apt/sources.list.d/ angelegt, und der zugehörige GPG-Schluessel wird vom Launchpad-Keyserver importiert.
PPAs sind bequem, aber kein offizieller Audit-Prozess liegt dahinter. Wer ein PPA hinzufügt, vertraut dem PPA-Eigentuemer komplett — der Eigentuemer kann jederzeit beliebige Pakete pushen, die mit Root-Rechten installiert werden. Nutze nur PPAs von bekannten Maintainern, Projekten oder Firmen.
GPG-Keys und Signaturen
Jedes Repository signiert seine Paket-Liste mit einem GPG-Schluessel. Damit dein System diese Signatur prüfen kann, muss der öffentliche Schluessel des Repository-Betreibers lokal vorliegen.
Für die Default-Repos der Distribution sind diese Schluessel bereits beim Setup installiert (zum Beispiel in den Paketen debian-archive-keyring, ubuntu-keyring oder fedora-gpg-keys). Bei Drittanbieter-Repos musst du den Schluessel selbst importieren.
Der moderne Weg unter Debian und Ubuntu speichert den Schluessel in /etc/apt/keyrings/ und bindet ihn über die signed-by-Option an genau das Repository. Damit hat ein Drittanbieter-Schluessel nur Vertrauen für sein eigenes Repo — nicht für das gesamte System.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpgDie Schritte im Einzelnen:
install -m 0755 -dlegt das Verzeichnis mit korrekten Rechten an, falls es noch fehlt.curl -fsSLlaedt den ASCII-armored Schluessel.gpg --dearmorwandelt das ASCII-Format in das von APT erwartete binäre Keyring-Format um.chmod a+rmacht die Datei für alle Nutzer lesbar — APT läuft beimupdateals_apt-User, nicht als Root.
Anschließend wird das Repository mit der signed-by-Option auf genau diesen Keyring eingetragen.
echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" \
| sudo tee /etc/apt/sources.list.d/docker.list
sudo apt updateRepository-Stages und -Komponenten
Jede Distribution unterteilt ihren Software-Bestand in Stages (Stabilitätsgrade) und Komponenten (Lizenz- und Support-Kategorien). Wer ein Repository hinzufügt, sollte wissen, in welchen Bereich er sich begibt.
| Distribution | Stages / Komponenten | Vertrauen / Stabilität |
|---|---|---|
| Debian | stable | Produktionsreif, getestet, ca. 2-Jahres-Zyklus |
| Debian | testing | Nächste Stable, in Vorbereitung — meist brauchbar |
| Debian | unstable (sid) | Aktuelle Pakete, gelegentlich kaputt |
| Debian | experimental | Höchst riskant, nur für Tests |
| Debian | main / contrib / non-free / non-free-firmware | Komponenten nach Lizenz |
| Ubuntu | main | Canonical-Support, freie Software |
| Ubuntu | restricted | Proprietaere Treiber mit Canonical-Support |
| Ubuntu | universe | Community-gepflegt, freie Software |
| Ubuntu | multiverse | Software mit Lizenz-Einschränkungen |
| Ubuntu | -security, -updates, -backports | Suites pro Komponente für Security- und Update-Streams |
| Fedora | fedora | Stable Release |
| Fedora | updates | Sicherheits- und Bugfix-Updates |
| Fedora | rawhide | Rolling Development-Stream |
| Arch | core | Basis-System, eng kuratiert |
| Arch | extra | Offiziell unterstuetzte Zusatzpakete |
| Arch | multilib | 32-Bit-Bibliotheken auf 64-Bit-Systemen |
| Arch | AUR | Community-Build-Skripte, kein offizielles Repo |
Faustregel: Auf Produktivsystemen ausschließlich stable-Stages plus Security-/Updates-Streams. testing und unstable sind etwas für Entwicklungsmaschinen oder neugierige Nutzer.
Praxis-Patterns
Die folgenden Patterns decken die häufigsten Aufgaben rund um Paket-Quellen ab. Jeder Block beschreibt, was passiert und wann du ihn brauchst.
Drittanbieter-Repo unter Debian/Ubuntu hinzufügen (modern)
Der saubere Weg, ein neues Repository einzurichten: Schluessel in /etc/apt/keyrings/, Repository mit signed-by an genau diesen Schluessel binden.
# 1. Keyring-Verzeichnis sicherstellen
sudo install -m 0755 -d /etc/apt/keyrings
# 2. GPG-Schluessel importieren
curl -fsSL https://example.com/repo/key.gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
# 3. Repository mit Bindung an den Schluessel eintragen
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo stable main" \
| sudo tee /etc/apt/sources.list.d/example.list
# 4. Paket-Listen aktualisieren
sudo apt updateSchritt 4 ist Pflicht — ohne apt update kennt das System die neuen Pakete nicht.
PPA hinzufügen (Ubuntu)
Der bequemste Weg für Ubuntu-Nutzer. add-apt-repository legt automatisch eine .list-Datei und den passenden Keyring an.
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt updateMit sudo add-apt-repository --remove ppa:mozillateam/ppa laesst sich das PPA später wieder entfernen.
Repository unter Fedora/RHEL hinzufügen
Unter Fedora und seinen Derivaten ist dnf config-manager das Standardwerkzeug. Es laedt eine .repo-Datei und legt sie unter /etc/yum.repos.d/ ab.
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf makecachednf makecache aktualisiert die lokalen Metadaten — analog zu apt update.
Arch-Mirrors automatisch sortieren
reflector ruft die offizielle Mirror-Liste ab, filtert nach Land und Aktualität und sortiert nach gemessener Geschwindigkeit. Vor dem Schreiben empfiehlt sich ein Backup.
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
sudo reflector --country DE --age 6 --sort rate --save /etc/pacman.d/mirrorlist
sudo pacman -Syypacman -Syy erzwingt das Neuladen der Paket-Datenbanken aus den neuen Mirrors.
EPEL aktivieren (RHEL / Rocky / AlmaLinux)
EPEL (Extra Packages for Enterprise Linux) ist das Community-Repository, das Tausende Pakete liefert, die nicht Teil des Enterprise-Kerns sind. Auf RHEL-Derivaten wird es typischerweise zuerst aktiviert.
sudo dnf install -y epel-release
sudo dnf makecacheDas Paket epel-release enthält sowohl die .repo-Datei als auch den GPG-Schluessel — du musst nichts manuell importieren.
Häufige Stolperfallen
apt-key add ist deprecated — nutze signed-by und keyrings.
Lange Zeit war apt-key add der Standardweg, GPG-Schluessel zu importieren. Die Schluessel landeten in einem globalen Keyring unter /etc/apt/trusted.gpg.d/ und galten damit für alle Repositories. Ein einziger kompromittierter Drittanbieter-Schluessel konnte so beliebige Pakete validieren — auch für das Haupt-Repository. Seit Debian 11 und Ubuntu 22.04 ist apt-key als deprecated markiert. Der moderne Weg legt den Schluessel in /etc/apt/keyrings/ ab und bindet ihn per signed-by-Option ausschließlich an das jeweilige Repository. Damit ist das Vertrauen scoped, und jedes Repo trifft nur seine eigene Tasche.
PPAs sind nicht auditiert — der Eigentuemer kann alles pushen.
Ein PPA ist im Endeffekt ein freier Upload-Slot bei Launchpad. Es gibt keinen Code-Review, keinen Sicherheits-Audit, keine Prüfung der enthaltenen Binaries. Wer ein PPA hinzufügt, vertraut dem Eigentuemer vollständig — der kann jederzeit Pakete mit beliebigen Maintainer-Skripten pushen, die mit Root-Rechten ausgeführt werden. Das ist kein theoretisches Risiko: In der Vergangenheit wurden gekaperte PPAs als Vektor für Cryptominer und Backdoors genutzt. Beschränke dich auf PPAs von bekannten Projekten, Firmen oder Personen mit Reputation.
Mehrere Quellen mit identischem Paket führen zu Pinning-Konflikten.
Wenn zwei aktive Repositories dasselbe Paket in unterschiedlichen Versionen anbieten, muss APT entscheiden, welches gewinnt. Standardmäßig wählt es die höchste Version — aber das ist oft genau das, was du nicht willst, etwa wenn ein PPA versehentlich eine kritische System-Bibliothek überschreibt. Die Lösung heißt APT-Pinning in /etc/apt/preferences oder /etc/apt/preferences.d/: Du legst Prioritäten pro Quelle fest. Versaeumst du das, kann ein einzelnes neues Repo deine System-Pakete in eine Version zwingen, die mit deinem Distro-Unterbau nicht harmoniert.
Stable und Testing mischen bricht das System.
Es klingt verlockend, ein einzelnes Paket aus Debian Testing oder Unstable zu ziehen, weil dort eine neuere Version liegt. Das Problem: Pakete in Testing sind gegen die Bibliotheken aus Testing gebaut. Sobald du eines installierst, zieht es seine Abhängigkeiten nach — und die ziehen wieder ihre Abhängigkeiten — bis halbe Bibliotheksbestände überschrieben sind. Das Ergebnis ist häufig ein nicht mehr bootfähiges System. Wenn du wirklich mischen musst, nutze Pinning mit niedriger Priorität für Testing und installiere gezielt mit apt install -t testing paketname — und auch das nur mit Vorsicht.
GPG-Keys werden rotiert — alte Repos schlagen ploetzlich fehl.
Repository-Betreiber tauschen aus Sicherheitsgruenden gelegentlich ihre Signatur-Schluessel aus. Wenn das passiert und du den alten Key importiert hast, scheitert apt update mit einer Signatur-Fehlermeldung — typischerweise NO_PUBKEY oder EXPKEYSIG. Die Lösung ist, den neuen Schluessel zu importieren und den alten zu entfernen. Bei größeren Anbietern (Docker, Microsoft, Google) findest du die aktuellen Schluessel in deren Setup-Dokumentation. Auf langlebigen Servern, die nur selten gepflegt werden, ist das einer der häufigsten Stolpersteine.
Nach jedem Repo-Add ist apt update Pflicht.
Ein neu hinzugefügtes Repository ist erst dann nutzbar, wenn die Paket-Liste lokal vorliegt. Ohne sudo apt update sieht apt install die neuen Pakete nicht — und die Fehlermeldung “Unable to locate package” wirkt erstmal mysterioes. Gewoehne dir an, nach jedem Eintrag in sources.list.d/ sofort apt update auszuführen. Bei Fedora ist es dnf makecache, bei Arch pacman -Sy.
Format *.list ist deprecated, *.sources (Deb822) ist modern.
Die klassische Einzeiler-Syntax in .list-Dateien funktioniert nach wie vor, ist aber schwer lesbar und verleitet zu Fehlern — gerade die Optionen in eckigen Klammern werden gerne vergessen oder vertippt. Das Deb822-Format in .sources-Dateien schreibt jeden Eintrag als mehrzeiligen Block mit benannten Feldern. Das ist nicht nur lesbarer, es erlaubt auch Mehrfachwerte (mehrere URIs, mehrere Suites) und Kommentare innerhalb eines Eintrags. Neue Setups sollten .sources verwenden — Debian 12 und Ubuntu 24.04 nutzen das Format intern bereits standardmäßig.
Weiterführende Ressourcen
Externe Quellen
- sources.list(5) — Debian Manpage — Vollständige Referenz zum Format
- Debian Wiki: SourcesList — Praxisorientierte Erläuterung mit Beispielen
- Ubuntu Help: Repositories und PPAs — Komponenten und PPA-Konzept
- Fedora Docs: DNF config-manager — Repository-Verwaltung unter DNF
- Arch Wiki: Mirrors — Mirror-Konfiguration und reflector
Verwandte Artikel
- apt — Pakete unter Debian und Ubuntu verwalten — Der Hauptbefehl, der die Quellen nutzt
- dnf — Pakete unter Fedora und RHEL — Aequivalent für die RPM-Welt
- pacman — Pakete unter Arch Linux — Mirror-Liste und Synchronisation
- apt vs apt-get — Welcher Befehl wann — Unterschiede und Empfehlungen
- dpkg — Pakete direkt installieren und analysieren — Das Werkzeug unter APT