Zusammenfassung
In diesem Artikel wird erklärt, wie man mit dnf spezifische Paketversionen unter Fedora sperren kann, um Probleme durch automatische Updates zu vermeiden. Wir verwenden hierfür dnf versionlock am praktischen Beispiel der Pakete kernel und amd-gpu-firmware, um Probleme bei der Beschleunigung von Anwendugnen mit ROCm Anwedungen (wie Ollama und llama.cpp) zu umgehen.
Hintergrund
Fedora verwendet dnf als Paketmanager, der sowohl für die Installation als auch für die Aktualisierung von Pkaten verantwortlich ist. Wenn man nun sein Betriebssystem mittels dnf update auf den aktuellen Stand bringen möchte, aber einige Pakete eben nicht aktualisieren möchte, dann dnf bietet verschiedene Mechanismen, um Paketversionen zu sperren oder zu markieren:
dnf versionlock: Sperren von Paketversionen auf dauerhaft, bis sie explizit entfernt werden.dnf mark: Markiert Pakete als „manuell installiert“, was verhindert, dass sie beim Systemupdate entfernt werden, aber nicht, dass sie aktualisiert werden.
Beide Mechanismen sind nützlich, aber sie dienen unterschiedlichen Zwecken. versionlock ist das geeignete Werkzeug, um Versionen dauerhaft zu sperren – z. B. für Kernel oder Firmware, bei denen Fehler in neuen Versionen auftreten.
Paketversionen sperren
In dem Beispiel möchten wir für ein Fedora 43 System sowohl den Kernel als auch die AMD Firmware auf spezifische Versionen festlegen, die auch ein dnf update nicht verändern wird. Dies ist momentan für AMD Strix Halo Systeme notwendig, wenn man ROCm verwenden möchte, da aktuelle Versionen von Kernel und Firmware einige Probleme bereiten.
- Version von
kernel: 6.17.1-300.fc43 - Version von
amd-gpu-firmware: 20251021-1.fc43
Neuere Versionen von Kernel und Firmware verhindern die GPU Beschleunigung mittels ROCm von Anwendungen wie Ollama und llama.cpp.
dnf versionlock – Dauerhafte Versionssperre
dnf versionlock ist der Standardmechanismus, um Paketversionen dauerhaft zu sperren. Es wird eine Liste von Paketen mit Versionen gespeichert, die nicht aktualisiert werden dürfen.
1. Pakete sperren
Um die Versionen zu sperren, verwenden wir den Befehl:
$ sudo dnf versionlock add kernel-6.17.1-300.fc43.x86_64
$ sudo dnf versionlock add amd-gpu-firmware-20251021-1.fc43
Hinweis: Die Version des Pakets muss exakt übereinstimmen, inklusive Release-Nummer. dnf versionlock erwartet die vollständige Versionsbezeichnung.
2. Prüfen der gesperrten Pakete
$ sudo dnf versionlock list
# Von 'versionlock add' Kommando zu 2026-02-07 08:44:52 hinzugefügt
Package name: kernel
evr = 6.17.1-300.fc43
# Von 'versionlock add' Kommando zu 2026-02-07 08:45:50 hinzugefügt
Package name: amd-gpu-firmware
evr = 20251021-1.fc43
3. Aktualisierung blockieren
Wenn du nun versuchst, dnf update auszuführen, werden diese Pakete nicht aktualisiert:
$ sudo dnf update
Aktualisiere und lade Paketquellen:
Paketquellen geladen.
Problem 1: installiertes Paket amd-gpu-firmware-20251021-1.fc43.noarch benötigt linux-firmware-whence = 20251021-1.fc43, aber keiner der Anbieter kann installiert werden
- kann linux-firmware-whence-20260110-1.fc43.noarch aus updates und linux-firmware-whence-20251021-1.fc43.noarch aus @System nicht zusammen installieren
- kann linux-firmware-whence-20251021-1.fc43.noarch aus fedora und linux-firmware-whence-20260110-1.fc43.noarch aus updates nicht zu
[...]
Paket Architektur Version Paketquelle Größe
Wird entfernt:
kernel-core x86_64 6.18.6-200.fc43 updates 97.6 MiB
kernel-devel x86_64 6.18.6-200.fc43 updates 84.4 MiB
kernel-modules x86_64 6.18.6-200.fc43 updates 96.2 MiB
kernel-modules-core x86_64 6.18.6-200.fc43 updates 67.9 MiB
kernel-modules-extra x86_64 6.18.6-200.fc43 updates 4.2 MiB
Abhängige Pakete werden entfernt:
kernel x86_64 6.18.6-200.fc43 updates 0.0 B
kmod-VirtualBox-6.18.6-200.fc43.x86_64 x86_64 7.2.4-1.fc43 @commandline 209.2 KiB
Aktualisiere:
adoptium-temurin-java-repository noarch 1-19.fc43 updates 23.3 KiB
ersetze adoptium-temurin-java-repository noarch 1-16.fc43 fedora 23.3 KiB
git x86_64 2.53.0-1.fc43 updates 56.4 KiB
ersetze git x86_64 2.52.0-1.fc43 updates 56.4 KiB
[...]
systemd-udev x86_64 258.3-3.fc43 updates 12.7 MiB
ersetze systemd-udev x86_64 258.3-2.fc43 updates 12.7 MiB
Installiere:
kernel-core x86_64 6.18.8-200.fc43 updates 97.6 MiB
kernel-devel x86_64 6.18.8-200.fc43 updates 84.4 MiB
kernel-modules x86_64 6.18.8-200.fc43 updates 96.3 MiB
kernel-modules-core x86_64 6.18.8-200.fc43 updates 68.0 MiB
kernel-modules-extra x86_64 6.18.8-200.fc43 updates 4.2 MiB
Überspringe Pakete mit Konflikten:
linux-firmware-whence noarch 20260110-1.fc43 updates 361.3 KiB
Pakete mit nicht auflösbaren Abhängigkeiten werden übersprungen:
amd-ucode-firmware noarch 20260110-1.fc43 updates 608.2 KiB
amd-gpu-firmware noarch 20251021-1.fc43 fedora 25.7 MiB
dnf update meldet nun einige Probleme, die allerdings auch zu erwarten sind, da die Versionssperren auch die Aktualisierung abhängiger Pakete verhindern. Das ist vollkommen in Ordnung und auch so gewünscht.
Offenbar wird dennoch ein neuer Kernel installiert, aber das ist nicht weiter schlimm. Auf einem Fedora System sind in der Regel drei Kernelversionen parallel installiert. Das wichtige ist, dass der 6.17er Kernel nicht gelöscht wird.
Wie man Versionssperren wieder aufhebt
Wenn die Fehler in den neuen Kernel- oder Firmwareversionen behoben wurden, können die Sperren wieder entfernt werden.
1. Sperren entfernen
$ sudo dnf versionlock delete kernel-6.17.1-300.fc43.x86_64
$ sudo dnf versionlock delete amd-gpu-firmware-20251021-1.fc43
2. Liste der Sperren prüfen
$ sudo dnf versionlock list
Die Liste sollte leer sein, wenn alle Sperren entfernt wurden.
3. System aktualisieren
$ sudo dnf update
Jetzt werden alle Pakete inkl. kernel und amd-gpu-firmware auf die neueste Version aktualisiert.
Fazit
In diesem Artikel haben wir gesehen, wie man mit dnf versionlock spezifische Paketversionen in Fedora sperren kann, um automatische Updates für bestimmte Pakete zu vermeiden. Die Methode ist besonders nützlich bei Hardware, bei der neue Kernel- oder Firmwareversionen Fehler verursachen.
dnf versionlockist der richtige Weg, um Versionen dauerhaft zu sperren.dnf markdient zur Markierung von Paketen, aber nicht zur Sperre von Updates.- Sperren sollten immer wieder überprüft und bei Bedarf aufgehoben werden, sobald die Fehler behoben sind.



