15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
09.10.2024

apt vs yum: Managementul Pachetelor Linux Explicat pentru Administratorii de Sistem

Gestionarea pachetelor Linux este mecanismul prin care software-ul este instalat, actualizat, configurat și eliminat pe un sistem Linux. apt (Advanced Package Tool) gestionează pachetele `.deb` pe distribuțiile bazate pe Debian, cum ar fi Ubuntu și Linux Mint, în timp ce yum (Yellowdog Updater Modified) administrează pachetele `.rpm` pe sistemele bazate pe Red Hat, inclusiv CentOS și RHEL. Ambele instrumente abstractizează complexitatea rezolvării dependențelor, interacțiunii cu depozitele și verificării integrității pachetelor — dar sunt distincte din punct de vedere arhitectural și nu sunt interschimbabile.

Înțelegerea instrumentului care guvernează sistemul dumneavoastră nu este o cunoștință opțională. Aceasta afectează direct modul în care aprovizionați serverele, automatizați implementările, scrieți scripturi de gestionare a configurației (Ansible, Chef, Puppet) și mențineți ciclurile de aplicare a patch-urilor de securitate în mediile de producție.

Ce Este un Manager de Pachete Linux

Un manager de pachete este o colecție de instrumente software care automatizează ciclul de viață complet al software-ului pe un sistem Linux: preluarea pachetelor din depozite la distanță, verificarea semnăturilor criptografice, rezolvarea și instalarea lanțurilor de dependențe, executarea scripturilor pre/post-instalare și înregistrarea instalării într-o bază de date locală de pachete.

Baza de date a pachetelor este critică și adesea neglijată. Pe sistemele bazate pe Debian, aceasta se află la `/var/lib/dpkg/`. Pe sistemele bazate pe RPM, rezidă în `/var/lib/rpm/`. Ambele baze de date mențin înregistrarea autoritativă a ceea ce este instalat, la ce versiune și cu ce proprietate a fișierelor — făcându-le coloana vertebrală a operațiunilor de auditare a sistemului și de revenire la starea anterioară.

Managerii de pachete interacționează cu depozitele — servere la distanță care găzduiesc colecții curate de pachete compilate și semnate. Metadatele depozitului (liste de pachete, sume de control, chei GPG) sunt sincronizate local înainte de orice instalare, motiv pentru care `apt update` sau `yum check-update` trebuie să preceadă comenzile de instalare în scripturile automatizate.

apt: Advanced Package Tool pentru Sistemele Bazate pe Debian

apt este interfața de linie de comandă de nivel înalt pentru gestionarea pachetelor pe Debian, Ubuntu, Linux Mint, Pop!_OS și toate derivatele acestora. Funcționează pe deasupra instrumentului de nivel inferior `dpkg`, care gestionează instalarea efectivă a pachetelor `.deb`. Gândiți-vă la `dpkg` ca la motor și la `apt` ca la șoferul inteligent care știe de unde să procure combustibil și în ce ordine să îl consume.

Lanțul de Instrumente apt în Profunzime

Ecosistemul apt include mai multe binare care servesc scopuri distincte:

  • `apt` — CLI-ul interactiv modern, recomandat (introdus în Ubuntu 14.04 / Debian 8)
  • `apt-get` — backend-ul mai vechi, scriptabil; preferat în scripturile shell datorită formatului stabil al ieșirii
  • `apt-cache` — interogează memoria cache locală a pachetelor pentru metadate, descrieri și grafuri de dependențe
  • `dpkg` — instalatorul de pachete de nivel scăzut; utilizat direct la instalarea unui fișier `.deb` local cu `dpkg -i package.deb`
  • `apt-mark` — marchează pachetele ca reținute, instalate automat sau instalate manual

Comenzile de Bază apt cu Context Tehnic

Actualizarea indexului local de pachete:

“`bash

sudo apt update

“`

Aceasta preia metadatele actualizate din toate depozitele configurate în `/etc/apt/sources.list` și `/etc/apt/sources.list.d/`. Nu instalează sau actualizează nimic. Rularea acesteia înainte de orice operațiune de instalare este obligatorie — omiterea ei înseamnă că puteți rezolva la versiuni de pachete învechite sau puteți rata patch-uri de securitate.

Actualizarea pachetelor instalate:

“`bash

sudo apt upgrade

“`

Actualizează toate pachetele pentru care există o versiune mai nouă, dar nu va elimina niciun pachet instalat în prezent și nu va instala un pachet nou pentru a satisface o dependență. Pentru o actualizare mai agresivă care gestionează modificările de dependențe:

