Diskussion um dnf reißt nicht ab

Die auf der Entwickler-Liste von Fedora immer wieder aufkommenden Diskussionen um dnf und den Umstand, das dieses inzwischen auf offiziell yum ersetzt hat, kamen jüngst wieder auf, als sich Harald Reindl darüber beklagte, das es nach wie vor kein Pendant zu package-cleanup, welches Teil der (noch) nicht angepassten yum-utils ist, gibt.

Reindl argumentierte damit, das es nach jedem Upgrade von Fedora veraltete und (aufgrund geänderter Abhängigkeiten) verwaiste Pakete gebe, welche man bislang mittels

package-cleanup --leaves

schnell ausfindig machen und entfernen konnte.

Im Laufe der Diskussion wurde zwar auf das leaves Plugin für dnf sowie das autoremove von dnf hingewiesen, diese sind jedoch laut Reindl kein adäquater Ersatz für package-cleanup, da sie anders arbeiten würden, als package-cleanup.

Reindl machte im Verlauf der Diskussion ebenfalls deutlich, das er es nach wie vor für falsch hält, yum durch dnf zu ersetzen, solange dnf nicht die selben Funktionen wie yum biete und sich teilweise anders verhalte als yum.

Ist der Umstieg von yum auf dnf verfrüht?

  • nein (79%, 30 Stimen)
  • ja (16%, 6 Stimen)
  • keine Meinung (5%, 2 Stimen)

Stimmen gesamt: 38

Loading ... Loading ...

Fedora 22: dnf ersetzt yum als Standard-Paketmanager

Mit dem Update auf Version 3.4.3-505 wird der langjährige Standard-Paketmanager yum offiziell als „deprecated“ (veraltet) markiert und durch dnf als Standard-Paketmanager ersetzt. Weiterhin wird bei jedem Aufruf von yum ab dem Updater der folgende Hinweis angezeigt und der Aufruf anschließend als dnf weitergereicht:

Yum command has been deprecated, use dnf instead.
See ‚man dnf‘ and ‚man yum2dnf‘ for more information.
To transfer transaction metadata from yum to DNF, run ‚dnf migrate‘
Redirecting to ‚/usr/bin/dnf ‚

Wer weiterhin yum nutzen möchte, muss anstatt yum nun yum-deprecated aufrufen. Um den Hinweis, das yum veraltet ist, kommt man dennoch nicht herum.

Pimp my dnf: DeltaRPM und fastestmirror Funktionen aktivieren

Bitte beachtet auch die Anmerkungen zu den HowTos!

Seit einiger Zeit verfügt Fedoras zukünftiger Standard-Paketmanager dnf über Support für deltarpms und beherrscht auch die fastestmirror Funktion, die bei yum noch mittels Plugin nachgerüstet werden musste, nativ.

Um diese beiden Features zu aktivieren, muss lediglich die dnf.conf mittels

su -c'nano /etc/dnf/dnf.conf'

editiert und um die folgenden beiden Zeilen ergänzt werden:

deltarpm=1
fastestmirror=1

Durch diese beiden Einstellungen sollten Updates und Paket-Installationen zukünftig nach zügiger als ohnehin schon vonstatten gehen.

PackageKit mit hawkey als Backend nutzen

Bitte beachtet auch die Anmerkungen zu den HowTos!

In Fedora 21 wird PackageKit anstatt yum das auch von dnf verwendete hawkey als Backend nutzen und somit den für Fedora 22 geplanten Umstieg von yum zu dnf quasi einleiten.

Wer bereits heute schon das wesentlich schnellere hawkey als Backend verwenden möchte, kann das über folgende Schritte bewerkstelligen:

su -c'yum swap PackageKit-yum PackageKit-hawkey'
su -c'systemctl restart packagekit'

Anschließend kann man zur Sicherheit mittels

pkcon backend-details

kontrollieren, ob alles geklappt hat und PackageKit hawkey als Backend verwendet.

Da sich sowohl dnf als auch hawkey noch in der Entwicklung befinden, bitten die Entwickler um das Melden von gefundenen Problemen.

Pimp my dnf: Lebensdauer des Caches reduzieren

