Modul 4 · 4.1
Pakkehåndtering med apt
Modul 4: Programvare og oppdateringer · Lesetid: 10 minutter
Læringsmål: Etter denne leksjonen kan du installere, oppdatere og fjerne programvare med apt, du ser hvor en pakke kommer fra, og du kjenner igjen hvilke oppdateringer som er sikkerhetsoppdateringer.
Nøkkelbegreper: pakke, pakkekilde (repository), sources.list, .sources-fil (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, sikkerhetskilde, dnf
Hvorfor en pakkebehandler?
På Windows laster du ned et installasjonsprogram fra et nettsted. På en Linux-server gjør du nesten aldri det. Programvare kommer som en pakke fra en pakkekilde (repository): en server fra distribusjonen med tusenvis av programmer, som alle er bygget og testet for din versjon av Debian eller Ubuntu. Programmet som henter, installerer og oppdaterer disse pakkene, kalles pakkebehandleren. På Debian og Ubuntu er det apt (med dpkg under), på AlmaLinux og Rocky Linux dnf.
Det har tre store fordeler:
- Én kommando oppdaterer alt. Webserveren, SSH-serveren, bibliotekene og kjernen kommer fra samme kilde. Du trenger ikke sjekke et nettsted for hvert program for å se om det finnes en ny versjon.
- Opprinnelsen er kontrollert. Hver pakkekilde er signert med en nøkkel. apt avviser pakker med en signatur som ikke stemmer.
- Avhengigheter ordnes for deg. Trenger nginx et bibliotek, installerer apt det automatisk og rydder det bort igjen senere.
Pakkekildene: hvor kommer det fra?
Hvilke kilder apt bruker, står i /etc/apt/. Lenge 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 stadig flere nye installasjoner bruker den nyere deb822-formen: egne filer med endelsen .sources i /etc/apt/sources.list.d/. En gammel sources.list kan du gjøre om 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.gpgLes det slik: suiten er versjonen (trixie er Debian 13; noble er Ubuntu 24.04), komponenten er en del av kilden (main hos Debian; main, universe, restricted og multiverse hos Ubuntu), og Signed-By sier hvilken nøkkel kilden må være signert med. Det siste er viktig: en nøkkel hører til én kilde, ikke til alle kilder samtidig. Legger du senere til en kilde fra en utvikler (Docker, Caddy, PostgreSQL), får den sin egen nøkkelfil og sin egen Signed-By-linje (leksjon 9.2).
Kilden med -security i navnet er sikkerhetskilden. Derfra kommer sikkerhetsoppdateringene, som regel samme dag som et sikkerhetshull blir kjent. På Ubuntu heter den suiten noble-security (eller navnet på din versjon).
Bruker du fortsatt den gamle sources.list, fungerer alt helt fint. Bare ikke bland den samme kilden i begge former, for da klager apt over doble linjer.
update, upgrade og full-upgrade
Forskjellen mellom disse tre er den første fellen for nybegynnere.
| Kommando | Hva den gjør |
|---|---|
apt update | Henter listen over hvilke pakker og versjoner som finnes i kildene. Installerer ingenting. |
apt upgrade | Oppdaterer installerte pakker til den nyeste versjonen fra den listen. Fjerner aldri noe. En oppdatering som ville kreve at en annen pakke fjernes, blir hoppet over. |
apt full-upgrade | Det samme, men kan også fjerne pakker eller installere nye når det trengs. Nødvendig ved en release-oppgradering (leksjon 4.3) og noen ganger ved en ny kjerne. |
Så alltid først update, deretter 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](Versjonsnumrene over er et eksempel.) Etter navnet står det hvilken suite den nye versjonen kommer fra. Alt med -security er en sikkerhetsoppdatering: den vil du ha så fort som mulig. -updates er andre stabile oppdateringer, som nye tidssonedata.
Deretter:
anna@web1:~$ sudo apt upgradeapt viser hva som endres og ber om bekreftelse. Les den listen. Står det "The following packages will be REMOVED" (disse pakkene blir fjernet), er det noe spesielt på gang, og da vil du først vite hvorfor.
Installere, fjerne og rydde opp
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programmet fjernet, konfigurasjonen i /etc blir værende
anna@web1:~$ sudo apt purge nginx # programmet og konfigurasjonen fjernet
anna@web1:~$ sudo apt autoremove # rydd opp i det ingen trenger lengerForskjellen mellom remove og purge er nyttig: vil du fjerne noe midlertidig og installere det igjen senere med de samme innstillingene, bruker du remove. Vil du virkelig begynne på nytt, purge.
Søke og få mer informasjon:
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 bruker når du vil vite hvor en pakke kommer fra og hvilken versjon apt vil velge. *** står ved den installerte versjonen, Candidate er det en oppgradering ville installere.
Debian-versjoner og versjonen av et program
En vanlig klage: "Debian har en gammel versjon av nginx." Det stemmer, og det er med vilje. Debian og Ubuntu fryser versjonene når en release kommer ut, og legger deretter bare til sikkerhetsrettelser og alvorlige reparasjoner, uten nye funksjoner. Derfor kan en pakke med et "gammelt" versjonsnummer likevel ha alle nyere sikkerhetsrettelser: de er tilbakeført (backport) til den gamle versjonen. Du kjenner det igjen på endelsen, som +deb13u1 eller ubuntu0.1.
Sammenlign derfor aldri bare versjonsnummeret med utviklerens nettsted for å vurdere om du er sårbar. Se på sikkerhetsvarslene fra distribusjonen din: Debian Security Tracker (security-tracker.debian.org) og Ubuntu Security Notices (ubuntu.com/security/notices) sier for hvert sikkerhetshull om din versjon er rettet.
Noen regler for en rolig server
- Installer bare det du trenger. Hver pakke er kode som må oppdateres, og noen ganger en tjeneste som lytter (leksjon 5.1).
- Heller fra distribusjonen enn fra et nettsted. Et program du kompilerer selv eller laster ned som en løs fil, blir ikke oppdatert av
apt upgrade. Da må du selv følge med på sikkerhetsvarslene. - En ekstra kilde bare fra utvikleren selv, med egen nøkkel og
Signed-By. Legg aldri til en nøkkel "for alt", og aldri en kilde fra et ukjent nettsted (leksjon 4.3). - Les hva apt spør om. Ved en oppgradering kan apt spørre om du vil erstatte en endret konfigurasjonsfil med utviklerens nye versjon. Vet du ikke hva du har endret, velger du "keep the local version" (behold den lokale versjonen, standardvalget) og ser senere på forskjellen med
diff: den nye versjonen ligger ved siden av som.dpkg-dist.
På AlmaLinux og Rocky Linux
Der heter pakkebehandleren dnf, og pakkene heter .rpm. Kommandoene ligner på apt: dnf check-update (listen), dnf upgrade (oppdatere, update og upgrade i ett), dnf install, dnf remove, dnf info. Kildene ligger i /etc/yum.repos.d/*.repo. Mye ekstra programvare (som fail2ban) kommer fra den separate kilden EPEL, som du først slår på med dnf install epel-release. Bare sikkerhetsoppdateringer viser du med dnf updateinfo list --security.
I praksis: VPS-skjermen
Hos WebOké, og hos de fleste andre leverandører, setter installasjonen av VPS-en din opp distribusjonens standardkilder riktig. Du trenger som regel ikke endre noe der. Oppdater serveren rett etter første innlogging med apt update og apt upgrade (leksjon 1.2), og ta et snapshot i leverandørens panel før store endringer.
Sammendrag
- På Debian og Ubuntu kommer programvare fra signerte pakkekilder; apt henter, installerer, oppdaterer og rydder opp.
apt updatehenter bare listen;apt upgradeoppdaterer uten å fjerne;apt full-upgradekan også fjerne.- Sikkerhetsoppdateringer kommer fra suiten med
-securityi navnet;apt list --upgradableogapt-cache policyviser hvor en versjon kommer fra. - Et gammelt versjonsnummer med
+deb13u1ellerubuntu0.xkan ha alle rettelser (backport): se på sikkerhetsvarslene fra distribusjonen din. - En ekstra kilde bare fra utvikleren selv, med egen nøkkel i
Signed-By.
Quiz
Oppgave
Oppgave Z4.1: Hvilke oppdateringer er sikkerhetsoppdateringer? Eksempelfilen apt-upgradable.txt inneholder utdataene fra apt list --upgradable og apt-cache policy på en Debian 13-server. Svar på: hvilke pakker kommer fra sikkerhetskilden, hvilken pakke kommer fra en kilde fra en utvikler i stedet for Debian, hvilken versjon av openssh-server er installert nå, og hvilken pakke er en vanlig stabil oppdatering uten sikkerhetsgrunn? Programmet sammenligner med fasiten. Har du allerede din egen server, kjører du de samme kommandoene og ser hva du får.
Les mer
- Sikre VPS-en din: de første fem minuttene
- Kom i gang med din VPS
- Debian-håndboken for systemadministratorer, kapittel 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Manualside
sources.list(5)(deb822-formen): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
