Tarkibga o'tish

RPM, YUM va DNF: RHEL oilasida paketlarni boshqarish

Paketlarni boshqarish asoslari, apt va repozitoriylar hamda dpkg va bog'liqliklar maqolalari Debian/Ubuntu ekotizimiga qaratilgan edi. Lekin RPM asosidagi distributivlar — RHEL, CentOS Stream, Rocky Linux, AlmaLinux va Fedora — production’da, ayniqsa korporativ muhitlarda xuddi shunchalik keng tarqalgan. Bu maqola shu ekotizimning asosiy vositalarini allaqachon biladigan Debian tomonidagi tushunchalarga to'g'ridan-to'g'ri moslab ko'rib chiqadi.

Ikki qatlamli model o'sha, ekotizim boshqa

Debian tomonida dpkg past darajali vosita, apt esa uning ustida repozitoriylar va bog'liqliklarni boshqaradigan yuqori darajali qatlam. RPM oilasi aynan shu tuzilishni takrorlaydi:

Qatlam Debian/Ubuntu RHEL oilasi Vazifasi
Past darajali dpkg rpm Paket faylini o'rnatadi/olib tashlaydi, bog'liqliklarni tekshiradi, lekin hal qilmaydi
Yuqori darajali apt dnf (eski tizimlarda yum) Repozitoriylardan qidiradi, bog'liqliklarni avtomatik hal qiladi, yangilanishlarni boshqaradi

dnf — yum ning zamonaviy vorisi va RHEL 8+, Fedora hamda Rocky/AlmaLinux’da sukut bo'yicha ishlatiladi. Eski RHEL 7/CentOS 7 tizimlari hali ham yum dan foydalanadi, lekin uning buyruq sintaksisi deyarli bir xil va ko'p joriy tizimlarda yum ning o'zi shunchaki dnf ga yo'naltirilgan alias.

rpm: past darajali vosita

O'rnatilgan paketni tekshirish

rpm -q httpd
httpd-2.4.57-5.el9.x86_64

