A DNF csomagkezelő

írta: urandom0, 1 éve

A DNF (DeNdiFied YUM) egy fejlett, RPM alapú csomagkezelő, mely elsősorban a Red Hat Linux és annak leszármazott disztribúcióiból (pl. Fedora, CentOS) lehet ismerős, de más disztribúciók is használják. A YUM továbbfejlesztéseként jött létre, annak hibáit (gyenge teljesítmény, lassú függőségfeloldás, magas memóriahasználat) orvosolandó. A DNF a függőségek feloldására az OpenSuse Zypperétről kölcsönzött libsolv-ot használja, mely gyors iteratív függőségfeloldsást biztosít. Maga a DNF, mint program, alapvetően egy frontend a libdnf által biztosított szolgáltatásokat eléréséhez.
Ebben a blogbejegyzésben szerentém összegyűjteni a DNF legfontosabb parancsait és kapcsolóit, hogy segítségére legyen azoknak, akik DNF-es disztribúciót használnak vagy terveznek használni. Nem taglalunk minden egyes opciót, de a leggyakoribb felhasználási esetekre kitérünk. A bejegyzés nem rövid, de természetesen nem szükséges az egészet fejből tudni, elég néhány alapvető parancsot megtanulni ahhoz, hogy jól tudjuk használni a DNF-et. Vannak a leírásban olyan szakaszok, amiket valószínűleg sosem fogsz használni.
A bejegyzés elején a DNF parancsait és kapcsolóit taglaljuk, a végén pedig a DNF által használt konfigurációs fájlokról ejtünk pár szót.

A hibát találsz a bejegyzésben, kérlek mindenképp jelezd kommenteben, hogy tudjam javítani!

1. A DNF jellemzői:

- bináris és forráscsomagok telepítése, frissítése, törlése
- telepítés helyi lemezről és távoli tárolóból
- a teljes rendszer frissítése
- automatikus függőségkezelés
- automatikus frissítés (a dnf-automatic csomag segítségével)
- repozitóriumok (tárolók) kezelése
- részletes információk biztosítása csomagokról, csoportokról, tárolókról
- tárolók és csomagok hitelességének automatikus ellenőrzése
- lokális gyorsítótár a csomagok és metaadatok tárolásához
- csomagok cseréje egyetlen tranzakción belül
- tranzakciókezelés
- csomagcsoportok kezelése
- csomaglisták szűrése
- többszálon történő letöltés
- csomagok verziójának rögzítése
- letöltött csomagok automatikus másolása saját tárolóba
- shell biztosítása folyamatos interaktív munkához
- modulok kezelése
- parancskiegészítés (completion)
- Tor hálózaton történő letöltés
- bővíthetőség pluginok révén
- stb.

2. Kapcsolók és rövidítések

A DNF rendelkezik néhány általános kapcsolóval, melyeket szinten minden parancs mellé használhatunk. A legfontosabb általános kapcsolók a következők:
--help: súgó az adott parancsról. A súgó elején az általános mindig az általános kapcsolók találhatók, a végén a parancsspeficikus kapcsolók
-y, -- assumeyes: automatikus igen válasz minden kérdésre
-n, --assumeno: automatikus nem válasz minden kérdésre
-v, --verbose: bőbeszédű működés
--allowerasing: engedélyezi a telepített csomagok törlését a függőségek feloldása végett
--repo [repo], --repoid [repo]: csak bizonyos tárolók engedélyezése, azonosító vagy glob alapján (többször is megadható)
-x [package], --exclude [package], --excludepkgs [package]: csomagok kizárása név vagy glob alapján
--refresh: metaadatok frissítésének kényszerítése a parancs futtatása előtt

A DNF eléggé megengedő a parancsok és kapcsolók használatával kapcsolatban. Egyes parancsokat rövdíthetünk, például a dnf search vim ugyanazt jelenti, mint a dnf se vim. Sok esetben elhagyhatjuk a kapcsolót megelőző kötőjeleket, például a dnf list --all ugyanazt jelenti, mint a dnf list all. Bizonyos parancsoknál aliasokat is használhatunk, így a dnf upgrade vim ugyanazt jelenti, mint a dnf update vim.
Egyes helyeken jeleztem, hogy több féle megadási mód is lehetséges. Pontos részletekért lásd a dokumentációt.

A DNF parancsinak pontos leírását lásd itt: https://dnf.readthedocs.io/en/latest/command_ref.html

3. Telepítés a DNF segítségével

Csomag(ok) és függőségeinek telepítése repozitóriumból:
dnf install <csomagnév>

Csomag telepítése fájlrendszerről:
dnf install ./csomagneve.rpm

