Modul 4 · 4.1
Pakkehåndtering med apt
Modul 4: Software og opdateringer · Læsetid: 10 minutter
Læringsmål: Efter denne lektion kan du installere, opdatere og fjerne software med apt, du kan se hvor en pakke kommer fra, og du kan genkende hvilke opdateringer der er sikkerhedsopdateringer.
Centrale begreber: pakke, pakkekilde (repository), sources.list, .sources-fil (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, sikkerhedskilde, dnf
Hvorfor en pakkehåndtering?
På Windows henter du et installationsprogram fra et website. På en Linux-server gør du det næsten aldrig. Software kommer som en pakke fra en pakkekilde (repository): en server fra distributionen med tusindvis af programmer, der alle er bygget og testet til din version af Debian eller Ubuntu. Programmet, der henter, installerer og opdaterer pakkerne, kaldes pakkehåndteringen. På Debian og Ubuntu er det apt (med dpkg nedenunder), på AlmaLinux og Rocky Linux dnf.
Det giver tre store fordele:
- Én kommando opdaterer alt. Webserveren, SSH-serveren, bibliotekerne og kernen kommer fra samme kilde. Du behøver ikke tjekke et website for hvert program for at se, om der er en ny version.
- Oprindelsen er kontrolleret. Hver pakkekilde er signeret med en nøgle. apt afviser pakker, hvis signatur ikke passer.
- Afhængigheder håndteres for dig. Har nginx brug for et bibliotek, installerer apt det automatisk og rydder det op igen senere.
Pakkekilderne: hvor kommer det fra?
Hvilke kilder apt bruger, står i /etc/apt/. I lang tid var det én fil, sources.list, med linjer som:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 og nyere, Debians cloud-images og flere og flere nye installationer bruger den nyere deb822-form: separate filer med endelsen .sources i /etc/apt/sources.list.d/. En gammel sources.list kan du konvertere med sudo apt modernize-sources (apt 3, Debian 13). For eksempel på 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.gpgLæs det sådan: suite er versionen (trixie er Debian 13; noble er Ubuntu 24.04), component er en del af kilden (main hos Debian; main, universe, restricted og multiverse hos Ubuntu), og Signed-By angiver, hvilken nøgle kilden skal være signeret med. Det sidste er vigtigt: en nøgle hører til én kilde, ikke til alle kilder på én gang. Tilføjer du senere en kilde fra en udvikler (Docker, Caddy, PostgreSQL), får den sin egen nøglefil og sin egen Signed-By-linje (lektion 9.2).
Kilden med -security i navnet er sikkerhedskilden. Herfra kommer sikkerhedsopdateringerne, som regel samme dag som et hul bliver kendt. På Ubuntu hedder den suite noble-security (eller navnet på din version).
Bruger du stadig den gamle sources.list, virker alt helt normalt. Bland bare ikke den samme kilde i begge former, for så klager apt over dobbelte linjer.
update, upgrade og full-upgrade
Forskellen mellem disse tre begreber er den første faldgrube for begyndere.
| Kommando | Hvad den gør |
|---|---|
apt update | Henter listen over hvilke pakker og versioner, der findes i kilderne. Installerer ingenting. |
apt upgrade | Opdaterer installerede pakker til den nyeste version fra listen. Fjerner aldrig noget. En opdatering, der ville kræve, at en anden pakke fjernes, springes over. |
apt full-upgrade | Det samme, men må også fjerne pakker eller installere nye, hvis det er nødvendigt. Nødvendig ved en release-opgradering (lektion 4.3) og nogle gange ved en ny kerne. |
Altså altid først update, derefter 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](Versionsnumrene ovenfor er et eksempel.) Efter navnet står, hvilken suite den nye version kommer fra. Alt med -security er en sikkerhedsopdatering: den vil du have installeret så hurtigt som muligt. -updates er andre stabile opdateringer, for eksempel nye tidszonedata.
Derefter:
anna@web1:~$ sudo apt upgradeapt viser, hvad der ændres, og beder om bekræftelse. Læs listen. Står der "The following packages will be REMOVED" (følgende pakker bliver fjernet), er der noget særligt på færde, og så vil du først vide hvorfor.
Installere, fjerne og rydde op
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programmet væk, konfigurationen i /etc bliver
anna@web1:~$ sudo apt purge nginx # programmet og konfigurationen væk
anna@web1:~$ sudo apt autoremove # ryd op i det, ingen længere har brug forForskellen mellem remove og purge er praktisk: vil du fjerne noget midlertidigt og senere installere det igen med de samme indstillinger, så brug remove. Vil du starte helt forfra, brug purge.
Søgning og flere oplysninger:
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 er kommandoen, du bruger, når du vil vide, hvor en pakke kommer fra, og hvilken version apt vil vælge. *** står ved den installerede version, Candidate er det, en opgradering ville installere.
Debian-versioner og versionen af et program
En klage, man ofte hører: "Debian har en gammel version af nginx." Det er rigtigt, og det er med vilje. Debian og Ubuntu fryser versionerne, når en release udkommer, og tilføjer derefter kun sikkerhedsrettelser og alvorlige fejlrettelser, uden nye funktioner. Derfor kan en pakke med et "gammelt" versionsnummer alligevel have alle nyere sikkerhedsrettelser: de er tilbageført (backport) til den gamle version. Du kan se det på endelsen, for eksempel +deb13u1 eller ubuntu0.1.
Sammenlign derfor aldrig kun versionsnummeret med udviklerens website for at vurdere, om du er sårbar. Se på din distributions sikkerhedsmeddelelser: Debian Security Tracker (security-tracker.debian.org) og Ubuntu Security Notices (ubuntu.com/security/notices) fortæller for hvert hul, om din version er rettet.
Et par regler for en rolig server
- Installer kun det, du har brug for. Hver pakke er kode, der skal opdateres, og nogle gange en tjeneste, der lytter (lektion 5.1).
- Hellere fra distributionen end fra et website. Et program, du selv kompilerer eller henter som en løs fil, bliver ikke opdateret af
apt upgrade. Så skal du selv følge med i sikkerhedsmeddelelserne. - En ekstra kilde kun fra udvikleren selv, med sin egen nøgle og
Signed-By. Tilføj aldrig en nøgle "til alt", og aldrig en kilde fra et ukendt website (lektion 4.3). - Læs, hvad apt spørger om. Ved en opgradering kan apt spørge, om du vil erstatte en ændret konfigurationsfil med udviklerens nye version. Ved du ikke, hvad du har ændret i den, så vælg "keep the local version" (behold den lokale version, standardvalget) og se senere forskellen med
diff: den nye version ligger ved siden af som.dpkg-dist.
På AlmaLinux og Rocky Linux
Her hedder pakkehåndteringen dnf, og pakkerne hedder .rpm. Kommandoerne ligner apts: dnf check-update (listen), dnf upgrade (opdatering, update og upgrade i én), dnf install, dnf remove, dnf info. Kilderne ligger i /etc/yum.repos.d/*.repo. Meget ekstra software (som fail2ban) kommer fra den separate kilde EPEL, som du først slår til med dnf install epel-release. Kun sikkerhedsopdateringer kan du vise med dnf updateinfo list --security.
I praksis: VPS-skærmen
Hos WebOké, og hos de fleste andre udbydere, sætter installationen af din VPS allerede distributionens standardkilder korrekt op. Du behøver som regel ikke ændre noget. Opdater serveren lige efter første login med apt update og apt upgrade (lektion 1.2), og tag et snapshot i din udbyders panel før store ændringer.
Opsummering
- På Debian og Ubuntu kommer software fra signerede pakkekilder; apt henter, installerer, opdaterer og rydder op.
apt updatehenter kun listen;apt upgradeopdaterer uden at fjerne;apt full-upgrademå også fjerne.- Sikkerhedsopdateringer kommer fra suiten med
-securityi navnet;apt list --upgradableogapt-cache policyviser, hvor en version kommer fra. - Et gammelt versionsnummer med
+deb13u1ellerubuntu0.xkan have alle rettelser (backport): se på din distributions sikkerhedsmeddelelser. - En ekstra kilde kun fra udvikleren selv, med sin egen nøgle i
Signed-By.
Quiz
Opgave
Opgave Z4.1: Hvilke opdateringer er sikkerhedsopdateringer? I eksempelfilen apt-upgradable.txt står output fra apt list --upgradable og apt-cache policy fra en Debian 13-server. Svar på: hvilke pakker kommer fra sikkerhedskilden, hvilken pakke kommer fra en udviklers kilde i stedet for Debian, hvilken version af openssh-server er installeret nu, og hvilken pakke er en almindelig stabil opdatering uden sikkerhedsmæssig grund? Programmet sammenligner med den faste nøgle. Har du allerede din egen server, så kør de samme kommandoer og se, hvad du får.
Læs mere
- Sikr din VPS: de første fem minutter
- Kom i gang med din VPS
- Debian-håndbogen for systemadministratorer, kapitel 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Manual for
sources.list(5)(deb822-form): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
- VPS: fra første login til sikker server 3.3: Opdateringer og automatiske opdateringer
