Modul 4 · 4.1
Upravljanje paketov z apt
Modul 4: Programska oprema in posodobitve · Čas branja: 10 minut
Učni cilj: Po tej lekciji boste znali z apt nameščati, posodabljati in odstranjevati programsko opremo, videli boste, od kod prihaja paket, in prepoznali boste, katere posodobitve so varnostne posodobitve.
Ključni pojmi: paket, vir paketov (repozitorij), sources.list, datoteka .sources (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, varnostni vir, dnf
Zakaj upravljalnik paketov?
V sistemu Windows namestitveni program prenesete s spletnega mesta. Na strežniku Linux tega skoraj nikoli ne počnete. Programska oprema prihaja kot paket iz vira paketov (repozitorija): to je strežnik distribucije s tisoči programov, ki so vsi zgrajeni in preizkušeni za Vašo različico sistema Debian ali Ubuntu. Program, ki te pakete prenaša, namešča in posodablja, se imenuje upravljalnik paketov. V sistemih Debian in Ubuntu je to apt (pod njim pa dpkg), v sistemih AlmaLinux in Rocky Linux pa dnf.
To ima tri velike prednosti:
- En ukaz posodobi vse. Spletni strežnik, strežnik SSH, knjižnice in jedro prihajajo iz istega vira. Ni Vam treba za vsak program posebej preverjati na spletnem mestu, ali obstaja nova različica.
- Izvor je preverjen. Vsak vir paketov je podpisan s ključem. apt zavrne pakete, katerih podpis ni pravilen.
- Odvisnosti so urejene samodejno. Če nginx potrebuje knjižnico, jo apt samodejno namesti zraven in jo pozneje tudi pospravi.
Viri paketov: od kod prihaja programska oprema?
Katere vire uporablja apt, je zapisano v /etc/apt/. Dolgo časa je bila to ena datoteka sources.list z vrsticami, kot so:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 in novejši, slike Debian za oblak in vedno več novih namestitev uporabljajo novejšo obliko deb822: ločene datoteke s končnico .sources v /etc/apt/sources.list.d/. Staro datoteko sources.list lahko pretvorite z ukazom sudo apt modernize-sources (apt 3, Debian 13). Primer v sistemu 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.gpgBerete ga takole: suite je različica (trixie je Debian 13; noble je Ubuntu 24.04), komponenta je del vira (main pri sistemu Debian; main, universe, restricted in multiverse pri sistemu Ubuntu), Signed-By pa pove, s katerim ključem mora biti vir podpisan. Slednje je pomembno: ključ spada k enemu viru, ne k vsem virom hkrati. Če pozneje dodate vir proizvajalca (Docker, Caddy, PostgreSQL), dobi ta svojo datoteko s ključem in svojo vrstico Signed-By (lekcija 9.2).
Vir z -security v imenu je varnostni vir. Iz njega prihajajo varnostne posodobitve, običajno še isti dan, ko postane ranljivost znana. V sistemu Ubuntu se ta suite imenuje noble-security (ali ime Vaše različice).
Če še vedno uporabljate staro datoteko sources.list, vse deluje normalno. Le istega vira ne mešajte v obeh oblikah, saj se apt sicer pritožuje zaradi podvojenih vrstic.
update, upgrade in full-upgrade
Razlika med temi tremi pojmi je prva past za začetnike.
| Ukaz | Kaj naredi |
|---|---|
apt update | Prenese seznam paketov in različic, ki so na voljo v virih. Ne namesti ničesar. |
apt upgrade | Nameščene pakete posodobi na najnovejšo različico s tega seznama. Nikoli ne odstrani ničesar. Posodobitev, ki bi zahtevala odstranitev drugega paketa, preskoči. |
apt full-upgrade | Enako, vendar lahko po potrebi tudi odstrani pakete ali namesti nove. Potrebno pri nadgradnji izdaje (lekcija 4.3) in včasih pri novem jedru. |
Torej vedno najprej update, nato 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](Zgornje številke različic so le primer.) Za imenom je navedeno, iz katerega suita prihaja nova različica. Vse z -security je varnostna posodobitev: te želite namestiti čim prej. -updates so druge stabilne posodobitve, na primer novi podatki o časovnih pasovih.
Nato:
anna@web1:~$ sudo apt upgradeapt prikaže, kaj se bo spremenilo, in zahteva potrditev. Ta seznam preberite. Če piše "The following packages will be REMOVED" (naslednji paketi bodo odstranjeni), se dogaja nekaj nenavadnega in najprej želite izvedeti, zakaj.
Nameščanje, odstranjevanje in čiščenje
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # program odstranjen, konfiguracija v /etc ostane
anna@web1:~$ sudo apt purge nginx # program in konfiguracija odstranjena
anna@web1:~$ sudo apt autoremove # počistite, česar nihče več ne potrebujeRazlika med remove in purge je uporabna: če želite nekaj začasno odstraniti in pozneje znova namestiti z enakimi nastavitvami, uporabite remove. Če želite resnično začeti na čisto, uporabite purge.
Iskanje in več informacij:
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 je ukaz, ki ga uporabite, ko želite izvedeti, od kod prihaja paket in katero različico bo izbral apt. Oznaka *** stoji pri nameščeni različici, Candidate pa je tisto, kar bi namestila nadgradnja.
Različice sistema Debian in različica programa
Pogosta pritožba: "V sistemu Debian je stara različica nginx." To drži in je tako namenoma. Debian in Ubuntu ob izidu izdaje zamrzneta različice in nato dodajata le varnostne popravke in popravke resnih napak, brez novih funkcij. Zato ima lahko paket s "staro" številko različice vseeno vse nedavne varnostne popravke: ti so preneseni nazaj (backport) v staro različico. To prepoznate po priponi, kot je +deb13u1 ali ubuntu0.1.
Zato za presojo, ali ste ranljivi, nikoli ne primerjajte le številke različice s spletnim mestom proizvajalca. Preglejte varnostna obvestila svoje distribucije: Debian Security Tracker (security-tracker.debian.org) in Ubuntu Security Notices (ubuntu.com/security/notices) za vsako ranljivost povesta, ali je Vaša različica popravljena.
Nekaj pravil za miren strežnik
- Namestite le tisto, kar potrebujete. Vsak paket je koda, ki jo je treba posodabljati, včasih pa tudi storitev, ki posluša (lekcija 5.1).
- Raje iz distribucije kot s spletnega mesta. Programa, ki ga prevedete sami ali prenesete kot samostojno datoteko,
apt upgradene posodobi. Varnostna obvestila morate potem spremljati sami. - Dodaten vir le neposredno od proizvajalca, z lastnim ključem in
Signed-By. Nikoli ne dodajte ključa "za vse" in nikoli vira z neznanega spletnega mesta (lekcija 4.3). - Preberite, kaj Vas sprašuje apt. Pri nadgradnji Vas apt lahko vpraša, ali želite spremenjeno konfiguracijsko datoteko zamenjati z novo različico proizvajalca. Če ne veste, kaj ste v njej spremenili, izberite "keep the local version" (ohrani lokalno različico, privzeto) in pozneje z
diffpreglejte razliko: nova različica je shranjena poleg nje kot.dpkg-dist.
V sistemih AlmaLinux in Rocky Linux
Tam se upravljalnik paketov imenuje dnf, paketi pa so .rpm. Ukazi so podobni ukazom apt: dnf check-update (seznam), dnf upgrade (posodabljanje, update in upgrade v enem), dnf install, dnf remove, dnf info. Viri so v /etc/yum.repos.d/*.repo. Veliko dodatne programske opreme (na primer fail2ban) prihaja iz ločenega vira EPEL, ki ga najprej vklopite z dnf install epel-release. Samo varnostne posodobitve prikažete z dnf updateinfo list --security.
V praksi: zaslon VPS
Pri WebOké in pri večini drugih ponudnikov namestitev Vašega VPS že pravilno nastavi privzete vire distribucije. Običajno Vam pri tem ni treba ničesar spreminjati. Strežnik posodobite takoj po prvi prijavi z apt update in apt upgrade (lekcija 1.2), pred večjimi spremembami pa v nadzorni plošči svojega ponudnika naredite posnetek stanja (snapshot).
Povzetek
- Programska oprema v sistemih Debian in Ubuntu prihaja iz podpisanih virov paketov; apt jo prenese, namesti, posodablja in pospravi.
apt updateprenese le seznam;apt upgradeposodablja brez odstranjevanja;apt full-upgradelahko tudi odstranjuje.- Varnostne posodobitve prihajajo iz suita z
-securityv imenu;apt list --upgradableinapt-cache policypokažeta, od kod prihaja različica. - Stara številka različice z
+deb13u1aliubuntu0.xima lahko vse popravke (backport): preglejte varnostna obvestila svoje distribucije. - Dodaten vir le neposredno od proizvajalca, z lastnim ključem v
Signed-By.
Kviz
Naloga
Naloga Z4.1: Katere posodobitve so varnostne posodobitve? V primeru datoteke apt-upgradable.txt je izpis ukazov apt list --upgradable in apt-cache policy s strežnika Debian 13. Odgovorite: kateri paketi prihajajo iz varnostnega vira, kateri paket prihaja iz vira proizvajalca namesto iz sistema Debian, katera različica openssh-server je trenutno nameščena in kateri paket je običajna stabilna posodobitev brez varnostnega razloga? Program odgovore primerja s fiksnim ključem. Če že imate lasten strežnik, zaženite iste ukaze in poglejte, kaj vidite.
Za nadaljnje branje
- Zaščita VPS: prvih pet minut
- Prvi koraki z Vašim VPS
- Priročnik Debian za skrbnike sistemov, poglavje 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Priročnik
sources.list(5)(oblika deb822): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
