Azure Linux-pakketten beheren met DNF5

In dit artikel worden algemene pakketbeheertaken in Azure Linux behandeld, waaronder:

  • Waar de configuratie van de opslagplaats zich bevindt.
  • Hoe verouderde pakketbeheeropdrachten overeenkomen met DNF5.
  • Hoe DNF metagegevens in de cache opsneert en pakketten oplost.
  • Hoe kernels en andere pakketten met alleen installeren worden verwerkt.
  • Updates zonder toezicht inschakelen.
  • De meest gebruikte DNF-opdrachten.

Opmerking

Azure Linux 4.0 bevindt zich nu in preview en is strikt beperkt tot evaluatie- en testdoeleinden. Het is niet geschikt voor productiegebruik.

Configuratie van opslagplaats

DNF5 leest opslagplaatsdefinities van /etc/yum.repos.d/. De mapnaam blijft behouden van YUM voor compatibiliteit; DNF5 leest uit deze map.

Elk .repo bestand in die map is een configuratiebestand met tekst zonder opmaak waarmee DNF wordt aangegeven waar pakketten moeten worden gevonden, of ze moeten worden geverifieerd met GPG en of de opslagplaats standaard is ingeschakeld. Het belangrijkste DNF-configuratiebestand is /etc/dnf/dnf.conf, waarmee het algemene gedrag wordt bepaald, zoals cache-instellingen, de limiet voor alleen installeren en proxyconfiguratie.

Azure Linux levert compatibele symlinks, zodat oudere commando's (yum, dnf (DNF4), microdnf, tdnf) allemaal naar DNF5 verwijzen:

lrwxrwxrwx.  1 root root       4  yum -> dnf5
lrwxrwxrwx.  1 root root       4  microdnf -> dnf5
-rwxr-xr-x.  1 root root 1614408  dnf5
lrwxrwxrwx.  1 root root       4  dnf -> dnf5
lrwxrwxrwx.  1 root root       4  tdnf -> dnf5

De algemene subopdrachten werken allemaal via de symlinks. Randgevallen die afhankelijk waren van de interne werking van DNF4 of van microdnf-specifiek gedrag, werken mogelijk niet meer. Zie de volgende bronnen voor meer informatie over wat er is gewijzigd:

Hoe DNF5 pakketten oplost

Wanneer u een DNF-opdracht uitvoert, voert DNF5 de volgende stappen uit om te bepalen welke pakketten moeten worden geïnstalleerd, bijgewerkt of verwijderd:

  1. Laadt elk .repo bestand in /etc/yum.repos.d/ en selecteert de opslagplaatsen die zijn gemarkeerd als ingeschakeld.
  2. Vernieuwt de metagegevens van de opslagplaats en cachet deze lokaal onder /var/cache/libdnf5. Metagegevens in de cache bevatten de pakketlijst, versie- en afhankelijkheidsgegevens, controlesommen en handtekeningen.
  3. Verwerkt de aangevraagde installatie, verwijdering of upgrade aan de hand van de ingeschakelde pakketbronnen, kiest pakketversies en controleert de integriteit en handtekeningen voordat de transactie wordt uitgevoerd.

Uitgeschakelde repositories worden genegeerd, tenzij u deze expliciet inschakelt met --enablerepo=<repo-id> voor één enkele opdracht.

De /var/cache/libdnf5 cache bestaat zodat DNF bij elke aanroep geen metagegevens opnieuw hoeft te downloaden. Voer dnf clean all deze uit om deze leeg te maken (zie veelgebruikte DNF-opdrachten).

Pakketten die alleen worden geïnstalleerd en meerdere geïnstalleerde versies

Sommige pakketten, met name de kernel, worden naast elkaar geïnstalleerd in plaats van bijgewerkt. DNF5 bepaalt dit via twee instellingen in /etc/dnf/dnf.conf:

  • installonlypkgs: Lijst met pakketnamen die nooit ter plaatse worden geüpgraded. Kernelpakketten vormen het standaard toegangspunt.
  • installonly_limit: Maximaal aantal versies van een pakket dat alleen wordt geïnstalleerd, dat tegelijkertijd op het systeem aanwezig kan zijn. De standaardwaarde is 3.