Egy adott fájlt tartalmazó csomag telepítése:
dnf install /utvonal/fajl
Például, a dnf install /usr/lib64/zzuf parancs megkeresi azt a csomagot, amelyikben az /usr/lib64/zzuf fájl van, és feltelepíti azt.

Csomagcsoport telepítése:
dnf group install <csoportnév> vagy
dnf install @csoportnév

Például:
dnf group install "KDE Plasma Workspaces"
dnf group install kde-desktop-environment
dnf install @kde-desktop-environment

Csomag újratelepítése:
dnf reinstall <csomagnév>

4. Eltávolítás

Csomagok és függőségeinek eltávolítása:
dnf remove <csomagnév>

Egy adott fájlt tartalmazó csomag eltávolítása:
dnf remove /utvonal/fajl
Például, a dnf remove /usr/lib64/zzuf parancs megkeresi azt a csomagot, amelyikben az /usr/lib64/zzuf fájl van, és eltávolítja azt.

Csomagcsoport eltávolítása:
dnf group remove <csoportnév> vagy
dnf remove @csoportnév

Például, a KDE Office csoport eltávolítása:
dnf group remove "KDE Office"
dnf group remove kde-office
dnf remove @kde-office

Az összes elárvult csomag (olyan csomag, amely más csomag függőségeként települt, de már nincs rá szükség) eltávolítása:
dnf autoremove

5. Frissítés

Annak ellenőrzése, hogy vannak-e új frissítések. Ezt elég ritkán használjuk, mivel a DNF automatikusan letölti a metaadatokat (tároló- és csomaginformációkat) minden művelet előtt, a konfigurációs fájlban meghatározott időközönként (lsd. metadata_expire opció az /etc/dnf/dnf.conf-ban):
dnf check-update

Ha egy művelet elvégzése (pl. frissítés) előtt azonban mégis úgy gondoljuk, hogy a metaadatok frissítésére van szükség, használjuk a --refresh (--ref) kapcsolót:
dnf update --refresh vagy
dnf update --ref

Csak a biztonsági frissítések ellenőrzése:
dnf check-update --security vagy
dnf check-update security

Csak a hibajavítási frissítések ellenőrzése:
dnf check-update --bugfix vagy
dnf check-update bugfix

A fenti két parancsot kombinálhatjuk, így: dnf check-update --security --bugfix, vagy akár így is: dnf check-update security bugfix

Az összes csomag és azok függőségeinek frissítése:
dnf update vagy
dnf upgrade

Csak a biztonsági frissítések telepítése:
dnf update --security vagy
dnf update security

Csak a hibajavító frissítések telepítése:
dnf update --bugfix vagy
dnf update bugfix

Itt szintén kombinálhatjuk a kettőt: dnf update --security --bugfix vagy dnf update security bugfix.

Adott csomag(ok) és függőségeinek frissítése:
dnf upgrade <csomagnév> vagy
dnf update <csomagnév>
Például: dnf update sudo vim mc

Csak bizonyos bizonyos frissítések telepítése:
dnf update --advisory=<frissítés_azonosító>
Ahol a <frissítés_azonosító> az adott disztribúcióban használt érvényes frissítési azonosító (a dnf updateinfo parancsok kimenetéből nyerhető ki).
Például: dnf update --advisory=FEDORA-2023-6537113d6d

Adott csomag(ok) downgrade-elése:
dnf downgrade <csomagnév>

A DNF képes az ún. csomagcsoportok kezelése. A csomagcsoportok egy adott felhasználási esetre tervezett csomagok csoportja. Például a "KDE Office" csoport a KDE környezethez tartozó irodai programok csomagjait fogja össze.
Csomagcsoportokat az alábbi paranccsal frissíthetünk, így a csoportba tartozó összes csomag frissül:
dnf group update <csoportnév>

A teljes rendszer frissítése:
dnf distro-sync
dnf system-upgrade

Azon folyamatok listázása, amelyek frissítés után a rendszer újraindítását igénylik (csak a folyamatokat listázza, a szolgáltatásokat nem!):
dnf needs-restarting

6. Frissítésekkel kapcsolatos információk

A DNF lehetővé teszi, hogy különféle információkat szerezzünk a csomagfrissítésekről, így segít nekünk a frissítések menedzselésében.

Információk a csomagfrissítésekkel kapcsolatban:
dnf updateinfo

Ez a parancs egy összegzést ad vissza az elérhető frissítésekről, például:

$ dnf updateinfo
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:55:21, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
Információ a frissítésekkel kapcsolatban: elérhető
1 Biztonsági észrevétel(ek)
1 Alacsony biztonsági észrevétel(ek)
6 Hibajavítási észrevétel(ek)
4 Fejlesztési észrevétel(ek)
2 egyéb észrevétel(ek)