“`bash

sudo apt full-upgrade

“`

`full-upgrade` (fostul `dist-upgrade`) va instala noi dependențe și va elimina pachetele conflictuale după cum este necesar. Utilizați-l cu precauție pe sistemele de producție.

Instalarea unui pachet:

“`bash

sudo apt install package_name

“`

Pentru a instala mai multe pachete într-o singură tranzacție:

“`bash

sudo apt install nginx curl git

“`

Combinarea instalărilor într-o singură comandă este mai eficientă deoarece apt rezolvă graficul complet al dependențelor o singură dată, în loc să o facă în mod repetat.

Eliminarea unui pachet (păstrarea fișierelor de configurare):

“`bash

sudo apt remove package_name

“`

Ștergerea completă a unui pachet (eliminarea binarelor și a fișierelor de configurare):

“`bash

sudo apt purge package_name

“`

Preferați întotdeauna `purge` față de `remove` atunci când dezafectați un serviciu. Fișierele de configurare rămase de la `remove` pot cauza comportamente neașteptate dacă pachetul este reinstalat ulterior.

Eliminarea dependențelor orfane:

“`bash

sudo apt autoremove

“`

Aceasta este adesea neglijată și duce la o bloatare a dependențelor în timp. Incorporați-o în fluxul de lucru de întreținere regulată.

Căutarea unui pachet:

“`bash

apt search package_name

“`

Inspectarea detaliilor pachetului înainte de instalare:

“`bash

apt show package_name

“`

Aceasta dezvăluie versiunea pachetului, dimensiunea instalată, dependențele și întreținătorul — util înainte de a prelua un pachet necunoscut.

Reținerea unui pachet la versiunea sa curentă (critică pentru stabilitatea în producție):

“`bash

sudo apt-mark hold package_name

“`

Aceasta împiedică `apt upgrade` să atingă pachetul. Esențial atunci când rulați o versiune specifică de kernel sau o versiune fixată a unei aplicații.

Caz de Utilizare apt în Lumea Reală: Aprovizionarea unui Server Web pe Ubuntu

“`bash

sudo apt update

sudo apt install -y nginx certbot python3-certbot-nginx

sudo systemctl enable nginx

sudo systemctl start nginx

“`

Indicatorul `-y` suprimă promptul de confirmare, care este necesar pentru scripturile de aprovizionare non-interactive. Asociați-l întotdeauna cu `apt update` în același bloc de script pentru a garanta că instalați din metadatele curente ale depozitului.

yum: Yellowdog Updater Modified pentru Sistemele Bazate pe RPM

yum este managerul de pachete pentru Red Hat Enterprise Linux (RHEL), CentOS 7 și versiunile mai vechi de Fedora. Gestionează pachetele `.rpm` și se află deasupra bazei de date RPM. La fel ca apt față de dpkg, yum oferă rezolvarea dependențelor și gestionarea depozitelor deasupra comenzii brute `rpm`.

Notă arhitecturală critică: Pe CentOS 8+, RHEL 8+ și toate versiunile moderne de Fedora, yum a fost înlocuit de dnf (Dandified YUM). Pe aceste sisteme, comanda `yum` este de obicei un link simbolic sau un alias pentru `dnf`. Dacă gestionați orice sistem care rulează RHEL/CentOS 8 sau o versiune ulterioară, ar trebui să scrieți comenzi `dnf`. Sintaxa comenzilor este în mare parte compatibilă, dar dnf oferă o rezolvare a dependențelor semnificativ mai bună, un API mai curat și suport pentru depozite modulare.

Comenzile de Bază yum cu Context Tehnic

Verificarea actualizărilor disponibile fără a le aplica:

“`bash

sudo yum check-update

“`

Aceasta este deosebit de utilă în scripturile de monitorizare automatizată pentru a detecta dacă un sistem este în urmă cu patch-urile fără a declanșa o actualizare.

Aplicarea tuturor actualizărilor disponibile:

“`bash

sudo yum update

“`

Spre deosebire de `apt upgrade`, `yum update` va instala și pachete noi de dependențe după cum este necesar. Nu există un echivalent separat `full-upgrade` — yum gestionează acest lucru implicit.

Instalarea unui pachet:

“`bash

sudo yum install package_name

“`

Eliminarea unui pachet:

“`bash

sudo yum remove package_name

“`

