Direct naar de inhoud

Cookie-instellingen

Kies per soort welke cookies je toestaat. Je kunt je keuze altijd wijzigen via Cookie-instellingen onderaan elke pagina. Privacyverklaring

Noodzakelijk

Altijd aan

Nodig om in te loggen, je winkelwagen te bewaren en je keuzes te onthouden. Deze staan altijd aan.

Welke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: je sessie en ingelogd blijven
  • weboke_basket: je winkelwagen
  • wkBtwIncl: prijzen met of zonder btw tonen
  • wok_cookies: je cookiekeuze, 12 maanden

Meet welke advertentie tot een bezoek of bestelling leidt, zodat we niet betalen voor advertenties die niets doen.

Welke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), tot 90 dagen
  • OpenAI Ads, advertenties in ChatGPT
  • wok_aff: via welke partner je bij ons kwam (affiliateprogramma), 60 dagen

4,6

Land en taal

Elk land heeft zijn eigen site, met prijzen en btw van dat land.

Bekijken

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:

  1. 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.
  2. De herkomst is gecontroleerd. Elke pakketbron is ondertekend met een sleutel. apt weigert pakketten waarvan de handtekening niet klopt.
  3. 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 main

Ubuntu 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.gpg

Lees 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.

CommandoWat het doet
apt updateHaalt de lijst op van welke pakketten en versies er in de bronnen staan. Installeert niets.
apt upgradeWerkt 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-upgradeHetzelfde, 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 upgrade

apt 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 heeft

Het 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 Packages

apt-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 upgrade niet 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 diff naar 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 update haalt alleen de lijst op; apt upgrade werkt bij zonder te verwijderen; apt full-upgrade mag ook verwijderen.
  • Beveiligingsupdates komen uit de suite met -security in de naam; apt list --upgradable en apt-cache policy laten zien waar een versie vandaan komt.
  • Een oud versienummer met +deb13u1 of ubuntu0.x kan 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

1. Je typt sudo apt upgrade op een server waar je al een week niets hebt gedaan, en apt meldt dat alles bijgewerkt is. Toch weet je dat er gisteren een OpenSSH-update is uitgekomen. Wat is de waarschijnlijkste verklaring?



2. Wat is het verschil tussen apt remove en apt purge?



3. In apt list --upgradable staat openssh-server/noble-security .... Wat zegt het deel noble-security?



4. Op de website van een programma staat versie 2.8, terwijl Debian 2.6 met +deb13u2 levert. Een collega zegt: "Debian is dus kwetsbaar voor alle lekken die in 2.7 en 2.8 zijn opgelost." Wat klopt?



5. Waarom hoort bij een extra pakketbron een eigen sleutel met Signed-By?



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.

Opdracht Z4.1: Welke updates zijn beveiligingsupdates?

Bestand bij deze opdracht: apt-upgradable.txt





Wat je invult en wat we vinden, slaan we niet op. Je browser onthoudt je antwoorden en of je de opdracht hebt gehaald. Ben je aangemeld, dan bewaren we alleen dat je de opdracht (bijna) goed had in Mijn cursussen; daar kun je het ook verwijderen.

Verder lezen

Even geduld…

Stel je domeinen in

Regel per domein de nameservers, de koppeling aan je hosting en wie de eigenaar wordt.

Je domeinen laden…