Információk a telepített frissítésekről:
dnf updateinfo installed

Ez pedig az előzőhöz kapcsolódó összesítést ad vissza a telepített frissítésekről:

$ dnf updateinfo installed
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:56:39, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
Információ a frissítésekkel kapcsolatban: telepítve
2 Új csomag észrevétel(ek)
37 Biztonsági észrevétel(ek)
1 Kritikus biztonsági észrevétel(ek)
7 Fontos biztonsági észrevétel(ek)
20 Közepes biztonsági észrevétel(ek)
5 Alacsony biztonsági észrevétel(ek)
149 Hibajavítási észrevétel(ek)
82 Fejlesztési észrevétel(ek)
47 egyéb észrevétel(ek)

Az elérhető frissítésekkel kapcsolatban szintén kaphatunk hasonló összegzést:
$ dnf updateinfo available
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:58:30, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
Információ a frissítésekkel kapcsolatban: elérhető
1 Biztonsági észrevétel(ek)
1 Alacsony biztonsági észrevétel(ek)
6 Hibajavítási észrevétel(ek)
4 Fejlesztési észrevétel(ek)
2 egyéb észrevétel(ek)

Az összes elérhető frissítés listázása:
dnf updateinfo list available

Ez a parancs egy ehhez hasonló listát ad vissza:
$ dnf updateinfo list available
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:59:51, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
FEDORA-2023-33f6d232ca ismeretlen annobin-docs-11.11-1.fc37.noarch
FEDORA-2023-33f6d232ca ismeretlen annobin-plugin-gcc-11.11-1.fc37.x86_64
FEDORA-2023-e4b30443ab fejlesztés container-selinux-2:2.201.0-1.fc37.noarch
FEDORA-2023-56ff346ed8 hibajavítás crun-1.8.1-1.fc37.x86_64
FEDORA-2023-76dc977fd7 hibajavítás ibus-typing-booster-2.22.1-1.fc37.noarch
FEDORA-2023-a49e467a1b fejlesztés libdmapsharing-2.9.42-1.fc37.x86_64

Használhatjuk a dnf updateinfo list updates parancsot is, amely ugyanezt a listát adja vissza.

A korábban telepített frissítések jelenlegi és eggyel korábbi verziójáról is kérhetünk listát:
$ dnf updateinfo list installed
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 1:00:29, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
FEDORA-2023-6537113d6d Közepes/bizt. ImageMagick-c++-1:6.9.12.77-1.fc37.x86_64
FEDORA-2023-6537113d6d Közepes/bizt. ImageMagick-libs-1:6.9.12.77-1.fc37.x86_64
FEDORA-2023-b299624f65 hibajavítás ModemManager-1.18.12-1.fc37.x86_64
FEDORA-2023-b299624f65 hibajavítás ModemManager-glib-1.18.12-1.fc37.x86_64
FEDORA-2023-7f92dd90a3 ismeretlen NetworkManager-1:1.40.10-1.fc37.x86_64
FEDORA-2023-7f92dd90a3 ismeretlen NetworkManager-adsl-1:1.40.10-1.fc37.x86_64
FEDORA-2023-7f92dd90a3 ismeretlen NetworkManager-bluetooth-1:1.40.10-1.fc37.x86_64
FEDORA-2023-7f92dd90a3 ismeretlen NetworkManager-config-connectivity-fedora-1:1.40.10-1.fc37.noarch
FEDORA-2022-a3c50ac087 fejlesztés NetworkManager-l2tp-1.20.8-1.fc37.x86_64
FEDORA-2022-a3c50ac087 fejlesztés NetworkManager-l2tp-gnome-1.20.8-1.fc37.x86_64
FEDORA-2023-7f92dd90a3 ismeretlen NetworkManager-libnm-1:1.40.10-1.fc37.x86_64
FEDORA-2023-7f92dd90a3 ismeretlen NetworkManager-ppp-1:1.40.10-1.fc37.x86_64

A dnf updateinfo list all parancs pedig a telepített csomagok összes korábbi verzióját is kilistázza.

Információk lekérés egy adott frissítéssel kapcsolatban:
dnf updateinfo info <frissítés_azonosító>

Ahol a <frissítés_azonosító> az adott disztribúcióban használt érvényes frissítési azonosító (a dnf updateinfo parancsok kimenetéből nyerhető ki).
Fedorában például a fenti parancs a FEDORA-2023-27958e9307 számú frissítéssel kapcsolatban ezt adja vissza:

