Moduuli 4 · 4.1
Pakettienhallinta apt:lla
Moduuli 4: Ohjelmistot ja päivitykset · Lukuaika: 10 minuuttia
Tavoite: Tämän oppitunnin jälkeen osaat asentaa, päivittää ja poistaa ohjelmia apt:lla, näet mistä paketti tulee ja tunnistat, mitkä päivitykset ovat tietoturvapäivityksiä.
Keskeiset käsitteet: paketti, pakettilähde (repository), sources.list, .sources-tiedosto (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, tietoturvalähde, dnf
Miksi pakettienhallinta?
Windowsissa lataat asennusohjelman verkkosivulta. Linux-palvelimella teet niin tuskin koskaan. Ohjelmat tulevat paketteina pakettilähteestä (repository): jakelun palvelimelta, jossa on tuhansia ohjelmia, jotka kaikki on käännetty ja testattu juuri sinun Debian- tai Ubuntu-versiollesi. Ohjelmaa, joka hakee, asentaa ja päivittää nämä paketit, kutsutaan pakettienhallinnaksi. Debianissa ja Ubuntussa se on apt (jonka alla toimii dpkg), AlmaLinuxissa ja Rocky Linuxissa dnf.
Tästä on kolme suurta etua:
- Yksi komento päivittää kaiken. Verkkopalvelin, SSH-palvelin, kirjastot ja kernel tulevat samasta lähteestä. Sinun ei tarvitse tarkistaa jokaisen ohjelman verkkosivulta, onko uusi versio ilmestynyt.
- Alkuperä on tarkistettu. Jokainen pakettilähde on allekirjoitettu avaimella. apt hylkää paketit, joiden allekirjoitus ei täsmää.
- Riippuvuudet hoidetaan. Jos nginx tarvitsee kirjaston, apt asentaa sen automaattisesti mukaan ja siivoaa sen myöhemmin pois.
Pakettilähteet: mistä ohjelmat tulevat?
apt:n käyttämät lähteet on määritelty hakemistossa /etc/apt/. Pitkään se oli yksi tiedosto sources.list, jossa oli tällaisia rivejä:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 ja uudemmat, Debianin pilvi-imaget ja yhä useammat uudet asennukset käyttävät uudempaa deb822-muotoa: erillisiä tiedostoja, joiden pääte on .sources, hakemistossa /etc/apt/sources.list.d/. Vanhan sources.list-tiedoston voi muuntaa komennolla sudo apt modernize-sources (apt 3, Debian 13). Esimerkiksi Debian 13:ssa:
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.gpgLue se näin: suite on versio (trixie on Debian 13; noble on Ubuntu 24.04), component on lähteen osa (main Debianissa; main, universe, restricted ja multiverse Ubuntussa), ja Signed-By kertoo, millä avaimella lähteen on oltava allekirjoitettu. Viimeinen kohta on tärkeä: avain kuuluu yhteen lähteeseen, ei kaikkiin lähteisiin kerralla. Kun lisäät myöhemmin valmistajan lähteen (Docker, Caddy, PostgreSQL), se saa oman avaintiedostonsa ja oman Signed-By-rivinsä (oppitunti 9.2).
Lähde, jonka nimessä on -security, on tietoturvalähde. Sieltä tulevat tietoturvapäivitykset, yleensä samana päivänä, kun haavoittuvuus tulee julki. Ubuntussa tämän suiten nimi on noble-security (tai oman versiosi nimi).
Jos käytät vielä vanhaa sources.list-tiedostoa, kaikki toimii normaalisti. Älä kuitenkaan määrittele samaa lähdettä molemmissa muodoissa, sillä silloin apt valittaa päällekkäisistä riveistä.
update, upgrade ja full-upgrade
Näiden kolmen käsitteen ero on aloittelijan ensimmäinen sudenkuoppa.
| Komento | Mitä se tekee |
|---|---|
apt update | Hakee listan siitä, mitä paketteja ja versioita lähteissä on. Ei asenna mitään. |
apt upgrade | Päivittää asennetut paketit listan uusimpaan versioon. Ei koskaan poista mitään. Päivitys, joka vaatisi toisen paketin poistamista, ohitetaan. |
apt full-upgrade | Sama, mutta saa myös poistaa paketteja tai asentaa uusia tarvittaessa. Tarvitaan julkaisupäivityksessä (oppitunti 4.3) ja joskus uuden kernelin kanssa. |
Eli aina ensin update, sitten 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](Yllä olevat versionumerot ovat esimerkkejä.) Nimen perässä näkyy, mistä suitesta uusi versio tulee. Kaikki, missä on -security, on tietoturvapäivitys: ne haluat asentaa mahdollisimman nopeasti. -updates ovat muita vakaita päivityksiä, kuten uusia aikavyöhyketietoja.
Sen jälkeen:
anna@web1:~$ sudo apt upgradeapt näyttää, mitä muuttuu, ja pyytää vahvistusta. Lue lista. Jos siinä lukee "The following packages will be REMOVED" (seuraavat paketit poistetaan), jotain poikkeuksellista on tekeillä ja haluat ensin tietää miksi.
Asentaminen, poistaminen ja siivous
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # ohjelma pois, asetukset hakemistossa /etc jäävät
anna@web1:~$ sudo apt purge nginx # ohjelma ja asetukset pois
anna@web1:~$ sudo apt autoremove # siivoa pois se, mitä mikään ei enää tarvitseEro komentojen remove ja purge välillä on kätevä: jos haluat poistaa jotain väliaikaisesti ja asentaa sen myöhemmin uudelleen samoilla asetuksilla, käytä remove. Jos haluat todella aloittaa puhtaalta pöydältä, purge.
Hakeminen ja lisätiedot:
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 on komento, jota käytät, kun haluat tietää, mistä paketti tulee ja minkä version apt valitsee. *** on asennetun version kohdalla, Candidate on se, minkä päivitys asentaisi.
Debian-versiot ja ohjelman versio
Usein kuultu valitus: "Debianissa on vanha nginx-versio." Se pitää paikkansa, ja se on tarkoituksellista. Debian ja Ubuntu jäädyttävät versiot julkaisun yhteydessä ja lisäävät sen jälkeen vain tietoturvakorjauksia ja vakavien vikojen korjauksia, ilman uusia ominaisuuksia. Siksi paketissa, jolla on "vanha" versionumero, voi silti olla kaikki tuoreet tietoturvakorjaukset: ne on siirretty takaisin (backport) vanhaan versioon. Sen tunnistaa päätteestä, kuten +deb13u1 tai ubuntu0.1.
Älä siis koskaan vertaa pelkkää versionumeroa valmistajan verkkosivuun arvioidessasi, oletko haavoittuvainen. Katso jakelusi tietoturvatiedotteita: Debian Security Tracker (security-tracker.debian.org) ja Ubuntu Security Notices (ubuntu.com/security/notices) kertovat jokaisen haavoittuvuuden kohdalla, onko sinun versiosi korjattu.
Muutama sääntö rauhalliseen palvelimeen
- Asenna vain se, mitä tarvitset. Jokainen paketti on koodia, jota pitää päivittää, ja joskus palvelu, joka kuuntelee (oppitunti 5.1).
- Mieluummin jakelusta kuin verkkosivulta. Ohjelmaa, jonka käännät itse tai lataat erillisenä tiedostona,
apt upgradeei päivitä. Silloin sinun on itse seurattava tietoturvatiedotteita. - Lisälähde vain valmistajalta itseltään, omalla avaimella ja
Signed-By-määrityksellä. Älä koskaan lisää avainta "kaikkeen" äläkä koskaan lähdettä tuntemattomalta verkkosivulta (oppitunti 4.3). - Lue, mitä apt kysyy. Päivityksen aikana apt voi kysyä, haluatko korvata muokatun asetustiedoston valmistajan uudella versiolla. Jos et tiedä, mitä olet siihen muuttanut, valitse "keep the local version" (oletus, eli säilytä paikallinen versio) ja katso ero myöhemmin komennolla
diff: uusi versio on tallennettu viereen nimellä.dpkg-dist.
AlmaLinuxissa ja Rocky Linuxissa
Niissä pakettienhallinta on dnf ja paketit ovat .rpm-muotoisia. Komennot muistuttavat apt:n komentoja: dnf check-update (lista), dnf upgrade (päivitys, update ja upgrade yhdessä), dnf install, dnf remove, dnf info. Lähteet ovat hakemistossa /etc/yum.repos.d/*.repo. Paljon lisäohjelmia (kuten fail2ban) tulee erillisestä EPEL-lähteestä, jonka otat ensin käyttöön komennolla dnf install epel-release. Pelkät tietoturvapäivitykset saat näkyviin komennolla dnf updateinfo list --security.
Käytännössä: VPS-näkymä
WebOkéllä, kuten useimmilla muillakin palveluntarjoajilla, VPS:n asennus määrittää jakelun oletuslähteet valmiiksi oikein. Niihin ei yleensä tarvitse koskea. Päivitä palvelin heti ensimmäisen kirjautumisen jälkeen komennoilla apt update ja apt upgrade (oppitunti 1.2), ja ota ennen suuria muutoksia snapshot palveluntarjoajasi hallintapaneelissa.
Yhteenveto
- Debianissa ja Ubuntussa ohjelmat tulevat allekirjoitetuista pakettilähteistä; apt hakee, asentaa, päivittää ja siivoaa.
apt updatehakee vain listan;apt upgradepäivittää poistamatta mitään;apt full-upgradesaa myös poistaa.- Tietoturvapäivitykset tulevat suitesta, jonka nimessä on
-security;apt list --upgradablejaapt-cache policynäyttävät, mistä versio tulee. - Vanhassa versionumerossa, jossa on
+deb13u1taiubuntu0.x, voivat olla kaikki korjaukset (backport): katso jakelusi tietoturvatiedotteita. - Lisälähde vain valmistajalta itseltään, omalla avaimella
Signed-By-määrityksessä.
Tietovisa (quiz)
Tehtävä
Tehtävä Z4.1: Mitkä päivitykset ovat tietoturvapäivityksiä? Esimerkkitiedostossa apt-upgradable.txt on komentojen apt list --upgradable ja apt-cache policy tuloste Debian 13 -palvelimelta. Vastaa: mitkä paketit tulevat tietoturvalähteestä, mikä paketti tulee valmistajan lähteestä Debianin sijaan, mikä openssh-server-versio on nyt asennettuna, ja mikä paketti on tavallinen vakaa päivitys ilman tietoturvasyytä? Ohjelma vertaa vastauksiasi kiinteään vastausavaimeen. Jos sinulla on jo oma palvelin, aja samat komennot ja katso, mitä näet.
Lue lisää
- VPS:n suojaaminen: ensimmäiset viisi minuuttia
- Näin pääset alkuun VPS:si kanssa
- Debianin ylläpitäjän käsikirja, luku 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Käyttöohje
sources.list(5)(deb822-muoto): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
