4 modulis · 4.1
Paketų valdymas su apt
4 modulis: Programinė įranga ir atnaujinimai · Skaitymo laikas: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite įdiegti, atnaujinti ir pašalinti programinę įrangą su apt, matysite, iš kur kilęs paketas, ir atpažinsite, kurie atnaujinimai yra saugumo atnaujinimai.
Pagrindinės sąvokos: paketas, paketų šaltinis (repository), sources.list, .sources failas (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, saugumo šaltinis, dnf
Kam reikalinga paketų tvarkyklė?
Windows sistemoje diegimo programą atsisiunčiate iš svetainės. Linux serveryje taip beveik niekada nedaroma. Programinė įranga pateikiama kaip paketas iš paketų šaltinio (repository): tai distribucijos serveris su tūkstančiais programų, kurios visos sukurtos ir išbandytos būtent Jūsų Debian ar Ubuntu versijai. Programa, kuri tuos paketus atsisiunčia, įdiegia ir atnaujina, vadinama paketų tvarkykle. Debian ir Ubuntu sistemose tai yra apt (po juo veikia dpkg), AlmaLinux ir Rocky Linux sistemose dnf.
Tai turi tris didelius privalumus:
- Viena komanda atnaujina viską. Žiniatinklio serveris, SSH serveris, bibliotekos ir branduolys gaunami iš to paties šaltinio. Jums nereikia kiekvienos programos svetainėje tikrinti, ar išleista nauja versija.
- Kilmė patikrinta. Kiekvienas paketų šaltinis pasirašytas raktu. apt atmeta paketus, kurių parašas neteisingas.
- Priklausomybės sutvarkomos automatiškai. Jei nginx reikia bibliotekos, apt ją įdiegs kartu, o vėliau vėl išvalys.
Paketų šaltiniai: iš kur viskas gaunama?
Kokius šaltinius naudoja apt, nurodyta /etc/apt/. Ilgą laiką tai buvo vienas failas sources.list su tokiomis eilutėmis:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 ir naujesnės versijos, Debian debesijos atvaizdai ir vis daugiau naujų diegimų naudoja naujesnę deb822 formą: atskirus failus su plėtiniu .sources kataloge /etc/apt/sources.list.d/. Seną sources.list galima konvertuoti komanda sudo apt modernize-sources (apt 3, Debian 13). Pavyzdžiui, Debian 13 sistemoje:
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.gpgSkaitykite taip: suite yra versija (trixie yra Debian 13; noble yra Ubuntu 24.04), component yra šaltinio dalis (main Debian sistemoje; main, universe, restricted ir multiverse Ubuntu sistemoje), o Signed-By nurodo, kokiu raktu šaltinis turi būti pasirašytas. Pastarasis dalykas svarbus: raktas priklauso vienam šaltiniui, o ne visiems šaltiniams iš karto. Jei vėliau pridėsite gamintojo šaltinį (Docker, Caddy, PostgreSQL), jis gaus savo rakto failą ir savo Signed-By eilutę (pamoka 9.2).
Šaltinis, kurio pavadinime yra -security, yra saugumo šaltinis. Iš jo gaunami saugumo atnaujinimai, dažniausiai tą pačią dieną, kai paskelbiama apie spragą. Ubuntu sistemoje šis suite vadinasi noble-security (arba pagal Jūsų versijos pavadinimą).
Jei vis dar naudojate seną sources.list, viskas veikia įprastai. Tik nemaišykite to paties šaltinio abiem formomis, nes tada apt skųsis dėl pasikartojančių eilučių.
update, upgrade ir full-upgrade
Šių trijų sąvokų skirtumas yra pirmoji pradedančiųjų klaida.
| Komanda | Ką ji daro |
|---|---|
apt update | Atsisiunčia sąrašą, kokie paketai ir versijos yra šaltiniuose. Nieko neįdiegia. |
apt upgrade | Atnaujina įdiegtus paketus iki naujausios to sąrašo versijos. Niekada nieko nepašalina. Atnaujinimas, dėl kurio tektų pašalinti kitą paketą, praleidžiamas. |
apt full-upgrade | Tas pats, bet prireikus gali ir pašalinti paketų arba įdiegti naujų. Reikalinga atliekant leidimo atnaujinimą (pamoka 4.3) ir kartais diegiant naują branduolį. |
Taigi visada pirmiausia update, tada 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](Aukščiau pateikti versijų numeriai yra pavyzdys.) Po pavadinimo nurodyta, iš kurio suite gaunama nauja versija. Viskas, kas turi -security, yra saugumo atnaujinimas: jį norėsite įdiegti kuo greičiau. -updates yra kiti stabilūs atnaujinimai, pavyzdžiui, nauji laiko juostų duomenys.
Po to:
anna@web1:~$ sudo apt upgradeapt parodo, kas pasikeis, ir paprašo patvirtinimo. Perskaitykite tą sąrašą. Jei matote „The following packages will be REMOVED“ (bus pašalinti šie paketai), vyksta kažkas neįprasto ir pirmiausia verta išsiaiškinti kodėl.
Diegimas, šalinimas ir valymas
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programa pašalinama, konfigūracija /etc lieka
anna@web1:~$ sudo apt purge nginx # pašalinama programa ir konfigūracija
anna@web1:~$ sudo apt autoremove # išvalyti tai, ko niekam nebereikiaSkirtumas tarp remove ir purge naudingas: jei norite ką nors laikinai pašalinti ir vėliau iš naujo įdiegti su tais pačiais nustatymais, naudokite remove. Jei norite pradėti visiškai iš naujo, naudokite purge.
Paieška ir daugiau informacijos:
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 yra komanda, kurią naudojate norėdami sužinoti, iš kur gaunamas paketas ir kurią versiją pasirinks apt. *** rodoma prie įdiegtos versijos, Candidate yra tai, ką įdiegtų atnaujinimas.
Debian versijos ir programos versija
Dažnai girdimas nusiskundimas: „Debian turi seną nginx versiją.“ Tai tiesa, ir taip padaryta sąmoningai. Debian ir Ubuntu užfiksuoja versijas išleidžiant leidimą, o vėliau prideda tik saugumo pataisas ir rimtų klaidų taisymus, be naujų funkcijų. Todėl paketas su „senu“ versijos numeriu vis tiek gali turėti visas naujausias saugumo pataisas: jos buvo perkeltos atgal (backport) į senąją versiją. Tai atpažinsite iš priesagos, pavyzdžiui, +deb13u1 arba ubuntu0.1.
Todėl niekada nevertinkite, ar esate pažeidžiami, vien lygindami versijos numerį su gamintojo svetaine. Žiūrėkite savo distribucijos saugumo pranešimus: Debian Security Tracker (security-tracker.debian.org) ir Ubuntu Security Notices (ubuntu.com/security/notices) nurodo kiekvienai spragai, ar Jūsų versija pataisyta.
Kelios taisyklės ramiam serveriui
- Įdiekite tik tai, ko Jums reikia. Kiekvienas paketas yra kodas, kurį reikia atnaujinti, o kartais ir paslauga, kuri klausosi prievado (pamoka 5.1).
- Geriau iš distribucijos nei iš svetainės. Programos, kurią sukompiliavote patys arba atsisiuntėte kaip atskirą failą,
apt upgradeneatnaujina. Tuomet saugumo pranešimus turite sekti patys. - Papildomas šaltinis tik iš paties gamintojo, su atskiru raktu ir
Signed-By. Niekada nepridėkite rakto „viskam“ ir niekada nenaudokite šaltinio iš nežinomos svetainės (pamoka 4.3). - Skaitykite, ko klausia apt. Atnaujinant apt gali paklausti, ar norite pakeisti pakeistą konfigūracijos failą nauja gamintojo versija. Jei nežinote, ką jame keitėte, pasirinkite „keep the local version“ (palikti vietinę versiją, numatytasis pasirinkimas) ir vėliau su
diffperžiūrėkite skirtumą: nauja versija padedama šalia kaip.dpkg-dist.
AlmaLinux ir Rocky Linux sistemose
Ten paketų tvarkyklė vadinasi dnf, o paketai yra .rpm. Komandos panašios į apt: dnf check-update (sąrašas), dnf upgrade (atnaujinimas, update ir upgrade viename), dnf install, dnf remove, dnf info. Šaltiniai nurodyti /etc/yum.repos.d/*.repo. Daug papildomos programinės įrangos (pavyzdžiui, fail2ban) gaunama iš atskiro šaltinio EPEL, kurį pirmiausia įjungiate su dnf install epel-release. Tik saugumo atnaujinimus galima parodyti su dnf updateinfo list --security.
Praktikoje: VPS ekranas
WebOké, kaip ir dauguma kitų teikėjų, diegdama Jūsų VPS iš karto teisingai nustato numatytuosius distribucijos šaltinius. Dažniausiai Jums ten nieko keisti nereikia. Iškart po pirmojo prisijungimo atnaujinkite serverį su apt update ir apt upgrade (pamoka 1.2), o prieš didelius pakeitimus sukurkite momentinę kopiją (snapshot) savo teikėjo valdymo skydelyje.
Santrauka
- Debian ir Ubuntu sistemose programinė įranga gaunama iš pasirašytų paketų šaltinių; apt atsisiunčia, įdiegia, atnaujina ir išvalo.
apt updatetik atsisiunčia sąrašą;apt upgradeatnaujina nieko nešalindamas;apt full-upgradegali ir pašalinti.- Saugumo atnaujinimai gaunami iš suite, kurio pavadinime yra
-security;apt list --upgradableirapt-cache policyparodo, iš kur gaunama versija. - Senas versijos numeris su
+deb13u1arbaubuntu0.xgali turėti visas pataisas (backport): žiūrėkite savo distribucijos saugumo pranešimus. - Papildomas šaltinis tik iš paties gamintojo, su atskiru raktu
Signed-Byeilutėje.
Testas (quiz)
Užduotis
Užduotis Z4.1: Kurie atnaujinimai yra saugumo atnaujinimai? Pavyzdiniame faile apt-upgradable.txt pateikta Debian 13 serverio komandų apt list --upgradable ir apt-cache policy išvestis. Atsakykite: kurie paketai gaunami iš saugumo šaltinio, kuris paketas gaunamas ne iš Debian, o iš gamintojo šaltinio, kuri openssh-server versija šiuo metu įdiegta ir kuris paketas yra įprastas stabilus atnaujinimas be saugumo priežasties? Programa palygina atsakymus su nustatytu raktu. Jei jau turite savo serverį, paleiskite tas pačias komandas ir pažiūrėkite, ką matote.
Skaitykite daugiau
- VPS apsauga: pirmosios penkios minutės
- Darbo su VPS pradžia
- Debian sistemos administratoriaus vadovas, 6 skyrius (apt): https://debian-handbook.info/browse/stable/apt.html
sources.list(5)žinynas (deb822 forma): https://manpages.debian.org/trixie/apt/sources.list.5.en.html- Debian Security Tracker: https://security-tracker.debian.org/tracker/