$ dnf updateinfo info FEDORA-2023-27958e9307
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 1:07:20, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
===============================================================================
vim-9.0.1367-1.fc37
===============================================================================
Frissítési azonosító: FEDORA-2023-27958e9307
Típus: biztonsági
Frissítve: 2023-03-04 03:17:34
Hibák: 2174662 - CVE-2023-1127 vim: Divide By Zero in vim/vim
: 2174930 - CVE-2023-1127 vim: Divide By Zero in vim/vim [fedora-all]
Leírás: The newest upstream patchlevel 1367
:
: Security fix for CVE-2023-1127
Súlyosság: Low

Az összes, még nem telepített biztonsági frissítés listázása:
dnf updateinfo list updates security vagy
dnf updateinfo list security

Az összes, már telepített biztonsági frissítés listázása:
dnf updateinfo list security --installed

Információk kérése egy adott CVE azonosítóhoz kapcsolódó biztonsági frissítésről:
dnf updateinfo info --cve <cve_azonosíto>
Például: dnf updateinfo info --cve CVE-2019-20386

7. Változásnaplók

Ha szeretnénk tudni, hogy a friss csomagok milyen változásokat hoznak magukkal, megtekinthetjük a változásnaplót az alábbi utasításokkal.

Teljes, az összes csomaghoz tartozó változásnapló megtekintése:
dnf changelog

Ha csak egy vagy több csomag változásnaplójára vagyunk kíváncsiak, azt is könnyen megnézhetjük:
dnf changelog <csomagnév>
Itt is használhatunk egymás után több csomagnevet, a DNF a szép sorban visszaadja a hozzájuk tartozó változásnaplót.
Pl. a dnf changelog sudo parancs a következőt adja vissza:

$ dnf changelog sudo
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:02:49, ekkor: 2023. márc. 5., vasárnap, 14:30:37 CET.
Összes változásnapló megjelenítése
Változásnaplók ehhez: sudo-1.9.13-1.p2.fc37.x86_64
* sze márc 01 00:00:00 2023 Radovan Sroka <rsroka@redhat.com> - 1.9.13-1.p2
- Rebase to sudo 1.9.13p2
- sudo-1.9.13p2 is available Resolves: rhbz#2169840
- sudo: double free with per-command chroot sudoers rules Resolves:
CVE-2023-27320

* cs jan 19 00:00:00 2023 Radovan Sroka <rsroka@redhat.com> - 1.9.12-1.p2
- Rebase to sudo 1.9.12p2
- sudo-1.9.12p2 is available Resolves: rhbz#2137775
- sudo: arbitrary file write with privileges of the RunAs user
CVE-2023-22809 Resolves: rhbz#2162042

* szo júl 23 00:00:00 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.11-4.p3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

* sze jún 22 00:00:00 2022 Radovan Sroka <rsroka@redhat.com> - 1.9.11-3.p3
- Update to 1.9.11p3

* h jún 13 00:00:00 2022 Python Maint <python-maint@redhat.com> - 1.9.8-7.p2
- Rebuilt for Python 3.11

Változásnapló megtekintése adott dátumtól:
dnf changelog --since

Szintén lehet használni egy vagy több csomagra szűkítve, például a sudo csomaghoz:

$ dnf changelog sudo --since 2013-01-01
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:25:36, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
Változásnapló-bejegyzések megjelenítése 2023-01-01 00:00:00 óta
Változásnaplók ehhez: sudo-1.9.13-1.p2.fc37.x86_64
* sze márc 01 00:00:00 2023 Radovan Sroka <rsroka@redhat.com> - 1.9.13-1.p2
- Rebase to sudo 1.9.13p2
- sudo-1.9.13p2 is available Resolves: rhbz#2169840
- sudo: double free with per-command chroot sudoers rules Resolves:
CVE-2023-27320

* cs jan 19 00:00:00 2023 Radovan Sroka <rsroka@redhat.com> - 1.9.12-1.p2
- Rebase to sudo 1.9.12p2
- sudo-1.9.12p2 is available Resolves: rhbz#2137775
- sudo: arbitrary file write with privileges of the RunAs user
CVE-2023-22809 Resolves: rhbz#2162042

Adott számú változás megtekintése a naplóból:
dnf changelog --count 3

Például, a sudo csomag utolsó három változása:

$ dnf changelog sudo --count 3
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:29:10, ekkor: 2023. márc. 5., vasárnap, 15:16:37 CET.
Csak a legfrissebb 3 változásnapló-bejegyzés megjelenítése
Változásnaplók ehhez: sudo-1.9.13-1.p2.fc37.x86_64
* sze márc 01 00:00:00 2023 Radovan Sroka <rsroka@redhat.com> - 1.9.13-1.p2
- Rebase to sudo 1.9.13p2
- sudo-1.9.13p2 is available Resolves: rhbz#2169840
- sudo: double free with per-command chroot sudoers rules Resolves:
CVE-2023-27320

