Paket menejerlari — apt, dnf, snap
Muammodan boshlaylik
Windows da dastur o'rnatish: saytga kirish, .exe ni yuklab olish, "Next, Next, Finish", har bir dastur o'zicha yangilanadi (yoki yangilanmaydi). Saytni adashtirsangiz — virus.
Linux da:
sudo apt install nginx
Bir buyruq: rasmiy, tekshirilgan manbadan yuklab oladi, kerakli bog'liqliklarni o'zi o'rnatadi, keyin apt upgrade bilan barcha dasturlar bir vaqtda yangilanadi. Bu — paket menejeri. App Store ning dasturchilar uchun versiyasi — 1990-yillardan beri.
apt — Ubuntu va Debian
Asosiy buyruqlar
sudo apt update # paketlar ro'yxatini yangilash (hech narsa o'rnatmaydi!)
sudo apt upgrade # o'rnatilganlarni yangilash
sudo apt install nginx # o'rnatish
sudo apt install git curl htop # bir nechtasi
sudo apt remove nginx # o'chirish (sozlamalar qoladi)
sudo apt purge nginx # sozlamalari bilan o'chirish
sudo apt autoremove # endi kerak bo'lmagan bog'liqliklarni o'chirish
[!INFO]
apt updatevaapt upgrade— turli narsalar.update— "do'kon katalogini yangilash" (qaysi versiyalar mavjud).upgrade— haqiqiy yangilash.installdan oldin har doimupdateqiling — aks holda eski katalogdan eski versiya o'rnatilishi yoki "paket topilmadi" xatosi chiqishi mumkin.
Tipik birinchi buyruq yangi serverda:
sudo apt update && sudo apt upgrade -y
-y — "Davom etaymi? [Y/n]" savoliga avtomatik "ha". Skriptlarda va Dockerfile larda kerak.
Qidirish va ma'lumot
apt search "web server" # qidirish
apt show nginx # batafsil: versiya, hajm, bog'liqliklar
apt list --installed # o'rnatilganlar
apt list --installed | grep php # o'rnatilgan PHP paketlari
apt list --upgradable # yangilanishi mumkin bo'lganlar
Buyruq qaysi paketda?
htop
Command 'htop' not found, but can be installed with:
sudo apt install htop
Ubuntu o'zi aytadi. Yoki fayl bo'yicha:
dpkg -S /usr/bin/curl # bu fayl qaysi paketdan
Paketlar qayerdan keladi: repozitoriyalar
apt paketlarni repozitoriyalardan — Ubuntu ning rasmiy serverlaridan yuklaydi. Ro'yxat:
cat /etc/apt/sources.list.d/ubuntu.sources
ls /etc/apt/sources.list.d/
Rasmiy repozitoriyadagi versiyalar barqaror, lekin ko'pincha eski. Masalan, Ubuntu 24.04 da Node.js 18 bo'lishi mumkin, siz esa 22 ni xohlaysiz.
Uchinchi tomon repozitoriyasi
Ko'p loyihalar o'z repozitoriyasini beradi. Masalan, Node.js (NodeSource):
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
sudo apt install -y nodejs
node -v
Docker, PostgreSQL, Nginx ning yangi versiyalari — xuddi shunday, rasmiy qo'llanmalarida.
[!WARNING]
curl ... | sudo bash— internetdan skriptni root huquqi bilan ishga tushirish. Faqat rasmiy va ishonchli manbalardan (rasmiy hujjatlarda ko'rsatilgan URL). Shubha bo'lsa — avval skriptni yuklab, o'qing:curl -fsSL URL -o setup.sh && less setup.sh.
PPA — Ubuntu uchun shaxsiy repozitoriyalar:
sudo add-apt-repository ppa:ondrej/php # PHP ning yangi versiyalari
sudo apt update
sudo apt install php8.4
dpkg — .deb fayllar
Ba'zi dasturlar .deb fayl sifatida tarqatiladi (Chrome, VS Code):
wget https://example.com/dastur.deb
sudo apt install ./dastur.deb # bog'liqliklarni ham o'rnatadi
./ muhim — aks holda apt uni repozitoriyadan qidiradi. Past darajali dpkg -i bog'liqliklarni o'rnatmaydi — apt install ./... afzal.
Boshqa distributivlar
| Distributiv | Menejer | O'rnatish | Yangilash |
|---|---|---|---|
| Ubuntu, Debian | apt |
apt install |
apt update && apt upgrade |
| Fedora, RHEL, Rocky | dnf |
dnf install |
dnf upgrade |
| Alpine (Docker) | apk |
apk add |
apk update && apk upgrade |
| Arch | pacman |
pacman -S |
pacman -Syu |
| macOS | brew |
brew install |
brew upgrade |
Tushunchalar bir xil — faqat buyruq nomlari farq qiladi. Dockerfile larda apk add ni ko'rsangiz — bu Alpine.
snap va flatpak
snap (Ubuntu) — dastur barcha bog'liqliklari bilan bitta "paketda", tizimdan izolyatsiyalangan:
sudo snap install code --classic
snap list
Afzallik: eng yangi versiyalar, avtomatik yangilanish. Kamchilik: kattaroq, ba'zan sekinroq ishga tushadi. Serverlarda kamroq, ish stolida ko'proq ishlatiladi.
Til paket menejerlari
Har bir dasturlash tilining o'z menejeri bor — ular tizim paketlaridan alohida:
| Til | Menejer | Misol |
|---|---|---|
| JavaScript | npm, pnpm |
npm install express |
| Python | pip, uv |
pip install fastapi |
| PHP | composer |
composer require laravel/framework |
| Rust | cargo |
cargo add serde |
Qoida: tizim vositalari (nginx, git, curl) — apt dan; loyiha kutubxonalari — tilning menejeridan, loyiha ichiga.
[!WARNING]
sudo pip installyokisudo npm install -gdan qoching — tizim Python iga yoki Node iga aralashib,aptpaketlarini buzishi mumkin. Python uchun — virtual muhit (python3 -m venv .venv), Node uchun —nvmyoki loyiha ichidanpm install.
Avtomatik xavfsizlik yangilanishlari
Serverda xavfsizlik yamalarini qo'lda kuzatish qiyin. Ubuntu da:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Endi xavfsizlik yangilanishlari har kuni avtomatik o'rnatiladi. Ba'zi yangilanishlar (yadro) qayta yuklashni talab qiladi:
cat /var/run/reboot-required 2>/dev/null
Nima uchun shunday?
Nima uchun Linux da dasturlar markazlashgan repozitoriyalardan o'rnatiladi, saytlardan emas?
Uch katta afzallik. Xavfsizlik: paketlar raqamli imzolangan — apt ularni tekshiradi, soxta yoki o'zgartirilgan paket o'rnatilmaydi. Bog'liqliklar: 50 ta dastur bitta openssl kutubxonasidan foydalanadi — u bir marta o'rnatiladi va bir marta yangilanadi; zaiflik topilsa, bitta apt upgrade hammasini tuzatadi. Takrorlanuvchanlik: apt install nginx git — har bir Ubuntu serverda bir xil natija, skriptga yoki Dockerfile ga yoziladi. Windows dagi "har dastur o'zicha" modeli bu uchalasini ham qiyinlashtiradi.
Xulosa
Eslab qoling:
sudo apt update— katalog;sudo apt upgrade— yangilash; avval doimupdateapt install,remove,purge,autoremoveapt search,apt show,apt list --installed- Yangi versiyalar — rasmiy uchinchi tomon repozitoriyalari (NodeSource, Docker)
curl | sudo bash— faqat ishonchli manbadanapt install ./fayl.deb- dnf (Fedora), apk (Alpine), brew (macOS) — xuddi shu g'oya
- Til kutubxonalari — npm/pip/composer bilan,
sudosiz unattended-upgrades— avtomatik xavfsizlik yangilanishlari
Keyingi dars
30-dars: Muhit o'zgaruvchilari — PATH, export, .bashrc, alias