Zarządzanie pakietami Azure Linux za pomocą systemu DNF5

W tym artykule opisano typowe zadania zarządzania pakietami w systemie Azure Linux, w tym:

  • Gdzie jest przechowywana konfiguracja repozytorium.
  • Jak starsze polecenia menedżera pakietów odpowiadają poleceniom w DNF5.
  • Sposób buforowania metadanych systemu plików DNF i rozpoznawania pakietów.
  • Sposób obsługi jąder i innych pakietów przeznaczonych wyłącznie do instalacji.
  • Jak włączyć nienadzorowane aktualizacje.
  • Najczęściej używane polecenia DNF.

Note

Azure Linux 4.0 jest teraz w wersji zapoznawczej i służy wyłącznie do celów oceny i testowania. Nie nadaje się do użytku produkcyjnego.

Konfiguracja repozytorium

DNF5 odczytuje definicje repozytorium z ./etc/yum.repos.d/ Nazwa katalogu została zachowana z systemu YUM dla zachowania zgodności; DNF5 odczytuje dane z tego katalogu.

Każdy plik .repo w tym katalogu jest zwykłym tekstowym plikiem konfiguracyjnym, który informuje DNF, gdzie znaleźć pakiety, czy należy je weryfikować za pomocą GPG oraz czy repozytorium jest domyślnie włączone. Głównym plikiem konfiguracji systemu plików DNF jest /etc/dnf/dnf.conf, który kontroluje globalne zachowanie, takie jak ustawienia pamięci podręcznej, limit instalacji i konfiguracja serwera proxy.

Azure Linux dostarcza dowiązania symboliczne zapewniające zgodność, dzięki czemu starsze polecenia (yum, dnf (DNF4), microdnf, tdnf) są wszystkie kierowane do DNF5:

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

Typowe podpolecenia działają za pośrednictwem symlinków. Przypadki brzegowe, które zależały od wewnętrznych mechanizmów DNF4 lub zachowania specyficznego dla microdnf, mogą już nie działać. Aby uzyskać szczegółowe informacje na temat zmian, zobacz następujące zasoby:

Jak DNF5 rozwiązuje problemy z pakietami

Po uruchomieniu polecenia systemu plików DNF5 program DNF5 wykonuje następujące kroki, aby określić pakiety do zainstalowania, uaktualnienia lub usunięcia:

  1. Ładuje każdy plik .repo w /etc/yum.repos.d/ i wybiera repozytoria oznaczone jako włączone.
  2. Odświeża metadane repozytorium, buforując je lokalnie w obszarze /var/cache/libdnf5. Buforowane metadane obejmują listę pakietów, informacje o wersji i zależnościach, sumy kontrolne i podpisy.
  3. Rozwiązuje żądanie instalacji, usunięcia lub aktualizacji na podstawie włączonych repozytoriów, wybiera wersje pakietów oraz weryfikuje integralność i podpisy przed wykonaniem transakcji.

Wyłączone repozytoria są ignorowane, chyba że jawnie włączysz je za pomocą --enablerepo=<repo-id> dla pojedynczego polecenia.

Pamięć podręczna /var/cache/libdnf5 istnieje po to, aby DNF nie musiał ponownie pobierać metadanych przy każdym uruchomieniu. Uruchom polecenie dnf clean all , aby go opróżnić (zobacz Często używane polecenia systemu plików DNF).

Pakiety tylko do instalacji i wiele zainstalowanych wersji

Niektóre pakiety, zwłaszcza jądro, są instalowane obok siebie, a nie uaktualniane. System DNF5 steruje tym za pomocą dwóch ustawień w systemie /etc/dnf/dnf.conf:

  • installonlypkgs: Lista nazw pakietów, które nigdy nie są uaktualniane na miejscu. Pakiety jądra są wpisem kanonicznym.
  • installonly_limit: Maksymalna liczba wersji pakietu tylko do instalacji, które mogą współistnieć w systemie. Wartość domyślna to 3.

Po zainstalowaniu nowej wersji i przekroczeniu limitu system plików DNF automatycznie usuwa najstarszą wersję.

W przypadku jądra zapewnia to następujące elementy:

  • Powrót: jeśli nie można uruchomić nowego jądra, program GRUB nadal może uruchomić poprzednie, znane jądro.
  • Walidacja: możesz zainstalować i przetestować nowe jądro bez usuwania uruchomionego jądra.
  • Współistnienie wariantu: w tym samym czasie można zainstalować różne kompilacje jądra (na przykład z różnymi zestawami funkcji).