* cs jan 19 00:00:00 2023 Radovan Sroka <rsroka@redhat.com> - 1.9.12-1.p2
- Rebase to sudo 1.9.12p2
- sudo-1.9.12p2 is available Resolves: rhbz#2137775
- sudo: arbitrary file write with privileges of the RunAs user
CVE-2023-22809 Resolves: rhbz#2162042

* szo júl 23 00:00:00 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.9.11-4.p3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

8. Keresés, listázás

Keresés a csomagok neveiben:
dnf search <kifejezés> vagy
dnf se <kifejezés>

Keresés a csomagok neveiben, leírásukban és a hozzájuk tartozó URL-ben is:
dnf search all <kifejezés> vagy
dnf se a <kifejezés>

Az összes csomag listázása:
dnf list

Szintén az összes csomag listázása (ugyanaz, mint az előző):
dnf list --all vagy
dnf list all

Adott kifejezésre illeszkedő nevű csomagok listázása:
dnf list <kifejezés>
A <kifejezés> bármilyen érvényes, helyettesítő (joker) karakterekkel ellátot kifejezés (glob) lehet. Például:
dnf list *sudo*

Összes telepített csomag listázása
dnf list --installed vagy
dnf list installed

Az összes frissíthető csomag listázása:
dnf list --updates vagy
dnf list updates

Szintén az összes frissíthető csomag listázása (ugyanaz, mint az előző):
dnf list --upgrades vagy
dnf list upgrades

A legutóbb megváltozott csomagok listázása:
dnf list recent

9. Csomagokkal és csomagcsoportokkal kapcsolatos információk

Egy adott csomaggal kapcsolatos (bő) információk megjelenítése:
dnf info <csomagnév>

Egy hasonló leírást fogunk visszakapni:
$ dnf info sudo
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:35:11, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
Telepített csomagok
Név : sudo
Verzió : 1.9.13
Kiadás : 1.p2.fc37
Architektúra : x86_64
Méret : 4.6 M
Forrás : sudo-1.9.13-1.p2.fc37.src.rpm
Tároló : @System
Ezen tárolób : updates
Összegzés : Allows restricted root access for specified users
URL : https://www.sudo.ws
Licenc : ISC
Leírás : Sudo (superuser do) allows a system administrator to give certain
: users (or groups of users) the ability to run some (or all) commands
: as root while logging all commands and arguments. Sudo operates on a
: per-command basis. It is not a replacement for the shell. Features
: include: the ability to restrict what commands a user may run on a
: per-host basis, copious logging of each command (providing a clear
: audit trail of who did what), a configurable timeout of the sudo
: command, and the ability to use the same configuration file (sudoers)
: on many different machines.

Adott csomagcsoporttal kapcsolatos információk:
dnf groupinfo <csoportnév>
Például: $ dnf groupinfo kde-office
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:36:28, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
Csoport: KDE Office
Leírás: KDE irodai alkalmazások
Szükséges csomagok:
calligra-sheets
calligra-stage
calligra-words
okular

Összes csoport listázása:
dnf group list

10. Tranzakciótörténet

A DNF nyilvántartja az összes korábban elvégzett műveletet, ez a tranzakciótörténet. A tranzakciótörténet alapján lehetőségünk van valamely korábbi telepítési vagy eltávolítási művelet visszavonására (undo) és korábbi állapotra való visszaállásra (rollback).

Tranzakciótörténet megjelenítése:
dnf history vagy
dnf hist

Tranzakciótörténet szűkítése adott csomagra (csak az adott csomaggal kapcsolatos műveleteket jeleníti meg):
dnf history <csomagnév>

Tranzakció részletes adatainak megjelenítése
dnf history info <azonosító>

Például:
$ dnf history info 68
Tranzakció azonosító: 68
Kezdés ideje : 2023. márc. 4., szombat, 19:24:34 CET
rpmdb kezdete: 960bf87da3ffb4ddba176b230e7c6ec087aeeea33edbc74f58be2a719edff881
Befejezés ideje: 2023. márc. 4., szombat, 19:24:54 CET (20 másodperc)
rpmdb vége : b025cdc21c532e688a80c5b1394853bdc134b236cf19d74866c76ab96a680961
Felhasználó :
Vissz. érték : Siker
Kiadásverzió : 37
Parancssor : install hugo
Megjegyzés :
Módosított csomagok:
Telepítés hugo-0.98.0-5.fc37.x86_64 @fedora
Telepítés libsass-3.6.4-6.fc37.x86_64 @fedora
Telepítés python3-fb-re2-1.0.7-10.fc37.x86_64 @fedora
Telepítés utf8proc-2.7.0-3.fc37.x86_64 @fedora
Telepítés golang-1.19.6-1.fc37.x86_64 @updates
Telepítés golang-bin-1.19.6-1.fc37.x86_64 @updates
Telepítés golang-src-1.19.6-1.fc37.noarch @updates
Telepítés libserf-1.3.9-27.fc37.x86_64 @updates
Telepítés mercurial-6.2.3-2.fc37.x86_64 @updates
Telepítés re2-1:20220601-1.fc37.x86_64 @updates
Telepítés subversion-1.14.2-8.fc37.x86_64 @updates
Telepítés subversion-libs-1.14.2-8.fc37.x86_64 @updates

