===== Repository-Konfiguration =====
Repositories sind zentrale Paketquellen, aus denen Software-Pakete heruntergeladen und installiert werden können. Jede Distribution verwendet eigene Konfigurationsdateien und -methoden.
==== Debian/Ubuntu ====
=== Konfigurationsdateien ===
/etc/apt/sources.list # Hauptkonfigurationsdatei
/etc/apt/sources.list.d/ # Zusätzliche Repository-Dateien (*.list)
/etc/apt/sources.list.d/*.sources # Neue DEB822-Format-Dateien
=== Repository-Syntax (klassisch) ===
deb [optionen] http://repo.url/ubuntu focal main restricted
deb-src http://repo.url/ubuntu focal main restricted
# Format:
# deb [optionen] URL Distribution Komponenten
# deb = Binärpakete
# deb-src = Quellpakete
=== Komponenten ===
* **main** - Offiziell unterstützte Open-Source-Software
* **restricted** - Proprietäre Treiber
* **universe** - Community-gepflegte Open-Source-Software
* **multiverse** - Software mit Copyright-/rechtlichen Einschränkungen
=== Repository-Optionen ===
# Mit Architektur-Einschränkung
deb [arch=amd64,i386] http://repo.url/ubuntu focal main
# Mit signed-by (GPG-Schlüssel)
deb [signed-by=/usr/share/keyrings/repo.gpg] http://repo.url/ubuntu focal main
# Mehrere Optionen kombinieren
deb [arch=amd64 signed-by=/usr/share/keyrings/repo.gpg] http://repo.url/ubuntu focal main
=== Praktische Beispiele ===
# Repository hinzufügen
echo "deb http://repo.url/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/custom.list
# Mit GPG-Schlüssel
wget -qO- https://repo.url/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/repo.gpg
echo "deb [signed-by=/usr/share/keyrings/repo.gpg] http://repo.url/ubuntu focal main" | \
sudo tee /etc/apt/sources.list.d/custom.list
# PPA hinzufügen (Ubuntu)
sudo add-apt-repository ppa:user/ppa-name
sudo add-apt-repository --remove ppa:user/ppa-name # PPA entfernen
# Nach Änderungen aktualisieren
sudo apt update
=== DEB822-Format (modern) ===
# /etc/apt/sources.list.d/custom.sources
Types: deb deb-src
URIs: http://repo.url/ubuntu
Suites: focal
Components: main restricted universe
Signed-By: /usr/share/keyrings/repo.gpg
Architectures: amd64 i386
==== Red Hat Enterprise Linux / CentOS / Fedora ====
=== Konfigurationsdateien ===
/etc/yum.repos.d/ # Repository-Konfigurationen (*.repo)
/etc/dnf/dnf.conf # DNF-Hauptkonfiguration
/etc/yum.conf # YUM-Hauptkonfiguration (ältere Systeme)
=== Repository-Datei-Format ===
# /etc/yum.repos.d/custom.repo
[repository-id]
name=Repository Name
baseurl=http://repo.url/centos/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.url/RPM-GPG-KEY
# Oder mit mirrorlist
[repository-id]
name=Repository Name
mirrorlist=http://mirrorlist.url/?repo=centos-$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
=== Repository-Optionen ===
* **enabled** - 1 (aktiviert) oder 0 (deaktiviert)
* **gpgcheck** - 1 (GPG-Prüfung aktiv) oder 0 (deaktiviert)
* **gpgkey** - Pfad oder URL zum GPG-Schlüssel
* **priority** - Priorität (niedrigere Zahl = höhere Priorität)
* **includepkgs** - Nur bestimmte Pakete einbeziehen
* **exclude** - Bestimmte Pakete ausschließen
=== Praktische Beispiele ===
# Repository hinzufügen (DNF)
sudo dnf config-manager --add-repo https://repo.url/repo.repo
# Repository aktivieren/deaktivieren
sudo dnf config-manager --set-enabled repo-id
sudo dnf config-manager --set-disabled repo-id
# GPG-Schlüssel importieren
sudo rpm --import https://repo.url/RPM-GPG-KEY
# Repository manuell erstellen
sudo tee /etc/yum.repos.d/custom.repo <
=== EPEL Repository (Extra Packages for Enterprise Linux) ===
# RHEL/CentOS 8/9
sudo dnf install epel-release
# RHEL/CentOS 7
sudo yum install epel-release
# Manuell hinzufügen (RHEL 9)
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
==== openSUSE / SUSE Linux Enterprise ====
=== Konfigurationsdateien ===
/etc/zypp/repos.d/ # Repository-Konfigurationen (*.repo)
/etc/zypp/zypp.conf # Zypper-Hauptkonfiguration
=== Repository-Datei-Format ===
# /etc/zypp/repos.d/custom.repo
[custom-repo]
name=Custom Repository
enabled=1
autorefresh=1
baseurl=http://repo.url/opensuse/
type=rpm-md
gpgcheck=1
gpgkey=http://repo.url/repodata/repomd.xml.key
=== Praktische Beispiele ===
# Repository hinzufügen
sudo zypper addrepo http://repo.url/opensuse/ custom-repo
sudo zypper addrepo -f http://repo.url/opensuse/ custom-repo # Mit Auto-Refresh
# Repository mit GPG-Schlüssel
sudo zypper addrepo -f -G http://repo.url/opensuse/ custom-repo
# Repository entfernen
sudo zypper removerepo custom-repo
# Repository aktivieren/deaktivieren
sudo zypper modifyrepo --enable custom-repo
sudo zypper modifyrepo --disable custom-repo
# Auto-Refresh aktivieren
sudo zypper modifyrepo --refresh custom-repo
# Priorität setzen (niedrigere Zahl = höhere Priorität)
sudo zypper modifyrepo --priority 50 custom-repo
# Repositories anzeigen
zypper repos
zypper lr # Kurzform
zypper lr -u # Mit URLs
# Metadaten aktualisieren
sudo zypper refresh
sudo zypper ref
=== Offizielle openSUSE Repositories ===
# OSS (Open Source Software)
sudo zypper addrepo -f http://download.opensuse.org/distribution/leap/15.5/repo/oss/ repo-oss
# Non-OSS (proprietäre Software)
sudo zypper addrepo -f http://download.opensuse.org/distribution/leap/15.5/repo/non-oss/ repo-non-oss
# Update-Repository
sudo zypper addrepo -f http://download.opensuse.org/update/leap/15.5/oss/ repo-update
==== Arch Linux ====
=== Konfigurationsdateien ===
/etc/pacman.conf # Hauptkonfiguration mit Repository-Definitionen
/etc/pacman.d/mirrorlist # Mirror-Liste
=== Repository-Konfiguration ===
# /etc/pacman.conf
# Offizielle Repositories
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[multilib] # 32-Bit-Pakete auf 64-Bit-System
Include = /etc/pacman.d/mirrorlist
# Benutzerdefiniertes Repository
[custom]
SigLevel = Optional TrustAll
Server = http://repo.url/arch/$arch
# Lokales Repository
[local]
SigLevel = Optional TrustAll
Server = file:///home/repo/arch
=== Praktische Beispiele ===
# Multilib-Repository aktivieren (32-Bit auf 64-Bit)
sudo sed -i '/\[multilib\]/,/Include/s/^#//' /etc/pacman.conf
# Mirror-Liste aktualisieren mit reflector
sudo reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
# Manuell Mirror hinzufügen
echo "Server = http://mirror.url/archlinux/\$repo/os/\$arch" | \
sudo tee -a /etc/pacman.d/mirrorlist
# Paketdatenbank synchronisieren
sudo pacman -Sy
sudo pacman -Syy # Erzwungene Synchronisation
# Cache leeren und neu synchronisieren
sudo pacman -Scc
sudo pacman -Syy
=== AUR (Arch User Repository) ===
# AUR-Helper installieren (yay als Beispiel)
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
# Mit yay verwenden
yay -S # AUR-Paket installieren
yay -Syu # System und AUR aktualisieren
==== Mirror-Verwaltung ====
=== Debian/Ubuntu ===
# Auf schnellsten Mirror umschalten
sudo apt install netselect-apt
sudo netselect-apt
# Mirror in sources.list ändern
sudo sed -i 's|http://de.archive.ubuntu.com|http://mirror.url|g' /etc/apt/sources.list
=== Fedora/CentOS ===
# Fastest mirror Plugin (DNF)
sudo dnf install dnf-plugin-fastestmirror
# In /etc/dnf/dnf.conf
fastestmirror=True
=== openSUSE ===
# Nächsten Mirror automatisch wählen
sudo zypper modifyrepo --enable repo-oss
sudo zypper refresh
=== Arch Linux ===
# Reflector für automatische Mirror-Auswahl
sudo pacman -S reflector
# Beste 20 Mirrors nach Rate sortieren
sudo reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
# Systemd-Timer für automatische Updates
sudo systemctl enable reflector.timer
sudo systemctl start reflector.timer
==== GPG-Schlüsselverwaltung ====
=== Debian/Ubuntu ===
# Schlüssel herunterladen und hinzufügen (alte Methode)
wget -qO - https://repo.url/KEY.gpg | sudo apt-key add -
# Moderne Methode (empfohlen)
wget -qO- https://repo.url/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/repo.gpg
# Schlüssel von Keyserver
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys KEYID
sudo gpg --export KEYID | sudo tee /usr/share/keyrings/repo.gpg > /dev/null
# Installierte Schlüssel anzeigen
apt-key list # Veraltet
ls /usr/share/keyrings/
=== RHEL/Fedora/CentOS ===
# GPG-Schlüssel importieren
sudo rpm --import https://repo.url/RPM-GPG-KEY
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
# Importierte Schlüssel anzeigen
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
=== openSUSE ===
# Schlüssel automatisch importieren beim Repository-Add
sudo zypper addrepo -f -G http://repo.url/opensuse/ repo
# Manuell Schlüssel importieren
sudo rpm --import https://repo.url/repodata/repomd.xml.key
=== Arch Linux ===
# Pacman-Schlüssel verwalten
sudo pacman-key --init
sudo pacman-key --populate archlinux
# Schlüssel hinzufügen
sudo pacman-key --recv-keys KEYID
sudo pacman-key --lsign-key KEYID
# Alle Schlüssel aktualisieren
sudo pacman-key --refresh-keys
==== Proxy-Konfiguration ====
=== Debian/Ubuntu (APT) ===
# /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://proxy.server:port/";
Acquire::https::Proxy "http://proxy.server:port/";
# Mit Authentifizierung
Acquire::http::Proxy "http://user:password@proxy.server:port/";
=== RHEL/Fedora (DNF/YUM) ===
# /etc/dnf/dnf.conf oder /etc/yum.conf
proxy=http://proxy.server:port/
proxy_username=user
proxy_password=password
=== openSUSE (Zypper) ===
# /etc/sysconfig/proxy
PROXY_ENABLED="yes"
HTTP_PROXY="http://proxy.server:port/"
HTTPS_PROXY="http://proxy.server:port/"
=== Arch Linux (Pacman) ===
# Umgebungsvariablen in /etc/environment
http_proxy=http://proxy.server:port/
https_proxy=http://proxy.server:port/
==== Lokale Repositories erstellen ====
=== Debian/Ubuntu ===
# Verzeichnis erstellen
mkdir -p /var/local-repo/pool
# Pakete kopieren
cp *.deb /var/local-repo/pool/
# Repository-Index erstellen
cd /var/local-repo
dpkg-scanpackages pool/ /dev/null | gzip -9c > pool/Packages.gz
# In sources.list hinzufügen
deb [trusted=yes] file:///var/local-repo pool/
=== RHEL/Fedora ===
# createrepo installieren
sudo dnf install createrepo
# Repository erstellen
mkdir -p /var/local-repo
cp *.rpm /var/local-repo/
createrepo /var/local-repo/
# Repository-Datei erstellen
sudo tee /etc/yum.repos.d/local.repo <
=== openSUSE ===
# Repository-Index erstellen
sudo zypper addrepo file:///var/local-repo local
sudo createrepo /var/local-repo/
sudo zypper refresh
==== Troubleshooting ====
=== Häufige Probleme ===
# Debian/Ubuntu: GPG-Fehler
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYID
sudo apt update
# RHEL/Fedora: Repository-Metadaten fehlerhaft
sudo dnf clean all
sudo dnf makecache
# openSUSE: Repository-Konflikte
sudo zypper refresh --force
sudo zypper clean
# Arch Linux: Paketdatenbank beschädigt
sudo rm -rf /var/lib/pacman/sync/
sudo pacman -Syy
=== Logs überprüfen ===
# Debian/Ubuntu
cat /var/log/apt/history.log
cat /var/log/apt/term.log
# RHEL/Fedora
cat /var/log/dnf.log
cat /var/log/yum.log
# openSUSE
cat /var/log/zypper.log
# Arch Linux
cat /var/log/pacman.log
==== Best Practices ====
* **Offizielle Repositories bevorzugen** - Nur vertrauenswürdige Quellen nutzen
* **GPG-Prüfung aktiviert lassen** - Signaturprüfung für Sicherheit
* **Repository-URLs über HTTPS** - Verschlüsselte Verbindungen wenn möglich
* **Backups der Konfiguration** - Vor größeren Änderungen sichern
* **Prioritäten setzen** - Bei mehreren Repositories Konflikte vermeiden
* **Regelmäßige Updates** - Metadaten aktuell halten
* **Nicht benötigte Repos deaktivieren** - Statt zu löschen
* **Dokumentation** - Änderungen dokumentieren
==== Siehe auch ====
* [[sammlung:paketverwaltung|Paketverwaltung Übersicht]]
* [[sammlung:apt|APT]]
* [[sammlung:dnf|DNF]]
* [[sammlung:zypper|Zypper]]
* [[sammlung:pacman|Pacman]]
* [[sammlung:gpg|GPG-Schlüsselverwaltung]]
==== Weiterführende Links ====
* Debian Sources List: https://wiki.debian.org/SourcesList
* Ubuntu Repositories: https://help.ubuntu.com/community/Repositories
* Fedora Repositories: https://docs.fedoraproject.org/en-US/quick-docs/repositories/
* openSUSE Build Service: https://build.opensuse.org/
* Arch Linux Mirrors: https://archlinux.org/mirrors/
----
{{tag>cli package management basics, advanced}}
----