Module 4 · 4.1
Pakketbeheer met apt
Module 4: Software en updates · Leestijd: 10 minuten
Leerdoel: Na deze les kun je software installeren, bijwerken en verwijderen met apt, zie je waar een pakket vandaan komt en herken je welke updates beveiligingsupdates zijn.
Kernbegrippen: pakket, pakketbron (repository), sources.list, .sources-bestand (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, beveiligingsbron, dnf
Waarom een pakketbeheerder?
Op Windows download je een installatieprogramma van een website. Op een Linux-server doe je dat bijna nooit. Software komt als pakket uit een pakketbron (repository): een server van de distributie met duizenden programma's, die allemaal voor jouw versie van Debian of Ubuntu zijn gebouwd en getest. Het programma dat die pakketten ophaalt, installeert en bijwerkt, heet de pakketbeheerder. Op Debian en Ubuntu is dat apt (met daaronder dpkg), op AlmaLinux en Rocky Linux dnf.
Dat heeft drie grote voordelen:
- Eén commando werkt alles bij. De webserver, de SSH-server, de bibliotheken en de kernel komen uit dezelfde bron. Je hoeft niet per programma op een website te kijken of er een nieuwe versie is.
- De herkomst is gecontroleerd. Elke pakketbron is ondertekend met een sleutel. apt weigert pakketten waarvan de handtekening niet klopt.
- Afhankelijkheden worden geregeld. Heeft nginx een bibliotheek nodig, dan installeert apt die er automatisch bij, en ruimt hem later weer op.
De pakketbronnen: waar komt het vandaan?
Welke bronnen apt gebruikt, staat in /etc/apt/. Lange tijd was dat één bestand sources.list met regels als:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 en later, de cloud-images van Debian en steeds meer nieuwe installaties gebruiken de nieuwere deb822-vorm: losse bestanden met de extensie .sources in /etc/apt/sources.list.d/. Een oude sources.list omzetten kan met sudo apt modernize-sources (apt 3, Debian 13). Bijvoorbeeld op 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.gpgLees het zo: de suite is de versie (trixie is Debian 13; noble is Ubuntu 24.04), de component is een deel van de bron (main bij Debian; main, universe, restricted en multiverse bij Ubuntu), en Signed-By zegt met welke sleutel de bron ondertekend moet zijn. Dat laatste is belangrijk: een sleutel hoort bij één bron, niet bij alle bronnen tegelijk. Voeg je later een bron toe van een maker (Docker, Caddy, PostgreSQL), dan krijgt die zijn eigen sleutelbestand en zijn eigen Signed-By-regel (les 9.2).
De bron met -security in de naam is de beveiligingsbron. Daar komen de beveiligingsupdates uit, meestal op dezelfde dag dat een lek bekend wordt. Op Ubuntu heet die suite noble-security (of de naam van jouw versie).
Gebruik je nog de oude sources.list, dan werkt alles gewoon. Mix alleen niet dezelfde bron in beide vormen, want dan klaagt apt over dubbele regels.
update, upgrade en full-upgrade
Het verschil tussen deze drie begrippen is de eerste valkuil voor beginners.
| Commando | Wat het doet |
|---|---|
apt update | Haalt de lijst op van welke pakketten en versies er in de bronnen staan. Installeert niets. |
apt upgrade | Werkt geïnstalleerde pakketten bij naar de nieuwste versie uit die lijst. Verwijdert nooit iets. Een update die een ander pakket zou moeten verwijderen, wordt overgeslagen. |
apt full-upgrade | Hetzelfde, maar mag ook pakketten verwijderen of nieuwe installeren als dat nodig is. Nodig bij een release-upgrade (les 4.3) en soms bij een nieuwe kernel. |
Dus altijd eerst update, dan 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](De versienummers hierboven zijn een voorbeeld.) Achter de naam staat uit welke suite de nieuwe versie komt. Alles met -security is een beveiligingsupdate: die wil je zo snel mogelijk. -updates zijn andere stabiele updates, zoals nieuwe tijdzonegegevens.
Daarna:
anna@web1:~$ sudo apt upgradeapt laat zien wat er verandert en vraagt om bevestiging. Lees die lijst. Staat er "The following packages will be REMOVED", dan is er iets bijzonders aan de hand en wil je eerst weten waarom.
Installeren, verwijderen en opruimen
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programma weg, configuratie in /etc blijft
anna@web1:~$ sudo apt purge nginx # programma en configuratie weg
anna@web1:~$ sudo apt autoremove # opruimen wat niemand meer nodig heeftHet verschil tussen remove en purge is handig: wil je iets tijdelijk weghalen en later opnieuw installeren met dezelfde instellingen, gebruik dan remove. Wil je echt schoon beginnen, purge.
Zoeken en meer informatie:
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 is het commando dat je gebruikt als je wilt weten waar een pakket vandaan komt en welke versie apt zal kiezen. De *** staat bij de geïnstalleerde versie, Candidate is wat een upgrade zou installeren.
Debian-versies en de versie van een programma
Een veelgehoorde klacht: "In Debian zit een oude versie van nginx." Dat klopt en het is expres zo. Debian en Ubuntu bevriezen de versies bij de uitgave van een release en voegen daarna alleen beveiligingsfixes en ernstige reparaties toe, zonder nieuwe functies. Daarom kan een pakket met een "oud" versienummer toch alle recente beveiligingsfixes hebben: die zijn teruggezet (backport) in de oude versie. Je herkent dat aan het achtervoegsel, zoals +deb13u1 of ubuntu0.1.
Vergelijk dus nooit alleen het versienummer met de website van de maker om te beoordelen of je kwetsbaar bent. Kijk naar de beveiligingsmeldingen van je distributie: de Debian Security Tracker (security-tracker.debian.org) en de Ubuntu Security Notices (ubuntu.com/security/notices) zeggen per lek of jouw versie gerepareerd is.
Een paar regels voor een rustige server
- Installeer alleen wat je nodig hebt. Elk pakket is code die bijgewerkt moet worden en soms een dienst die luistert (les 5.1).
- Liever uit de distributie dan van een website. Een programma dat je zelf compileert of als los bestand downloadt, werkt
apt upgradeniet bij. Jij moet dan zelf de beveiligingsmeldingen volgen. - Een extra bron alleen van de maker zelf, met een eigen sleutel en
Signed-By. Nooit een sleutel "voor alles" toevoegen en nooit een bron van een onbekende website (les 4.3). - Lees wat apt vraagt. Bij een upgrade kan apt vragen of je een gewijzigd configuratiebestand wilt vervangen door de nieuwe versie van de maker. Weet je niet wat je eraan veranderd hebt, kies dan "keep the local version" (de standaard) en kijk later met
diffnaar het verschil: de nieuwe versie staat ernaast als.dpkg-dist.
Op AlmaLinux en Rocky Linux
Daar heet de pakketbeheerder dnf en heten de pakketten .rpm. De commando's lijken op die van apt: dnf check-update (de lijst), dnf upgrade (bijwerken, update en upgrade in één), dnf install, dnf remove, dnf info. Bronnen staan in /etc/yum.repos.d/*.repo. Veel extra software (zoals fail2ban) komt uit de aparte bron EPEL, die je eerst aanzet met dnf install epel-release. Alleen beveiligingsupdates tonen kan met dnf updateinfo list --security.
In de praktijk: het VPS-scherm
Bij WebOké, en bij de meeste andere aanbieders, zet de installatie van je VPS de standaardbronnen van de distributie al goed. Je hoeft daar meestal niets aan te veranderen. Werk de server meteen na de eerste login bij met apt update en apt upgrade (les 1.2), en maak vóór grote wijzigingen een snapshot in het paneel van je aanbieder.
Samenvatting
- Software komt op Debian en Ubuntu uit ondertekende pakketbronnen; apt haalt op, installeert, werkt bij en ruimt op.
apt updatehaalt alleen de lijst op;apt upgradewerkt bij zonder te verwijderen;apt full-upgrademag ook verwijderen.- Beveiligingsupdates komen uit de suite met
-securityin de naam;apt list --upgradableenapt-cache policylaten zien waar een versie vandaan komt. - Een oud versienummer met
+deb13u1ofubuntu0.xkan alle fixes hebben (backport): kijk naar de beveiligingsmeldingen van je distributie. - Een extra bron alleen van de maker zelf, met een eigen sleutel in
Signed-By.
Quiz
Opdracht
Opdracht Z4.1: Welke updates zijn beveiligingsupdates? In het voorbeeldbestand apt-upgradable.txt staat de uitvoer van apt list --upgradable en apt-cache policy van een Debian 13-server. Beantwoord: welke pakketten komen uit de beveiligingsbron, welk pakket komt uit een bron van een maker in plaats van Debian, welke versie van openssh-server is nu geïnstalleerd, en welk pakket is een gewone stabiele update zonder beveiligingsreden? Het programma vergelijkt met de vaste sleutel. Heb je al een eigen server, draai dan dezelfde commando's en kijk wat je ziet.
Verder lezen
- Je VPS beveiligen: de eerste vijf minuten
- Aan de slag met je VPS
- Debian-handboek voor systeembeheerders, hoofdstuk 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Handleiding
sources.list(5)(deb822-vorm): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
