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 versionlock ist der richtige Weg, um Versionen dauerhaft zu sperren.
  • dnf mark dient 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.

Kaya Kupferschmidt

Author Kaya Kupferschmidt

Kaya Kupferschmidt ist ein erfahrener freiberuflicher Data Architect, Data Engineer und Data Scientist. Seit 2005 beschäftigt er sich mit Daten und hat einen Doktortitel in Mathematik. Seine Expertise liegt in der Entwicklung und Implementierung robuster Datenlösungen, wobei er sich besonders für Big Data, Machine Learning und KI begeistert. Kaya verfügt über breites technologisches Wissen und setzt dabei bevorzugt auf Open-Source-Technologien.

Mehr Artikel von Kaya Kupferschmidt

Hinterlasse einen Kommentar