Tranzakciótörténet adott tartományának megjelenítése:
dnf history list <kezdet>...<veg>

Például:
$ dnf history 65..70
Azonos | Parancssor | Dátum és idő | Művelet(ek) | Változt
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
70 | install ruby-devel | 2023-03-04 19:40 | Install | 12
69 | remove hugo | 2023-03-04 19:40 | Removed | 12 EE
68 | install hugo | 2023-03-04 19:24 | Install | 12
67 | install seahorse | 2023-03-04 18:41 | Install | 1
66 | install docker | 2023-03-04 03:27 | Install | 3 EE
65 | install gnome-tweaks | 2023-03-02 06:32 | Install | 1

Tranzakció visszavonása:
dnf history undo <azonosító>

Például:
dnf undo 70

Használhatjuk a 'last' kapcsolót is az utolsó tranzakció visszavonására, illetve használhatjuk a 'last-<n>' formában is, ahol x egy szám, így a "hátulról" számított n-edik tranzakció kerül visszavonásra.

Tranzakció ismétlése:
dnf history redo <azonosító>

Például:
dnf redo 70

Használhatjuk a 'last' kapcsolót is az utolsó tranzakció ismétlésére, illetve használhatjuk a 'last-<x>' formában is, ahol x egy szám, így a "hátulról" számított x-e
dik tranzakció kerül ismétlésre.

A felhasználó által telepített összes csomag megjelenítése:
dnf history userinstalled

Az összes tranzakció visszavonása egy adott tranzakcióig:
dnf history rollback <azonosító>
Ha esetleg az RPMDB sérülése miatt nem lehetséges egy vagy több tranzakciót visszavonni, akkor ez a parancs nem csinál semmit.

11. Repozitóriumok (tárolók) kezelése

Az engedélyezett tárolók listázása:
dnf repolist

Részletes adatok az engedélyezett tárolókról:
dnf repolist -v

Az összes (engedélyezett és letiltott) tárolók listázása:
dnf repolist all

Egy adott tárolóhoz tartozó összes csomag megjelenítése:
dnf repository-packages <tárolónév> list

Például:
$ dnf repository-packages rpmfusion-free list
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:47:27, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
Elérhető csomagok
BasiliskII.x86_64 1.0-0.20171001.7.fc37.10 rpmfusion-free
HandBrake.x86_64 1.5.1-4.fc37 rpmfusion-free
HandBrake-gui.x86_64 1.5.1-4.fc37 rpmfusion-free
Nestopia.x86_64 1.51.1-3.fc37 rpmfusion-free
ProjectX.x86_64 0.91.0-21.fc37 rpmfusion-free
SheepShaver.x86_64 2.4-0.17.20171001.fc37 rpmfusion-free
VirtualBox.x86_64 6.1.40-1.fc37 rpmfusion-free
...

Egy adott tárolóhoz tartozó összes csomag részleteinek megjelenítése:
dnf repository-packages <tárolónév> info

Például:
$ dnf repository-packages rpmfusion-free info
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:45:49, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
Elérhető csomagok
Név : BasiliskII
Verzió : 1.0
Kiadás : 0.20171001.7.fc37.10
Architektúra : x86_64
Méret : 544 k
Forrás : BasiliskII-1.0-0.20171001.7.fc37.10.src.rpm
Tároló : rpmfusion-free
Összegzés : 68k Macintosh emulator
URL : http://basilisk.cebix.net/
Licenc : GPLv2+
Leírás : Basilisk II is an Open Source 68k Macintosh emulator. That is, it enables
: you to run 68k MacOS software on you computer, even if you are using a
: different operating system. However, you still need a copy of MacOS and
: a Macintosh ROM image to use Basilisk II.

Név : HandBrake
Verzió : 1.5.1
Kiadás : 4.fc37
Architektúra : x86_64
Méret : 439 k
Forrás : HandBrake-1.5.1-4.fc37.src.rpm
Tároló : rpmfusion-free
Összegzés : An open-source multiplatform video transcoder
URL : http://handbrake.fr/
Licenc : GPLv2+
Leírás : HandBrake is a general-purpose, free, open-source, cross-platform, multithreaded
: video transcoder software application. It can process most common multimedia
: files and any DVD or Bluray sources that do not contain any kind of copy
: protection.
:
: This package contains the command line version of the program.