Notă: operațiunea de eliminare a yum poate uneori să se propage și să elimine pachete dependente. Revizuiți întotdeauna rezumatul tranzacției înainte de a confirma.

Căutarea unui pachet:

“`bash

yum search package_name

“`

Inspectarea informațiilor despre pachet:

“`bash

yum info package_name

“`

Listarea pachetelor instalate:

“`bash

yum list installed

“`

Curățarea memoriei cache locale:

“`bash

sudo yum clean all

“`

Șterge datele și metadatele pachetelor din cache. Rulați aceasta atunci când suspectați că datele învechite ale depozitului cauzează eșecuri de rezolvare.

Reținerea unui pachet la versiunea sa curentă:

“`bash

sudo yum versionlock add package_name

“`

Necesită plugin-ul `yum-plugin-versionlock`. Echivalentul lui `apt-mark hold`, acesta este esențial pentru menținerea unor medii de producție stabile în care o versiune specifică a unui pachet nu trebuie atinsă de actualizările automate.

Caz de Utilizare yum în Lumea Reală: Implementarea Apache pe CentOS 7

“`bash

sudo yum install -y httpd

sudo systemctl enable httpd

sudo systemctl start httpd

sudo firewall-cmd –permanent –add-service=http

sudo firewall-cmd –reload

“`

O greșeală frecventă este instalarea Apache și uitarea de a deschide firewall-ul. Pe sistemele CentOS/RHEL, `firewalld` este activ implicit și va bloca silențios traficul HTTP chiar dacă serviciul rulează.

apt vs yum: Comparație Directă

Caracteristicăapt (Debian/Ubuntu)yum / dnf (RHEL/CentOS/Fedora)
Format pachet`.deb``.rpm`
Instrument de bază`dpkg``rpm`
Distribuții principaleDebian, Ubuntu, Mint, Pop!_OSRHEL, CentOS, Fedora, AlmaLinux, Rocky Linux
Succesor / CLI modern`apt` (a înlocuit `apt-get` pentru utilizare interactivă)`dnf` (a înlocuit `yum` pe RHEL 8+)
Rezolvarea dependențelorAutomată, gestionează conflicteleAutomată; dnf este mai robust decât yum
Configurarea depozitului`/etc/apt/sources.list`, `/etc/apt/sources.list.d/``/etc/yum.repos.d/*.repo`
Mecanism de reținere a pachetelor`apt-mark hold``yum versionlock` (plugin necesar)
Instalare pachet local`dpkg -i file.deb``rpm -i file.rpm` sau `yum localinstall`
Gestionarea cache-ului`apt clean`, `apt autoclean``yum clean all`
Eliminarea orfanilor`apt autoremove``yum autoremove` (dnf gestionează mai bine acest lucru)
Istoricul tranzacțiilorLimitatIstoric complet al tranzacțiilor cu revenire prin `yum history`
Fluxuri de moduleNu este suportat nativSuportat în dnf (Application Streams)
Verificarea semnăturii GPGDaDa
Indicator prietenos cu scripturile`-y` (non-interactiv)`-y` (non-interactiv)

dnf: Succesorul Modern al yum

Dacă gestionați orice sistem RHEL 8+, CentOS Stream, AlmaLinux, Rocky Linux sau Fedora, dnf este managerul dumneavoastră de pachete. Tranziția de la yum la dnf nu este cosmetică — dnf rezolvă o serie de probleme arhitecturale de lungă durată din yum:

  • Rezolvarea dependențelor: dnf utilizează biblioteca `libsolv`, care este semnificativ mai rapidă și mai precisă decât rezolvatorul yum
  • Stabilitatea API: dnf expune un API Python stabil pentru scripting și automatizare
  • Fluxuri de module: dnf suportă Application Streams, permițând mai multor versiuni ale aceluiași software (de ex., PHP 7.4 și PHP 8.1) să coexiste în depozite
  • Revenirea tranzacțiilor: `dnf history undo <id>` vă permite să reveniți la o tranzacție specifică — o capacitate fără echivalent direct în apt

Comenzi cheie dnf care diferă de yum:

“`bash

Install a module stream (e.g., PHP 8.1)

sudo dnf module enable php:8.1

sudo dnf install php

Roll back the last transaction

sudo dnf history undo last

Check which package provides a specific file

sudo dnf provides /usr/bin/python3

“`

Gestionarea Depozitelor: O Abilitate Operațională Critică

Atât apt, cât și yum/dnf sunt utile doar în măsura în care depozitele pe care sunt configurate să le utilizeze sunt de încredere. Depozitele configurate greșit sau nedemne de încredere reprezintă un risc semnificativ de securitate.

