Modulul 4 · 4.1
Gestionarea pachetelor cu apt
Modulul 4: Software și actualizări · Timp de citire: 10 minute
Obiectivul lecției: După această lecție veți putea instala, actualiza și elimina software cu apt, veți vedea de unde provine un pachet și veți recunoaște care actualizări sunt actualizări de securitate.
Noțiuni cheie: pachet, sursă de pachete (repository), sources.list, fișier .sources (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, sursă de securitate, dnf
De ce un manager de pachete?
Pe Windows descărcați un program de instalare de pe un site web. Pe un server Linux nu faceți aproape niciodată acest lucru. Software-ul vine sub formă de pachet dintr-o sursă de pachete (repository): un server al distribuției cu mii de programe, toate compilate și testate pentru versiunea dumneavoastră de Debian sau Ubuntu. Programul care descarcă, instalează și actualizează aceste pachete se numește manager de pachete. Pe Debian și Ubuntu acesta este apt (cu dpkg dedesubt), iar pe AlmaLinux și Rocky Linux este dnf.
Acest lucru are trei mari avantaje:
- O singură comandă actualizează totul. Serverul web, serverul SSH, bibliotecile și kernelul provin din aceeași sursă. Nu trebuie să verificați pe site-ul fiecărui program dacă există o versiune nouă.
- Proveniența este verificată. Fiecare sursă de pachete este semnată cu o cheie. apt refuză pachetele a căror semnătură nu este corectă.
- Dependențele sunt gestionate automat. Dacă nginx are nevoie de o bibliotecă, apt o instalează automat și o elimină mai târziu, când nu mai este necesară.
Sursele de pachete: de unde provine software-ul?
Sursele pe care le folosește apt sunt definite în /etc/apt/. Multă vreme a fost un singur fișier, sources.list, cu linii precum:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 și versiunile ulterioare, imaginile cloud ale Debian și tot mai multe instalări noi folosesc formatul deb822, mai nou: fișiere separate cu extensia .sources în /etc/apt/sources.list.d/. Un fișier vechi sources.list poate fi convertit cu sudo apt modernize-sources (apt 3, Debian 13). De exemplu, pe Debian 13:
anna@web1:~$ cat /etc/apt/sources.list.d/debian.sources
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpgCitiți-l astfel: suite este versiunea (trixie este Debian 13; noble este Ubuntu 24.04), component este o parte a sursei (main la Debian; main, universe, restricted și multiverse la Ubuntu), iar Signed-By indică cheia cu care trebuie să fie semnată sursa. Acest ultim aspect este important: o cheie aparține unei singure surse, nu tuturor surselor deodată. Dacă adăugați ulterior o sursă a unui producător (Docker, Caddy, PostgreSQL), aceasta primește propriul fișier de cheie și propria linie Signed-By (lecția 9.2).
Sursa care are -security în nume este sursa de securitate. De acolo provin actualizările de securitate, de obicei chiar în ziua în care o vulnerabilitate devine cunoscută. Pe Ubuntu această suită se numește noble-security (sau numele versiunii dumneavoastră).
Dacă folosiți încă vechiul sources.list, totul funcționează în continuare. Doar nu amestecați aceeași sursă în ambele formate, deoarece apt va semnala linii duplicate.
update, upgrade și full-upgrade
Diferența dintre aceste trei noțiuni este prima capcană pentru începători.
| Comandă | Ce face |
|---|---|
apt update | Descarcă lista cu pachetele și versiunile disponibile în surse. Nu instalează nimic. |
apt upgrade | Actualizează pachetele instalate la cea mai nouă versiune din acea listă. Nu elimină niciodată nimic. O actualizare care ar necesita eliminarea unui alt pachet este omisă. |
apt full-upgrade | La fel, dar poate și să elimine pachete sau să instaleze altele noi, dacă este necesar. Este necesară la un upgrade de versiune (lecția 4.3) și uneori la un kernel nou. |
Așadar, întotdeauna mai întâi update, apoi upgrade:
anna@web1:~$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Get:2 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
...
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
anna@web1:~$ apt list --upgradable
Listing... Done
libssl3t64/trixie-security 3.5.1-1+deb13u1 amd64 [upgradable from: 3.5.1-1]
openssh-server/trixie-security 1:10.0p1-7+deb13u1 amd64 [upgradable from: 1:10.0p1-7]
tzdata/trixie-updates 2026b-0+deb13u1 all [upgradable from: 2026a-0+deb13u1](Numerele de versiune de mai sus sunt un exemplu.) După nume este indicată suita din care provine noua versiune. Tot ce are -security este o actualizare de securitate: pe acestea le doriți instalate cât mai repede. -updates sunt alte actualizări stabile, de exemplu date noi despre fusurile orare.
Apoi:
anna@web1:~$ sudo apt upgradeapt vă arată ce se va schimba și vă cere confirmarea. Citiți această listă. Dacă apare mesajul "The following packages will be REMOVED" (pachetele următoare vor fi eliminate), se întâmplă ceva neobișnuit și este bine să aflați mai întâi de ce.
Instalare, eliminare și curățare
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programul este eliminat, configurația din /etc rămâne
anna@web1:~$ sudo apt purge nginx # programul și configurația sunt eliminate
anna@web1:~$ sudo apt autoremove # curățați ce nu mai este necesarDiferența dintre remove și purge este utilă: dacă doriți să eliminați ceva temporar și să îl reinstalați mai târziu cu aceleași setări, folosiți remove. Dacă doriți să începeți cu adevărat de la zero, folosiți purge.
Căutare și informații suplimentare:
anna@web1:~$ apt search fail2ban
anna@web1:~$ apt show fail2ban
anna@web1:~$ apt-cache policy openssh-server
openssh-server:
Installed: 1:10.0p1-7
Candidate: 1:10.0p1-7+deb13u1
Version table:
1:10.0p1-7+deb13u1 500
500 http://deb.debian.org/debian-security trixie-security/main amd64 Packages
*** 1:10.0p1-7 500
500 http://deb.debian.org/debian trixie/main amd64 Packagesapt-cache policy este comanda pe care o folosiți când doriți să aflați de unde provine un pachet și ce versiune va alege apt. *** apare la versiunea instalată, iar Candidate este ceea ce ar instala un upgrade.
Versiunile Debian și versiunea unui program
O plângere frecventă: "Debian conține o versiune veche de nginx." Este adevărat și este intenționat. Debian și Ubuntu îngheață versiunile la lansarea unei ediții și apoi adaugă doar remedieri de securitate și reparații grave, fără funcționalități noi. De aceea, un pachet cu un număr de versiune "vechi" poate avea totuși toate remedierile de securitate recente: acestea au fost portate înapoi (backport) în versiunea veche. Recunoașteți acest lucru după sufix, de exemplu +deb13u1 sau ubuntu0.1.
Prin urmare, nu comparați niciodată doar numărul de versiune cu site-ul producătorului pentru a aprecia dacă sunteți vulnerabil. Consultați buletinele de securitate ale distribuției dumneavoastră: Debian Security Tracker (security-tracker.debian.org) și Ubuntu Security Notices (ubuntu.com/security/notices) indică pentru fiecare vulnerabilitate dacă versiunea dumneavoastră a fost reparată.
Câteva reguli pentru un server liniștit
- Instalați doar ce vă trebuie. Fiecare pachet este cod care trebuie actualizat și uneori un serviciu care ascultă în rețea (lecția 5.1).
- Preferați distribuția în locul unui site web. Un program pe care îl compilați singur sau îl descărcați ca fișier separat nu este actualizat de
apt upgrade. În acest caz trebuie să urmăriți dumneavoastră buletinele de securitate. - O sursă suplimentară doar de la producătorul însuși, cu propria cheie și
Signed-By. Nu adăugați niciodată o cheie "pentru tot" și niciodată o sursă de pe un site necunoscut (lecția 4.3). - Citiți ce vă întreabă apt. La un upgrade, apt vă poate întreba dacă doriți să înlocuiți un fișier de configurare modificat cu noua versiune a producătorului. Dacă nu știți ce ați modificat în el, alegeți "keep the local version" (păstrați versiunea locală, opțiunea implicită) și verificați ulterior diferența cu
diff: noua versiune se află alături, ca.dpkg-dist.
Pe AlmaLinux și Rocky Linux
Acolo managerul de pachete se numește dnf, iar pachetele sunt .rpm. Comenzile seamănă cu cele ale apt: dnf check-update (lista), dnf upgrade (actualizare, update și upgrade într-una), dnf install, dnf remove, dnf info. Sursele se află în /etc/yum.repos.d/*.repo. Mult software suplimentar (de exemplu fail2ban) provine din sursa separată EPEL, pe care o activați mai întâi cu dnf install epel-release. Puteți afișa doar actualizările de securitate cu dnf updateinfo list --security.
În practică: ecranul VPS
La WebOké, ca la majoritatea celorlalți furnizori, instalarea VPS-ului dumneavoastră configurează deja corect sursele implicite ale distribuției. De obicei nu trebuie să modificați nimic acolo. Actualizați serverul imediat după prima autentificare cu apt update și apt upgrade (lecția 1.2) și creați un snapshot în panoul furnizorului dumneavoastră înainte de modificări importante.
Rezumat
- Pe Debian și Ubuntu, software-ul provine din surse de pachete semnate; apt descarcă, instalează, actualizează și curăță.
apt updatedescarcă doar lista;apt upgradeactualizează fără să elimine;apt full-upgradepoate și să elimine.- Actualizările de securitate provin din suita care are
-securityîn nume;apt list --upgradableșiapt-cache policyarată de unde provine o versiune. - Un număr de versiune vechi cu
+deb13u1sauubuntu0.xpoate avea toate remedierile (backport): consultați buletinele de securitate ale distribuției dumneavoastră. - O sursă suplimentară doar de la producătorul însuși, cu propria cheie în
Signed-By.
Test (quiz)
Exercițiu
Exercițiul Z4.1: Care actualizări sunt actualizări de securitate? Fișierul exemplu apt-upgradable.txt conține rezultatul comenzilor apt list --upgradable și apt-cache policy de pe un server Debian 13. Răspundeți: ce pachete provin din sursa de securitate, ce pachet provine din sursa unui producător în loc de Debian, ce versiune de openssh-server este instalată acum și ce pachet este o actualizare stabilă obișnuită, fără motiv de securitate? Programul compară răspunsurile cu cheia fixă. Dacă aveți deja un server propriu, rulați aceleași comenzi și vedeți ce obțineți.
Lecturi suplimentare
- Securizarea VPS-ului: primele cinci minute
- Primii pași cu VPS-ul
- Manualul administratorului Debian, capitolul 6 (apt, în limba engleză): https://debian-handbook.info/browse/stable/apt.html
- Pagina de manual
sources.list(5)(formatul deb822): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