Név : HandBrake-gui
Verzió : 1.5.1
Kiadás : 4.fc37
Architektúra : x86_64
Méret : 3.5 M
Forrás : HandBrake-1.5.1-4.fc37.src.rpm
Tároló : rpmfusion-free
Összegzés : An open-source multiplatform video transcoder (GUI)
URL : http://handbrake.fr/
Licenc : GPLv2+
Leírás : HandBrake is a general-purpose, free, open-source, cross-platform, multithreaded
: video transcoder software application. It can process most common multimedia
: files and any DVD or Bluray sources that do not contain any kind of copy
: protection.
:
: This package contains the main program with a graphical interface.
...

Egy adott tárolóhoz tartozó csomagok frissítéseinek ellenőrzése:
dnf repository-packages <tárolónév> check-update

Egy adott tárolóhoz tartozó csomagok frissítése:
dnf repository-packages <tárolónév> upgrade

Egy adott csomag által biztosított fájlok listájának megtekintése:
dnf repoquery -l <csomagnév>
Például:
$ dnf repoquery -l sudo
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:49:17, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
/etc/dnf/protected.d/sudo.conf
/etc/pam.d/sudo
/etc/pam.d/sudo-i
/etc/sudo.conf
/etc/sudoers
/etc/sudoers.d
/usr/bin/cvtsudoers
...

Egy adott csomag függőségeinek megtekintése:
dnf repoquery --deplist <csomagnév> vagy
dnf deplist <csomagnév> (elavult változat)

Ez a parancs nem csak a csomag által igényelt csomagok neveit, de az igényelt fájlt nevét is megmutatja.
Például:
$ dnf repoquery --deplist sudo
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:51:01, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
package: sudo-1.9.11-4.p3.fc37.x86_64
dependency: libaudit.so.1()(64bit)
provider: audit-libs-3.1-2.fc37.x86_64
dependency: libc.so.6(GLIBC_2.34)(64bit)
provider: glibc-2.36-9.fc37.x86_64
dependency: libcrypto.so.3()(64bit)
provider: openssl-libs-1:3.0.8-1.fc37.x86_64
...

Azon csomag megkeresése, ami egy adott képességet (programot) biztosít:
dnf provides <név>

Például:
$ dnf provides vim
Az utolsó metaadat lejárati ellenőrzés ennyi ideje volt: 0:51:01, ekkor: 2023. márc. 5., vasárnap, 16:29:46 CET.
vim-enhanced-2:9.0.475-1.fc37.x86_64 : A version of the VIM editor which includes recent enhancements
Tároló : fedora
Találat a következőtől:
Biztosítja: vim

vim-enhanced-2:9.0.1367-1.fc37.x86_64 : A version of the VIM editor which includes recent enhancements
Tároló : updates
Találat a következőtől:
Biztosítja: vim

Egy adott csomag által biztosított függőségek (képességek) megtekintése:
dnf repoquery --provides <csomagnév> vagy

Azon képességek (függőségek) megjelenítése, amelyektől a csomag függ:
dnf repoquery --requires <csomagnév>

Egy adott csomag által biztosított képességekhez tartozó függőségfa megtekintése:
dnf repoquery --provides --tree <csomagnév>

Azon képességek függőségfájának megjelenítése, amelyektől a csomag függ:
dnf repoquery --requires --tree <csomagnév>

Azon csomagok megjelenítése, amelyek ütköznek a csomaggal:
dnf repoquery --whatconflicts <csomagnév>

Tároló hozzáadása:
dnf config-manager --add-repo <url>
Az <url> egy link egy .repo fájlra.

Tároló engedélyezése:
dnf config-manager --set-enabled <tároló>

Tároló letiltása:
dnf config-manager --set-disabled <tároló>

12. Takarítás

A tárolók metaadataiból generált gyorsítótári fájlok törlése:
dnf clean dbcache

A tárolók helyi gyorsítótárában lévő sütik törlése (lejártként való megjelölése). A DNF újra le fogja tölteni a tárolók adatait a következő használatkor:
dnf clean expire-cache

A tárolók metaadatainak eltávolítása. Ezek azok a fájlok, amik alapján a DNF meghatározza a csomagok elérhetőségét. A DNF újra le fogja tölteni a csomagadatokat a következő használatkor:
dnf clean metadata

A gyorsítótárban lévő összes csomag eltávolítása:
dnf clean packages

Az összes enegedélyezett plugin gyorsítótárának ürítése:
dnf clean plugins