Pe Debian/Ubuntu, adăugați în siguranță un depozit terț:

“`bash

Import the GPG key

curl -fsSL https://example.com/gpg.key | sudo gpg –dearmor -o /usr/share/keyrings/example-archive-keyring.gpg

Add the repository with key reference

echo "deb [signed-by=/usr/share/keyrings/example-archive-keyring.gpg] https://repo.example.com/apt stable main" | sudo tee /etc/apt/sources.list.d/example.list

sudo apt update

“`

Pe RHEL/CentOS, adăugați un depozit:

“`bash

sudo yum-config-manager –add-repo https://repo.example.com/centos/example.repo

Or manually create /etc/yum.repos.d/example.repo

“`

Principiu de securitate: Nu adăugați niciodată un depozit fără a verifica independent cheia sa GPG. Un depozit compromis poate împinge pachete malițioase care vor fi instalate cu privilegii root.

Alegerea Managerului de Pachete Potrivit pentru Mediul Dumneavoastră de Server

Managerul de pachete pe care îl utilizați este dictat de distribuția dumneavoastră Linux — nu alegeți apt sau yum în mod independent. Ceea ce alegeți este distribuția, iar această decizie are consecințe în aval pentru disponibilitatea pachetelor, contractele de suport enterprise, cadența patch-urilor de securitate și compatibilitatea instrumentelor.

  • Ubuntu LTS (apt): Cea mai bună alegere pentru sarcinile de lucru generale de VPS Hosting, servere web și medii de dezvoltare. Versiunile cu suport pe termen lung primesc 5 ani de actualizări de securitate, extensibile la 10 cu Ubuntu Pro.
  • RHEL / AlmaLinux / Rocky Linux (dnf): Standardul pentru mediile de producție enterprise, în special atunci când rulează pe Servere Dedicate care necesită stive software certificate, cadre de conformitate (PCI-DSS, HIPAA) sau implementări de aplicații suportate de ISV.
  • Debian Stable (apt): Versiuni de pachete extrem de conservative, făcându-l ideal pentru serverele unde stabilitatea este prioritizată față de software-ul de ultimă generație. Utilizat frecvent pentru servere de baze de date și de mail cu funcționare îndelungată.
  • CentOS Stream / Fedora (dnf): Potrivit pentru mediile de dezvoltare și staging unde doriți să urmăriți modificările upstream RHEL înainte ca acestea să ajungă în versiunile stabile.

La implementarea unui panou de control precum cPanel, managerul de pachete de bază contează semnificativ. cPanel suportă oficial AlmaLinux, Rocky Linux și CloudLinux — toate bazate pe dnf. Dacă utilizați un VPS cu cPanel, veți lucra într-un mediu dnf pe implementările moderne.

Pentru mediile în care aveți nevoie de o interfață grafică sau bazată pe web pentru a gestiona pachetele și configurația serverului fără a recurge la linia de comandă, explorați Panouri de Control VPS care abstractizează gestionarea pachetelor într-o interfață UI, utilizând în continuare apt sau dnf în fundal.

Întărirea Securității prin Gestionarea Pachetelor

Managerii de pachete reprezintă o suprafață de atac primară pentru atacurile asupra lanțului de aprovizionare. Aceste practici sunt non-negociabile pe orice server cu acces la internet:

  • Activați actualizările automate de securitate — Pe Ubuntu: pachetul `unattended-upgrades`. Pe RHEL/CentOS: `dnf-automatic` cu `apply_updates = yes` în `/etc/dnf/automatic.conf`.
  • Verificați semnăturile GPG — Nu dezactivați niciodată verificarea GPG (`–nogpgcheck` în yum/dnf sau `–allow-unauthenticated` în apt) în afara mediilor de laborator izolate.
  • Auditați regulat pachetele instalate — Utilizați `dpkg -l` sau `rpm -qa` pentru a genera un manifest complet al pachetelor. Comparați-l cu o linie de bază cunoscută ca bună.
  • Eliminați pachetele inutile — Fiecare pachet instalat reprezintă o suprafață de atac. Rulați `apt autoremove` sau `dnf autoremove` după implementări majore.
  • Fixați pachetele critice — Utilizați `apt-mark hold` sau `dnf versionlock` pentru a preveni actualizările neintenționate ale pachetelor precum kernel-ul, OpenSSL sau motoarele de baze de date pe sistemele de producție.