Dnf ist ein Fork des Fedora Paketmanagers yum, welcher yum wohl in Fedora 22 als Standardpaketmanager ablösen wird. Jedoch haben die dnf-Entwickler einige Standardwerte für Einstellungen implementiert, die von yums Standardwerten abweichen.

Ein gutes Beispiel ist der Standardwert für die Lebensdauer des Metadaten-Caches. Bei yum beträgt diese 6 Stunden, bei dnf ist der Wert auf 48 Stunden erhöht worden. Das bedeutet, das dnf standardmäßig nur alle 2 Tage neue Updates finden würde.

Ein möglicher Workaround wäre, vor jeder Suche nach neuen Updates mit dnf

su -c'dnf clean expire-cache'

auszuführen, und dnf so dazu zu zwingen, die Metadaten neu herunter zu laden.

Eine andere, wesentlich elegantere Möglichkeit ist, in die /etc/dnf/dnf.conf die folgende Zeile einzutragen:

metadata_expire=21600

Damit wird die Lebensdauer des Metadaten-Caches standardmäßig auf 6 Stunden (= 21.600 Sekunden) verkürzt und man spart sich das Löschen des Caches vor jeder Update-Suche.

Yum: Pakete einfach mittels swap-Kommando austauschen

Bitte beachtet auch die Anmerkungen zu den HowTos!

Wer z.B. XChat durch Hexchat austauschen möchte, der macht das im Terminal in der Regel mittels

su -
yum remove xchat
yum install hexchat

Es geht jedoch deutlich einfacher, wenn man das swap-Kommando von yum nutzt:

su -c'yum swap xchat hexchat'

In diesem Beispiel wird yum mittels swap-Kommand angewiesen, das Paket xchat zu löschen und gleichzeitig das Paket hexchat zu installieren. Das swap-Kommando bietet noch einige andere Möglichkeiten, Pakete auszutauschen, die man in den Man-Pages von yum nachlesen kann.

Priorities Plugin für yum einrichten und nutzen

Bitte beachtet auch die Anmerkungen zu den HowTos!

Wer (mehrere) Fremd-Repositories (Side-Repos) nutzt, kennt sicher das Problem, das diese teilweise versuchen Pakete aus anderen Side-Repos zu aktualisieren oder in ganz seltenen Fällen sogar Pakete aus den Fedora-Repositories aktualisieren wollen.

Wer so einem Treiben von vornherein einen Riegel vorschieben möchte, sollte das Priorities-Plugin für yum installieren. Das Plugin sorgt dafür, das jedes Repository eine Priorität (standardmäßig 99) zugewiesen bekommt und kein Repository Pakete aus Repositories mit höherer Priorität überschreibt.

Dafür muss zunächst das Plugin installiert werden:

su -c'yum install yum-plugin-priorities'

Anschließend sollten die Fedora-Repositories unbedingt die Priorität 1 zugewiesen bekommen, um zu verhindern, das Pakete aus diesen Repositories von Nicht-Fedora-Repositories überschrieben werden:

su -c'yum-config-manager --setopt=fedora.priority=1 --save'
su -c'yum-config-manager --setopt=updates.priority=1 --save'
su -c'yum-config-manager --setopt=updates-testing.priority=1 --save'

Sofern man nur 1 zusätzliches Side-Repo nutzt oder sich die übrigen Side-Repos mit einander vertragen, braucht man nichts mehr weiter zu tun. Ansonsten sollte man den Side-Repos, die sich gegenseitig Pakete überschreiben wollen, unterschiedliche Prioritäten zuweisen, um dem Treiben ein Ende zu bereiten:

su -c'yum-config-manager --setopt=Repo-ID.priority=X --save'

Wobei Repo-ID und X entsprechend ersetzt werden müssen. Wichtig ist, das man den Side-Repos Prioritäten >= 2 zuweist, da die Priorität 1 den Fedora-Repositories vorbehalten sein sollte. Die Repo-ID kann man relativ einfach durch

yum repolist

in Erfahrung bringen.

Einige Repo-IDs enthalten zusätzlich zur eigentlichen ID noch die verwendete Fedora-Version sowie die CPU-Architektur (z.B. „rpmfusion-free/20/x86_64“). Diese zusätzlichen Informationen werden hier nicht benötigt und können weg gelassen werden.