-q — query (so'rov). Agar paket o'rnatilmagan bo'lsa, rpm "package httpd is not installed" deb xabar beradi.

Paket haqida batafsil ma’lumot

rpm -qi httpd

dpkg -s <package> ning ekvivalenti — versiya, o'rnatilgan sana, hajm va tavsifni ko'rsatadi.

Paket qaysi fayllarni o'rnatgan

rpm -ql httpd

dpkg -L <package> ning ekvivalenti.

Fayl qaysi paketga tegishli — teskari yo'nalish

rpm -qf /usr/sbin/httpd
httpd-2.4.57-5.el9.x86_64

rpm -qf diskda allaqachon turgan fayl qaysi paketdan kelganini aytadi — bu Debian tomonidagi dpkg -S ning to'g'ridan-to'g'ri ekvivalenti. Hali o'rnatilmagan fayl uchun dnf provides xuddi shu savolga butun repozitoriy bo'yicha javob beradi. Yetishmayotgan buyruq yoki kutubxonani olish uchun qaysi paketni o'rnatish kerakligini aynan shu yo'l bilan aniqlaysiz:

dnf provides */httpd

.rpm faylni to'g'ridan-to'g'ri o'rnatish

sudo rpm -ivh package-1.0-1.el9.x86_64.rpm
  • -i — o'rnatish (install);
  • -v — batafsil chiqish (verbose);
  • -h — jarayon belgilarini (#) chiqarish.

Bu dpkg -i package.deb ning ekvivalenti — va xuddi dpkg kabi bog'liqliklar avtomatik hal qilinmaydi:

Warning

rpm -ivh bog'liq paketlarni avtomatik topib o'rnatmaydi — agar ulardan biri yetishmasa, xuddi dpkg -i kabi xato beradi va to'xtaydi. Amalda .rpm faylni to'g'ridan-to'g'ri o'rnatish kamdan-kam kerak bo'ladi; dnf install deyarli har doim repozitoriydan bog'liqliklarni avtomatik hal qilgan holda o'rnatadi.

dnf: bog'liqliklarni hal qiladigan yuqori darajali vosita

Paketni qidirish

dnf search nginx

apt search ning ekvivalenti.

O'rnatish

sudo dnf install nginx

apt install ning ekvivalenti. dnf kerakli barcha bog'liq paketlarni repozitoriydan avtomatik topadi, ro'yxatni ko'rsatadi va tasdiqlangandan keyin o'rnatadi.

Tizimni yangilash

sudo dnf check-update
sudo dnf update

Bu apt update && apt upgrade juftligining ekvivalenti. Farqi shundaki, dnf da repozitoriy metama’lumotlarini yangilash va paketlarni yangilash ko'pincha bitta dnf update buyrug'ida birlashtiriladi (check-update esa hech narsani o'zgartirmasdan faqat mavjud yangilanishlarni ko'rsatadi).

Olib tashlash

sudo dnf remove nginx

apt remove ning ekvivalenti.

O'rnatilgan paketlarni ro'yxatlash

dnf list installed

dpkg -l ning ekvivalenti.

Paket bog'liqliklarini ko'rish

dnf repoquery --requires nginx

apt-cache depends ning ekvivalenti.

Repozitoriylarni sozlash

RPM oilasida repozitoriylar /etc/yum.repos.d/ ostidagi .repo fayllarida tasvirlanadi — bu Debian’dagi /etc/apt/sources.list.d/ ning ekvivalenti:

[example-repo]
name=Example Repository
baseurl=https://repo.example.com/el9/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.example.com/RPM-GPG-KEY-example
  • baseurl — paket fayllari joylashgan manzil;
  • gpgcheck=1 — imzo tekshiruvini majburiy qiladi;
  • gpgkey — tekshiruv uchun ishlatiladigan ochiq kalit manzili.

Danger

Repozitoriyni gpgcheck=0 bilan sozlash paket imzosini tekshirmasdan o'rnatishga ruxsat beradi — bu APT tomonida imzosiz .deb faylni o'rnatishga o'xshaydi va supply-chain hujumiga yo'l ochadi. Agar manba muayyan, vaqtinchalik sabab bilan haqiqatan ishonchli bo'lmasa, gpgcheck doim yoqilgan holda qolishi kerak.

Yangi repozitoriy qo'shgandan keyin metama’lumotlar keshini yangilang:

sudo dnf makecache

apt update ning ekvivalenti.

Tranzaksiyalar tarixi va rollback: dnf history

dnf da bor, apt da esa ichiga o'rnatilmagan haqiqiy imkoniyatlardan biri — har bir tranzaksiyaning to'liq, so'rov qilish mumkin bo'lgan qaydi va uni bekor qilish imkoniyati. Har bir o'rnatish, yangilash yoki olib tashlash raqamlangan tranzaksiya sifatida log'ga yoziladi:

sudo dnf history
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    14 | update                   | 2026-07-28 02:11 | Update         |     37
    13 | install nginx            | 2026-07-25 09:40 | Install        |      4

Muayyan tranzaksiya aynan nimani o'zgartirganini ko'zdan kechiring, so'ng yangilanish regressiyaga sabab bo'lgan bo'lsa, uni ortga qaytaring:

sudo dnf history info 14
sudo dnf history undo 14

undo shu tranzaksiya o'zgartirgan paketlarni qaytaradi — u yangilagan narsalarni downgrade qiladi va o'rnatgan narsalarini olib tashlaydi. Bu Debian tomonida Production’da yangilanishlar maqolasida snapshot’lar va apt-mark hold orqali hal qilinadigan rollback muammosiga RHEL oilasining javobi. U asosiy versiya yangilanishidan oldingi haqiqiy zaxira nusxaning o'rnini bosmaydi, lekin bitta muvaffaqiyatsiz dnf update uchun ko'pincha eng tez va toza tiklanish usuli.

Atamalar jadvali: APT ↔ DNF

Vazifa APT/dpkg (Debian) DNF/rpm (RHEL oilasi)
Paketni qidirish apt search dnf search
O'rnatish apt install dnf install
Olib tashlash apt remove dnf remove
To'liq olib tashlash (konfiguratsiya bilan) apt purge dnf remove + qo'lda tozalash
Repozitoriy metama’lumotlarini yangilash apt update dnf makecache
Barcha paketlarni yangilash apt upgrade dnf update
O'rnatilgan paket haqida ma’lumot dpkg -s rpm -qi
Paket o'rnatgan fayllar dpkg -L rpm -ql
Fayl qaysi paketga tegishli dpkg -S rpm -qf / dnf provides
Oxirgi tranzaksiyani ortga qaytarish (ichiga o'rnatilmagan) dnf history undo <id>
.deb/.rpm faylni to'g'ridan-to'g'ri o'rnatish dpkg -i rpm -ivh
Repozitoriy fayllari joylashuvi /etc/apt/sources.list.d/ /etc/yum.repos.d/

Intervyuda

Ikkala ekotizim bilan ham tanishman deydigan har bir kishiga beriladigan amaliy intervyu savoli: "nega dnf install bilan muammosiz o'rnatiladigan paket rpm -ivh da bog'liqlik xatosi bilan yiqiladi?" Javob aynan shu modulda avval ko'rilgan dpkg/apt munosabatini takrorlaydi: past darajali vosita (rpm, xuddi dpkg kabi) bog'liqliklarni faqat tizimda allaqachon bor narsalarga nisbatan tekshiradi, yuqori darajali vosita (dnf, xuddi apt kabi) esa past darajali o'rnatuvchini chaqirishdan oldin to'liq zanjirni repozitoriydan hal qilib, yuklab oladi. Ikki ekotizimni bir-biriga aloqasiz deb qaramasdan, bu o'xshashlikni aniq ayta olish odatda aynan shu turdagi savol tekshiradigan narsa.

Keng tarqalgan xatolar

rpm -ivh ni standart o'rnatish usuli deb hisoblash

Bu past darajali vosita bog'liqliklarni hal qilmaydi. Standart o'rnatish doim repozitoriydan dnf install <name> orqali bajarilishi kerak.

yum va dnf ni butunlay boshqa vositalar deb o'ylash

Zamonaviy tizimlarda yum ko'pincha shunchaki dnf ga yo'naltirilgan alias; ikkalasining buyruq sintaksisi deyarli bir xil. Eski hujjatlarda yum tilga olingan joyda uni to'g'ridan-to'g'ri dnf ga almashtirish odatda o'zgarishsiz ishlaydi.

gpgcheck=0 ni "vaqtinchalik" yechim sifatida qoldirish

Sinov muhitida vaqtincha o'chirilgan tekshiruvning production konfiguratsiyasiga o'tib ketishi keng tarqalgan va oldini olish mumkin bo'lgan xavfsizlik xatosi.

Mashqlar

  1. RHEL asosidagi sinov VM’ida (masalan, Rocky Linux) dnf search, dnf install va rpm -qi ni birma-bir ishga tushiring va natijalarni ularning Debian tomonidagi ekvivalentlari bilan solishtiring.
  2. O'rnatilgan paketga tegishli barcha fayllarni rpm -ql bilan ro'yxatlang va ular orasidan konfiguratsiya faylini aniqlang.
  3. gpgcheck=1 sozlangan yangi .repo fayl yarating, so'ng dnf makecache ni ishga tushiring.
  4. Yuqoridagi atamalar jadvaliga qaramasdan, uning har bir qatorining ikkala tomonini yoddan yozing, so'ng javoblaringizni jadval bilan solishtiring.

Mashqni bajardim deyish uchun: har bir mashq uchun hozirgina ishga tushirgan RHEL tomonidagi buyruqning Debian tomonidagi ekvivalentini ayta olishingiz va nega rpm/dpkg bog'liqliklarni tekshirishda bir xil cheklovga ega ekanini tushuntira olishingiz kerak.

Xulosa

RPM oilasida rpm — past darajali, dnf (yoki eskiroq yum) esa yuqori darajali vosita. Bu Debian’dagi dpkg/apt juftligining tuzilishini aynan takrorlaydi. Asosiy amaliy farqlar — buyruq nomlari va repozitoriy fayllari formati (sources.list o'rniga .repo); asosiy tushunchalar va ish jarayoni deyarli bir xil. Ikkala ekotizimni bilish muayyan production server qaysi distributiv oilasida ishlashidan qat’i nazar, paketlarni boshqarishga tez moslashish imkonini beradi.

Manbalar

  • Red Hat Enterprise Linux 9: dasturiy paketlarni boshqarish: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/configuring_basic_system_settings/managing-software-packages_configuring-basic-system-settings
  • DNF hujjatlari: https://dnf.readthedocs.io/en/latest/
  • Linux man-pages: rpm(8): https://man7.org/linux/man-pages/man8/rpm.8.html
  • Fedora Docs: dnf.conf va .repo fayllari: https://dnf.readthedocs.io/en/latest/conf_ref.html