Dacă rulați un server de mail sau găzduiți infrastructură de email, menținerea la zi a pachetelor precum Postfix, Dovecot și dependențele lor TLS este deosebit de critică. Asociați gestionarea riguroasă a pachetelor cu Certificate SSL configurate corespunzător pentru a menține securitatea transportului criptat. În mod similar, mediile de găzduire web gestionate prin platforme de Găzduire Web Shared beneficiază de faptul că furnizorul de găzduire menține securitatea pachetelor de bază, dar înțelegerea stratului de pachete rămâne valoroasă pentru depanare și configurare personalizată.

Matrice de Decizie Practică și Concluzii Cheie

Înainte de a rula orice comandă de gestionare a pachetelor pe un sistem de producție, parcurgeți această listă de verificare:

Listă de verificare pre-operațiune:

  • Confirmați ce distribuție și versiune rulați: `cat /etc/os-release`
  • Confirmați managerul de pachete corect: `which apt` sau `which dnf` sau `which yum`
  • Pe sistemele apt: rulați întotdeauna `sudo apt update` înainte de `apt install` sau `apt upgrade`
  • Pe sistemele yum/dnf: `sudo yum check-update` sau `sudo dnf check-update` înainte de actualizări
  • Revizuiți rezumatul tranzacției înainte de a confirma orice operațiune de instalare sau eliminare
  • Pentru serverele de producție: testați mai întâi actualizările de pachete într-un mediu de staging
  • După actualizări majore: verificați starea serviciului cu `systemctl status <service>`
  • După eliminarea pachetelor: rulați `apt autoremove` sau `dnf autoremove` pentru a curăța orfanii

Decizii arhitecturale:

  • Utilizați `apt full-upgrade` în loc de `apt upgrade` numai când înțelegeți și acceptați că pachetele pot fi eliminate
  • Utilizați `dnf` în loc de `yum` pe orice sistem care rulează RHEL 8 / CentOS 8 sau o versiune ulterioară
  • Utilizați `apt-get` (nu `apt`) în scripturile shell și pipeline-urile CI/CD pentru o ieșire stabilă și analizabilă
  • Utilizați `yum versionlock` sau `apt-mark hold` înainte ca orice pipeline de actualizare automatizată să atingă un server de producție
  • Nu adăugați niciodată depozite terțe fără a importa și verifica cheile lor GPG

Întrebări Frecvente

Care este diferența dintre apt și apt-get?

`apt` este comanda modernă, orientată către utilizator, introdusă pentru a consolida `apt-get` și `apt-cache` într-un singur instrument cu o ieșire mai curată și o bară de progres. `apt-get` rămâne disponibil și este preferat în scripturi deoarece formatul său de ieșire este garantat stabil între versiuni. Pentru utilizarea interactivă în terminal, `apt` este standardul actual.

Pot folosi apt pe un server CentOS sau RHEL?

Nu. apt este exclusiv pentru sistemele bazate pe Debian și gestionează pachetele `.deb`. CentOS și RHEL utilizează formatul de pachet RPM, gestionat de yum sau dnf. Formatele de pachete și bazele de date sunt incompatibile din punct de vedere arhitectural — nu există un strat de conversie.

Care este echivalentul yum pentru apt autoremove?

`sudo yum autoremove` sau `sudo dnf autoremove` elimină pachetele care au fost instalate ca dependențe, dar care nu mai sunt necesare pentru niciun pachet instalat explicit. Implementarea dnf este mai fiabilă decât versiunea yum moștenită.

Cum pot împiedica actualizarea unui pachet specific de către apt sau yum?

Pe sistemele bazate pe apt: `sudo apt-mark hold package_name`. Pe sistemele yum/dnf: instalați plugin-ul `yum-plugin-versionlock` și rulați `sudo yum versionlock add package_name`, sau pe dnf: `sudo dnf versionlock add package_name`. Ambele mecanisme supraviețuiesc comenzilor `upgrade` și `update` până când sunt eliberate explicit.

Mai este yum relevant în 2024?

Pentru sistemele CentOS 7 și RHEL 7 încă în producție, da — yum rămâne managerul de pachete. Cu toate acestea, CentOS 7 a atins sfârșitul ciclului de viață în iunie 2024. Orice sistem care rulează încă CentOS 7 ar trebui migrat la AlmaLinux 8/9 sau Rocky Linux 8/9, ambele utilizând dnf. Scrierea de noi scripturi de automatizare care vizează exclusiv yum nu mai este recomandabilă.

15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți