4. modulis · 4.1
Pakotņu pārvaldība ar apt
4. modulis: Programmatūra un atjauninājumi · Lasīšanas laiks: 10 min.
Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet ar apt instalēt, atjaunināt un noņemt programmatūru, redzēsiet, no kurienes pakotne nāk, un atpazīsiet, kuri atjauninājumi ir drošības atjauninājumi.
Pamatjēdzieni: pakotne, pakotņu avots (repozitorijs), sources.list, .sources fails (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, drošības avots, dnf
Kāpēc vajadzīgs pakotņu pārvaldnieks?
Windows vidē instalēšanas programmu parasti lejupielādē no vietnes. Linux serverī tā gandrīz nekad nedara. Programmatūra tiek piegādāta kā pakotne no pakotņu avota (repozitorija): tas ir distribūcijas serveris ar tūkstošiem programmu, kas visas ir būvētas un pārbaudītas tieši Jūsu Debian vai Ubuntu versijai. Programmu, kas šīs pakotnes lejupielādē, instalē un atjaunina, sauc par pakotņu pārvaldnieku. Debian un Ubuntu sistēmās tas ir apt (zem tā darbojas dpkg), AlmaLinux un Rocky Linux sistēmās dnf.
Tam ir trīs lielas priekšrocības:
- Viena komanda atjaunina visu. Tīmekļa serveris, SSH serveris, bibliotēkas un kodols nāk no viena avota. Jums nav jāpārbauda katras programmas vietne, lai uzzinātu, vai ir iznākusi jauna versija.
- Izcelsme ir pārbaudīta. Katrs pakotņu avots ir parakstīts ar atslēgu. apt atsakās no pakotnēm, kuru paraksts neatbilst.
- Atkarības tiek sakārtotas automātiski. Ja nginx ir vajadzīga kāda bibliotēka, apt to automātiski instalē līdzi un vēlāk arī aizvāc.
Pakotņu avoti: no kurienes tas nāk?
Kurus avotus apt izmanto, ir norādīts /etc/apt/. Ilgu laiku tas bija viens fails sources.list ar šādām rindām:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 un jaunākas versijas, Debian mākoņa attēli un arvien vairāk jaunu instalāciju izmanto jaunāko deb822 formātu: atsevišķus failus ar paplašinājumu .sources mapē /etc/apt/sources.list.d/. Veco sources.list var pārveidot ar sudo apt modernize-sources (apt 3, Debian 13). Piemēram, Debian 13 sistēmā:
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.gpgLasiet to šādi: suite ir versija (trixie ir Debian 13; noble ir Ubuntu 24.04), component ir avota daļa (main Debian sistēmā; main, universe, restricted un multiverse Ubuntu sistēmā), un Signed-By norāda, ar kuru atslēgu avotam jābūt parakstītam. Pēdējais ir svarīgi: atslēga pieder vienam avotam, nevis visiem avotiem vienlaikus. Ja vēlāk pievienojat ražotāja avotu (Docker, Caddy, PostgreSQL), tas saņem savu atslēgas failu un savu Signed-By rindu (nodarbība 9.2).
Avots, kura nosaukumā ir -security, ir drošības avots. No tā nāk drošības atjauninājumi, parasti tajā pašā dienā, kad ievainojamība kļūst zināma. Ubuntu sistēmā šo suite sauc noble-security (vai Jūsu versijas nosaukums).
Ja joprojām izmantojat veco sources.list, viss darbojas kā parasti. Tikai nejauciet vienu un to pašu avotu abos formātos, jo tad apt sūdzas par dublētām rindām.
update, upgrade un full-upgrade
Atšķirība starp šiem trim jēdzieniem ir pirmais slazds iesācējiem.
| Komanda | Ko tā dara |
|---|---|
apt update | Lejupielādē sarakstu ar to, kuras pakotnes un versijas ir avotos. Neko neinstalē. |
apt upgrade | Atjaunina instalētās pakotnes uz jaunāko versiju no šī saraksta. Nekad neko nenoņem. Atjauninājums, kura dēļ būtu jānoņem cita pakotne, tiek izlaists. |
apt full-upgrade | Tas pats, taču drīkst arī noņemt pakotnes vai instalēt jaunas, ja tas ir nepieciešams. Vajadzīgs, jauninot laidienu (nodarbība 4.3), un dažreiz jauna kodola gadījumā. |
Tātad vienmēr vispirms update, tad 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](Iepriekš redzamie versiju numuri ir piemērs.) Aiz nosaukuma ir norādīts, no kura suite nāk jaunā versija. Viss, kam ir -security, ir drošības atjauninājums: to vēlaties instalēt pēc iespējas ātrāk. -updates ir citi stabilie atjauninājumi, piemēram, jauni laika joslu dati.
Pēc tam:
anna@web1:~$ sudo apt upgradeapt parāda, kas mainīsies, un lūdz apstiprinājumu. Izlasiet šo sarakstu. Ja tajā ir "The following packages will be REMOVED" (tiks noņemtas šādas pakotnes), notiek kaut kas neparasts, un vispirms ir vērts noskaidrot, kāpēc.
Instalēšana, noņemšana un sakopšana
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programma noņemta, konfigurācija /etc paliek
anna@web1:~$ sudo apt purge nginx # programma un konfigurācija noņemtas
anna@web1:~$ sudo apt autoremove # notīrīt to, kas vairs nevienam nav vajadzīgsAtšķirība starp remove un purge ir noderīga: ja vēlaties kaut ko uz laiku noņemt un vēlāk instalēt atkārtoti ar tiem pašiem iestatījumiem, izmantojiet remove. Ja vēlaties sākt pilnīgi no jauna, izmantojiet purge.
Meklēšana un plašāka informācija:
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 ir komanda, ko izmantojat, ja vēlaties uzzināt, no kurienes pakotne nāk un kuru versiju apt izvēlēsies. *** ir pie instalētās versijas, Candidate ir tas, ko instalētu jaunināšana.
Debian versijas un programmas versija
Bieži dzirdama sūdzība: "Debian ir veca nginx versija." Tā ir taisnība, un tas ir apzināti. Debian un Ubuntu iesaldē versijas laidiena izdošanas brīdī un pēc tam pievieno tikai drošības labojumus un nopietnus labojumus, bez jaunām funkcijām. Tāpēc pakotnei ar "vecu" versijas numuru tomēr var būt visi jaunākie drošības labojumi: tie ir pārnesti atpakaļ (backport) vecajā versijā. To var atpazīt pēc sufiksa, piemēram, +deb13u1 vai ubuntu0.1.
Tāpēc nekad nesalīdziniet tikai versijas numuru ar ražotāja vietni, lai novērtētu, vai esat ievainojami. Skatiet savas distribūcijas drošības paziņojumus: Debian Security Tracker (security-tracker.debian.org) un Ubuntu Security Notices (ubuntu.com/security/notices) par katru ievainojamību norāda, vai Jūsu versija ir salabota.
Daži noteikumi mierīgam serverim
- Instalējiet tikai to, kas Jums ir vajadzīgs. Katra pakotne ir kods, kas jāatjaunina, un dažreiz arī pakalpojums, kas klausās (nodarbība 5.1).
- Labāk no distribūcijas nekā no vietnes. Programmu, ko kompilējat paši vai lejupielādējat kā atsevišķu failu,
apt upgradeneatjaunina. Tad drošības paziņojumi Jums jāseko pašiem. - Papildu avotu tikai no paša ražotāja, ar atsevišķu atslēgu un
Signed-By. Nekad nepievienojiet atslēgu "visam" un nekad neizmantojiet avotu no nezināmas vietnes (nodarbība 4.3). - Izlasiet, ko apt jautā. Jaunināšanas laikā apt var jautāt, vai vēlaties aizstāt mainītu konfigurācijas failu ar ražotāja jauno versiju. Ja nezināt, ko tajā esat mainījuši, izvēlieties "keep the local version" (paturēt lokālo versiju, noklusējums) un vēlāk ar
diffapskatiet atšķirību: jaunā versija atrodas blakus kā.dpkg-dist.
AlmaLinux un Rocky Linux sistēmās
Tur pakotņu pārvaldnieku sauc dnf, un pakotnes ir .rpm. Komandas ir līdzīgas apt komandām: dnf check-update (saraksts), dnf upgrade (atjaunināšana, update un upgrade vienā), dnf install, dnf remove, dnf info. Avoti atrodas /etc/yum.repos.d/*.repo. Daudz papildu programmatūras (piemēram, fail2ban) nāk no atsevišķa avota EPEL, kuru vispirms ieslēdz ar dnf install epel-release. Tikai drošības atjauninājumus var parādīt ar dnf updateinfo list --security.
Praksē: VPS ekrāns
WebOké, tāpat kā vairums citu pakalpojumu sniedzēju, jau VPS instalēšanas laikā pareizi iestata distribūcijas standarta avotus. Parasti tur nekas nav jāmaina. Atjauniniet serveri uzreiz pēc pirmās pieteikšanās ar apt update un apt upgrade (nodarbība 1.2), un pirms lielām izmaiņām izveidojiet momentuzņēmumu (snapshot) sava pakalpojumu sniedzēja panelī.
Kopsavilkums
- Debian un Ubuntu sistēmās programmatūra nāk no parakstītiem pakotņu avotiem; apt lejupielādē, instalē, atjaunina un sakopj.
apt updatetikai lejupielādē sarakstu;apt upgradeatjaunina, neko nenoņemot;apt full-upgradedrīkst arī noņemt.- Drošības atjauninājumi nāk no suite, kura nosaukumā ir
-security;apt list --upgradableunapt-cache policyparāda, no kurienes versija nāk. - Vecam versijas numuram ar
+deb13u1vaiubuntu0.xvar būt visi labojumi (backport): skatiet savas distribūcijas drošības paziņojumus. - Papildu avotu tikai no paša ražotāja, ar atsevišķu atslēgu
Signed-By.
Tests (quiz)
Uzdevums
Uzdevums Z4.1: Kuri atjauninājumi ir drošības atjauninājumi? Piemēra failā apt-upgradable.txt ir Debian 13 servera komandu apt list --upgradable un apt-cache policy izvade. Atbildiet: kuras pakotnes nāk no drošības avota, kura pakotne nāk no ražotāja avota, nevis no Debian, kura openssh-server versija pašlaik ir instalēta, un kura pakotne ir parasts stabilais atjauninājums bez drošības iemesla? Programma salīdzina atbildes ar fiksētu atslēgu. Ja Jums jau ir savs serveris, izpildiet tās pašas komandas un apskatiet, ko redzat.
Vairāk lasīt
- Jūsu VPS aizsardzība: pirmās piecas minūtes
- Darba sākšana ar Jūsu VPS
- Debian rokasgrāmata sistēmu administratoriem, 6. nodaļa (apt, angļu valodā): https://debian-handbook.info/browse/stable/apt.html
- Rokasgrāmata
sources.list(5)(deb822 formāts): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