Az összes fenti művelet elvégzése:
dnf clean all

13. A DNF fontosabb beállításai

A DNF beállításait alapértelmezés szerint az /etc/dnf/dnf.conf fájlban találjuk meg, míg a tárolók adatait (*.repo fájlok) jellemzően az /etc/yum.repos.d mappa tartalmazza, mely magasabb priorítást élvez a dnf.conf-ban definiált tárolóadatokkal szemben. A dnc.conf INI szerkezetű, a beállításokat egyszerű név=érték párokból álló kulcsok tartalmazzák.
A fájlban két fő szekció lehet, a [main] és a [repository]. A [main] szekció definiálja az összes globális beállítást, míg a [repository] szekció tárolja az összes (helyi és távoli) tároló adatát (bár ez a szekció jellemzően nem is létezik, az /etc/yum.repos.d mappában tárolt adatok helyettesítik).

A [main] szekció néhány fontosabb beállítása:
- arch: a csomagok telepítéséhez használt architektúra. Értéke egy string lehet (), alapértelmezett értéke auto-detect. Gyakran együtt használatos az 'ignorearch' opcióval.
- assumeno: ahol lehetséges, a dnf kérdés esetén (pl. tranzakcióműveleteknél) automatikusan a nem lehetőséget választja. Értéke true vagy false lehet, alapértelmezett értéke false.
- assumeyes: ahol lehetséges, a dnf kérdés esetén (pl. tranzakcióműveleteknél) automatiksaun az igen lehetőséget választja. Értéke true vagy false lehet, alapértelmezett értéke false.
- best: kényszeríti a solvert (fűggőségfeloldót), hogy az elérhető legmagasabb verziószámú csomagot telepítse. False esetén nem jelez hibát, ha nem érhető el a legújabb verzió, ehelyett egy régebbi verziót telepít. Értéke true vagy false lehet, alapértelmezett értéke false. Csak a közvetleneül kért csomagokra vonatkozik, a függőségekre nem!
- clean_requirements_on_remove: Meghatározza, hogy a dnf eltávolítsa-e a nem használt függőségeket csomag eltávolításánál. Értéke true vagy false lehet, alapértelmezett értéke true.
- defaultyes: Meghatározza, hogy csaomagműveletek megerősítésénél az alapértelmezetten felajánlott művelet az 'igen' legyen. Nem összekeverendő az 'assumeyes' opció, ami nem ajánl fel választási lehetőséget, automatikusan az igent választja! Értéke true vagy false lehet, alapértelmezett értéke false.
- ignorearch: ha értéke true, az RPM lehetővé teszi a CPU architektúrájával inkompatibilis csomagok telepítését. Értéke true vagy false lehet, alapértelmezett értéke false.
- keepcache: tartsa-e a gyorsítótárban a letöltött csomagokat. Ha értéke false, akkor is gyorsítótárazza a csomagokat a követkető sikeres tranzakcióig. Értéke true vagy false lehet, alapértelmezett értéke false.
- color: meghatározza, hogy a dnf használjon-e a színeket a kimenet megjelenítésekor. Értéke lehet "auto", "never" vagy "always", alapértelmezett értéke "auto".
- fastestmirror: ha engedélyezve van, egy mérőszám alapján megpróbálja meghatározni a leggyorsabb tükröt. Ping alapján mér, nem sávszélesség alapján, így használata nem feltétlenül okoz érzékelhető gyorsulást. Az opció által meghatározott értéke felülírja a tárolók sorrendjét. Értéke true vagy false lehet, alapértelmezett értéke false.
- max_parallel_downloads: meghatározza a párhuzamosan letölthető csomagok számát. Értéke egy egész szám (legfeljebb 20) lehet, alapértelmezett értéke 3.
- metadata_expire: meghatározza a metaadak újraellenőrzésének időtartamát másodpercben. Alapértelmezett értéke 48 órának megfelelő másodperc. Ha -1-re állítjuk, a metaadatok lejárta nem lesz ellenőrizve.
- minrate: az a minimum sebesség, ami alatt a dnf megszakítja a letöltést az adott kiszolgálóról. Értéke bájt/másodpercben van kifejezve, érvényes mértékegységek "k", "M", "G", alapértelmezett értéke 1000.

A dnf gyorsítótára a /var/cache/dnf mappa. A telepített pluginok beállításai a /etc/dnf/plugins mappában találhatók.

14. Frissítések automatikus telepítése

A frissítések automatikus telepítéséhez a dnf-automatic csomag kell telepítenünk:
dnf install dnf-automatic

A dnf-automatic beállításához használd a dokumentációt: https://dnf.readthedocs.io/en/latest/automatic.html

-------------

Utolsó módosítás: 2023. 03. 11.