Wanneer een nieuwe versie is geïnstalleerd en de limiet wordt overschreden, verwijdert DNF automatisch de oudste versie.

Voor de kernel krijgt u het volgende:

  • Terugval: Als een nieuwe kernel niet kan worden opgestart, kan GRUB nog steeds een eerdere, bekende kernel starten.
  • Validatie: U kunt een nieuwe kernel installeren en testen zonder de actieve kernel te verwijderen.
  • Co-existentie van varianten: u kunt verschillende kernel-builds (bijvoorbeeld met verschillende functiesets) tegelijkertijd installeren.

Elke kernelversie is een afzonderlijk RPM-pakket, dus DNF houdt ze bij en verwijdert ze net als elk ander pakket.

Updates zonder toezicht met dnf-automatic

dnf-automatic is een service die periodiek controleert op, downloadt en eventueel pakketupdates toepast. Het wordt aangestuurd door een systeemtimer in plaats van te worden uitgevoerd als een langlevende daemon.

dnf-automatic installeren

Installeer dnf-automatic met behulp van de volgende opdracht:

sudo dnf install -y dnf-automatic

De dnf-automatic timer inschakelen

Schakel de dnf-automatic timer onmiddellijk en tijdens het opnieuw opstarten in met behulp van de volgende opdracht:

sudo systemctl enable --now dnf-automatic.timer
  • enable configureert de timer om bij het opstarten te starten.
  • --now start de timer in de huidige sessie.

De status van de dnf-automatic timer controleren

Controleer of de timer actief is en kijk wanneer deze voor het laatst is uitgevoerd met behulp van de volgende opdracht:

systemctl status dnf-automatic.timer

Typische uitvoer ziet eruit zoals in het volgende voorbeeld:

● dnf5-automatic.timer - dnf-automatic timer
     Loaded: loaded (/usr/lib/systemd/system/dnf5-automatic.timer; enabled; preset: disabled)
     Active: active (waiting) since Thu 2026-03-26 14:36:54 UTC; 13min ago
 Invocation: f6984eeceb7c40df99bca243f3da728c
    Trigger: Fri 2026-03-27 06:34:18 UTC; 15h left
   Triggers: ● dnf5-automatic.service

Active: active (waiting) wordt verwacht: de onderliggende service is een one-shot-service die alleen draait wanneer de timer afgaat en daarna stopt. De Trigger: regel toont de volgende geplande uitvoering.

De volgende geplande uitvoering van de dnf-automatic timer weergeven

Vermeld de volgende uitvoering naast andere timers met behulp van de volgende opdracht:

systemctl list-timers dnf-automatic.timer

Voorbeelduitvoer:

NEXT                        LEFT LAST PASSED UNIT                 ACTIVATES
Fri 2026-03-27 06:34:18 UTC  15h -         - dnf5-automatic.timer dnf5-automatic.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

Optionele configuratie van dnf-automatic

U kunt het gedrag van automatische updates configureren door het /etc/dnf/automatic.conf bestand toe te voegen. Dit bestand bepaalt of updates alleen worden gedownload, automatisch worden toegepast of beperkt tot alleen beveiligingsupdates. Zie de dnf5-automatische documentatie voor volledige configuratiedetails

Opmerking

Automatische updates worden geïnstalleerd via dnf-automatic, maar het systeem wordt niet automatisch opnieuw opgestart. Als een kernel (of een ander pakket dat opnieuw moet worden opgestart) wordt bijgewerkt, wordt de nieuwe versie pas van kracht nadat de volgende herstart is uitgevoerd. Na updates controleert u of opnieuw opstarten is vereist en plant u er zo nodig een.

Veelgebruikte DNF-opdrachten

De volgende opdrachten hebben betrekking op het merendeel van het dagelijkse pakketbeheer op Azure Linux.

dnf clean all

dnf clean all verwijdert alles wat DNF in de cache heeft opgeslagen onder /var/cache/libdnf5. Gebruik deze voor het volgende:

  • Herstellen van beschadigde of verouderde metagegevens die transactiefouten veroorzaken.
  • Verklein containerimages door de pakketcache na installaties in dezelfde RUN laag te verwijderen.
  • Maak schijfruimte vrij.

Containervoorbeeld:

RUN dnf install -y package1 package2 \
    && dnf clean all

dnf search toetst trefwoorden aan pakketnamen en samenvattingen. Voorbeeld:

dnf search lsof

Voorbeelduitvoer:

Updating and loading repositories:
 Azure Linux 4.0 - x86_64 - Microsoft                        100% |   7.6 KiB/s |   4.8 KiB |  00m01s
Repositories loaded.
Matched fields: name (exact)
 lsof.x86_64   A utility which lists open files on a Linux/UNIX system

dnf provides

dnf provides zoekt het pakket dat eigenaar is van een bepaald bestand, een opdracht of een bepaalde mogelijkheid. Voorbeeld:

dnf provides lsof

Voorbeelduitvoer:

Updating and loading repositories:
Repositories loaded.
lsof-4.98.0-8.azl4.20260303.x86_64 : A utility which lists open files on a Linux/UNIX system
Repo         : @System
Matched From :
Provide      : lsof = 4.98.0-8.azl4.20260303

dnf install

dnf install installeert een of meer pakketten samen met hun runtime-afhankelijkheden:

sudo dnf install lsof

Voorbeelduitvoer:

Updating and loading repositories:
Repositories loaded.
Package           Arch     Version                  Repository    Size
Installing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Installing:         1 package

Total size of inbound packages is 226 KiB. Need to download 226 KiB.
After this operation, 579 KiB extra will be used (install 579 KiB, remove 0 B).
Is this ok [y/N]: y
[1/1] lsof-0:4.98.0-8.azl4.20260303.x86_64                100% | 641.9 KiB/s | 226.0 KiB |  00m00s
[1/1] Total                                               100% | 640.1 KiB/s | 226.0 KiB |  00m00s
Running transaction
[1/3] Verify package files                                100% | 500.0   B/s |   1.0   B |  00m00s
[2/3] Prepare transaction                                 100% |  23.0   B/s |   1.0   B |  00m00s
[3/3] Installing lsof-0:4.98.0-8.azl4.20260303.x86_64     100% |   3.0 MiB/s | 580.2 KiB |  00m00s
Complete!

dnf remove

dnf remove deïnstalleert een pakket samen met alle afhankelijkheden die specifiek voor dat pakket zijn meegeïnstalleerd:

sudo dnf remove -y lsof

Voorbeelduitvoer:

Package           Arch     Version                  Repository    Size
Removing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Removing:           1 package

After this operation, 579 KiB will be freed (install 0 B, remove 579 KiB).
Is this ok [y/N]: y
Running transaction
[1/2] Prepare transaction                                 100% |  27.0   B/s |   1.0   B |  00m00s
[2/2] Removing lsof-0:4.98.0-8.azl4.20260303.x86_64       100% |  72.0   B/s |  11.0   B |  00m00s
Complete!

dnf upgrade

dnf upgrade werkt geïnstalleerde pakketten bij naar de nieuwste beschikbare versies.

sudo dnf upgrade

Wanneer alles actueel is, is de uitvoer kort. Voorbeeld:

Updating and loading repositories:
Repositories loaded.
Nothing to do.

Tip

Geef -y door aan install, remove of upgrade in niet-interactieve contexten, zoals scripts, CI-pijplijnen en containerbuilds. Elke DNF-bewerking die het systeem wijzigt, vereist root, dus voer deze uit onder sudo of als root.