Każda wersja jądra jest osobnym pakietem RPM, więc DNF śledzi ją i usuwa jak każdy inny pakiet.

Nienadzorowane aktualizacje przy użyciu dnf-automatic

dnf-automatic to usługa, która okresowo sprawdza, pobiera i opcjonalnie stosuje aktualizacje pakietów. Jest napędzany przez systemd timer, a nie działa jako długowieczne demona.

Zainstaluj produkt dnf-automatic

Zainstaluj dnf-automatic przy użyciu następującego polecenia:

sudo dnf install -y dnf-automatic

Włączanie czasomierza dnf-automatic

dnf-automatic Włącz czasomierz natychmiast i po ponownym uruchomieniu, używając następującego polecenia:

sudo systemctl enable --now dnf-automatic.timer
  • enable Konfiguruje czasomierz do uruchomienia podczas rozruchu.
  • --now uruchamia czasomierz w bieżącej sesji.

Sprawdzanie stanu czasomierza dnf-automatic

Sprawdź, czy czasomierz jest aktywny i sprawdź, kiedy był ostatnio uruchomiony, używając następującego polecenia:

systemctl status dnf-automatic.timer

Typowe dane wyjściowe wyglądają jak w poniższym przykładzie:

● 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) jest spodziewane: usługa bazowa jest uruchamiana jednorazowo tylko wtedy, gdy zadziała timer, po czym kończy działanie. Wiersz Trigger: pokazuje następny zaplanowany przebieg.

Wyświetl następne zaplanowane uruchomienie timera dnf-automatic

Wyświetl następne uruchomienie wraz z innymi timerami, używając następującego polecenia:

systemctl list-timers dnf-automatic.timer

Przykładowy wynik:

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.

Opcjonalna konfiguracja dnf-automatic

Zachowanie automatycznej aktualizacji można skonfigurować, dodając /etc/dnf/automatic.conf plik. Ten plik określa, czy aktualizacje są pobierane, automatycznie stosowane lub ograniczone do aktualizacji tylko zabezpieczeń. Aby uzyskać szczegółowe informacje o konfiguracji, zobacz dokumentację narzędzia dnf5-automatic

Note

Aktualizacje automatyczne są instalowane za pomocą systemu dnf-automatic, ale system nie jest automatycznie ponownie uruchamiany. Jeśli zostanie zaktualizowane jądro (lub inny pakiet wymagający ponownego uruchomienia), nowa wersja zacznie działać dopiero po następnym ponownym uruchomieniu. Po aktualizacji sprawdź, czy jest wymagany ponowny rozruch, i zaplanuj je odpowiednio.

Często używane polecenia systemu plików DNF

Poniższe polecenia obejmują większość codziennego zarządzania pakietami w systemie Azure Linux.

dnf clean all

dnf clean all Usuwa wszystkie pliki DNF buforowane w obszarze /var/cache/libdnf5. Używaj go do:

  • Odzyskaj sprawność po uszkodzonych lub nieaktualnych metadanych, które powodują błędy transakcji.
  • Zmniejsz obrazy kontenerów, usuwając pamięć podręczną pakietów po instalacji w tej samej warstwie RUN.
  • Odzyskiwanie miejsca na dysku.

Przykład kontenera:

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

dnf search dopasowyuje słowa kluczowe względem nazw pakietów i podsumowań. Przykład:

dnf search lsof

Przykładowy wynik:

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 znajduje pakiet, który jest właścicielem danego pliku, polecenia lub możliwości. Przykład:

dnf provides lsof

Przykładowy wynik:

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 instaluje co najmniej jeden pakiet wraz z ich zależnościami środowiska uruchomieniowego:

sudo dnf install lsof

Przykładowy wynik:

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 odinstalowuje pakiet wraz z wszelkimi zależnościami, które zostały pobrane wyłącznie dla niego:

sudo dnf remove -y lsof

Przykładowy wynik:

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 aktualizuje zainstalowane pakiety do ich najnowszych dostępnych wersji.

sudo dnf upgrade

Gdy wszystko jest aktualne, dane wyjściowe są krótkie. Przykład:

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

Wskazówka

Przekaż -y do install, remove lub upgrade w nieinteraktywnych kontekstach, takich jak skrypty, potoki CI i budowanie kontenerów. Każda operacja DNF, która modyfikuje system, wymaga uprawnień roota, więc uruchom ją za pomocą sudo lub jako root.