Modul 4 · 4.1
Pakethantering med apt
Modul 4: Programvara och uppdateringar · Lästid: 10 minuter
Lärandemål: Efter den här lektionen kan du installera, uppdatera och ta bort programvara med apt, du ser varifrån ett paket kommer och du känner igen vilka uppdateringar som är säkerhetsuppdateringar.
Nyckelbegrepp: paket, paketkälla (repository), sources.list, .sources-fil (deb822), signed-by, apt update, apt upgrade, apt full-upgrade, remove, purge, autoremove, apt-cache policy, säkerhetskälla, dnf
Varför en pakethanterare?
På Windows laddar du ner ett installationsprogram från en webbplats. På en Linux-server gör du nästan aldrig så. Programvara kommer som ett paket från en paketkälla (repository): en server hos distributionen med tusentals program, som alla är byggda och testade för din version av Debian eller Ubuntu. Programmet som hämtar, installerar och uppdaterar paketen kallas pakethanterare. På Debian och Ubuntu är det apt (med dpkg under ytan), på AlmaLinux och Rocky Linux är det dnf.
Det ger tre stora fördelar:
- Ett enda kommando uppdaterar allt. Webbservern, SSH-servern, biblioteken och kärnan kommer från samma källa. Du behöver inte kolla på en webbplats för varje program om det finns en ny version.
- Ursprunget är kontrollerat. Varje paketkälla är signerad med en nyckel. apt vägrar paket vars signatur inte stämmer.
- Beroenden sköts åt dig. Behöver nginx ett bibliotek installerar apt det automatiskt och städar bort det senare.
Paketkällorna: varifrån kommer det?
Vilka källor apt använder står i /etc/apt/. Länge var det en enda fil, sources.list, med rader som:
deb http://deb.debian.org/debian bookworm mainUbuntu 24.04 och senare, Debians molnavbilder och allt fler nya installationer använder det nyare deb822-formatet: separata filer med filändelsen .sources i /etc/apt/sources.list.d/. En gammal sources.list kan du konvertera med sudo apt modernize-sources (apt 3, Debian 13). Till exempel 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å här: suite är versionen (trixie är Debian 13, noble är Ubuntu 24.04), component är en del av källan (main på Debian, main, universe, restricted och multiverse på Ubuntu), och Signed-By anger vilken nyckel källan måste vara signerad med. Det sista är viktigt: en nyckel hör till en källa, inte till alla källor på en gång. Lägger du senare till en källa från en tillverkare (Docker, Caddy, PostgreSQL) får den en egen nyckelfil och en egen Signed-By-rad (lektion 9.2).
Källan med -security i namnet är säkerhetskällan. Därifrån kommer säkerhetsuppdateringarna, oftast samma dag som en sårbarhet blir känd. På Ubuntu heter den suiten noble-security (eller namnet på din version).
Använder du fortfarande den gamla sources.list fungerar allt som vanligt. Blanda bara inte samma källa i båda formaten, för då klagar apt på dubbla rader.
update, upgrade och full-upgrade
Skillnaden mellan de här tre är den första fällan för nybörjare.
| Kommando | Vad det gör |
|---|---|
apt update | Hämtar listan över vilka paket och versioner som finns i källorna. Installerar ingenting. |
apt upgrade | Uppdaterar installerade paket till den senaste versionen i listan. Tar aldrig bort något. En uppdatering som skulle kräva att ett annat paket tas bort hoppas över. |
apt full-upgrade | Samma sak, men får också ta bort paket eller installera nya om det behövs. Krävs vid en release-uppgradering (lektion 4.3) och ibland vid en ny kärna. |
Alltså alltid först update, sedan 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](Versionsnumren ovan är ett exempel.) Efter namnet står vilken suite den nya versionen kommer från. Allt med -security är en säkerhetsuppdatering: den vill du installera så snart som möjligt. -updates är andra stabila uppdateringar, som ny tidszonsdata.
Därefter:
anna@web1:~$ sudo apt upgradeapt visar vad som ändras och ber om bekräftelse. Läs listan. Står det "The following packages will be REMOVED" (följande paket kommer att tas bort) händer något ovanligt, och då vill du först veta varför.
Installera, ta bort och städa
anna@web1:~$ sudo apt install nginx
anna@web1:~$ sudo apt remove nginx # programmet borttaget, konfigurationen i /etc finns kvar
anna@web1:~$ sudo apt purge nginx # programmet och konfigurationen borttagna
anna@web1:~$ sudo apt autoremove # rensa bort det som ingen behöver längreSkillnaden mellan remove och purge är praktisk: vill du ta bort något tillfälligt och senare installera det igen med samma inställningar, använd remove. Vill du verkligen börja om från noll, använd purge.
Söka och få mer information:
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 är kommandot du använder när du vill veta varifrån ett paket kommer och vilken version apt kommer att välja. *** står vid den installerade versionen, Candidate är det som en uppgradering skulle installera.
Debian-versioner och versionen av ett program
Ett vanligt klagomål: "Debian har en gammal version av nginx." Det stämmer, och det är med flit. Debian och Ubuntu fryser versionerna när en release ges ut och lägger sedan bara till säkerhetsrättningar och allvarliga felrättningar, utan nya funktioner. Därför kan ett paket med ett "gammalt" versionsnummer ändå ha alla nya säkerhetsrättningar: de har förts tillbaka (backport) till den gamla versionen. Du känner igen det på suffixet, till exempel +deb13u1 eller ubuntu0.1.
Jämför alltså aldrig bara versionsnumret med tillverkarens webbplats för att avgöra om du är sårbar. Titta på din distributions säkerhetsmeddelanden: Debian Security Tracker (security-tracker.debian.org) och Ubuntu Security Notices (ubuntu.com/security/notices) visar för varje sårbarhet om din version är rättad.
Några regler för en lugn server
- Installera bara det du behöver. Varje paket är kod som måste uppdateras och ibland en tjänst som lyssnar (lektion 5.1).
- Hellre från distributionen än från en webbplats. Ett program som du kompilerar själv eller laddar ner som en lös fil uppdateras inte av
apt upgrade. Då måste du själv bevaka säkerhetsmeddelandena. - En extra källa bara från tillverkaren själv, med en egen nyckel och
Signed-By. Lägg aldrig till en nyckel "för allt" och aldrig en källa från en okänd webbplats (lektion 4.3). - Läs vad apt frågar. Vid en uppgradering kan apt fråga om du vill ersätta en ändrad konfigurationsfil med tillverkarens nya version. Vet du inte vad du har ändrat, välj "keep the local version" (behåll den lokala versionen, standardvalet) och titta senare på skillnaden med
diff: den nya versionen ligger bredvid som.dpkg-dist.
På AlmaLinux och Rocky Linux
Där heter pakethanteraren dnf och paketen är .rpm. Kommandona liknar apt: dnf check-update (listan), dnf upgrade (uppdatera, update och upgrade i ett), dnf install, dnf remove, dnf info. Källorna finns i /etc/yum.repos.d/*.repo. Mycket extra programvara (som fail2ban) kommer från den separata källan EPEL, som du först slår på med dnf install epel-release. Bara säkerhetsuppdateringar visar du med dnf updateinfo list --security.
I praktiken: VPS-panelen
Hos WebOké, och hos de flesta andra leverantörer, ställer installationen av din VPS redan in distributionens standardkällor korrekt. Oftast behöver du inte ändra något där. Uppdatera servern direkt efter första inloggningen med apt update och apt upgrade (lektion 1.2), och ta en ögonblicksbild (snapshot) i leverantörens panel innan du gör större ändringar.
Sammanfattning
- På Debian och Ubuntu kommer programvara från signerade paketkällor; apt hämtar, installerar, uppdaterar och städar.
apt updatehämtar bara listan;apt upgradeuppdaterar utan att ta bort något;apt full-upgradefår också ta bort.- Säkerhetsuppdateringar kommer från suiten med
-securityi namnet;apt list --upgradableochapt-cache policyvisar varifrån en version kommer. - Ett gammalt versionsnummer med
+deb13u1ellerubuntu0.xkan ha alla rättningar (backport): titta på din distributions säkerhetsmeddelanden. - En extra källa bara från tillverkaren själv, med en egen nyckel i
Signed-By.
Quiz
Uppgift
Uppgift Z4.1: Vilka uppdateringar är säkerhetsuppdateringar? Exempelfilen apt-upgradable.txt innehåller utdata från apt list --upgradable och apt-cache policy på en Debian 13-server. Svara på: vilka paket kommer från säkerhetskällan, vilket paket kommer från en tillverkares källa i stället för från Debian, vilken version av openssh-server är installerad just nu, och vilket paket är en vanlig stabil uppdatering utan säkerhetsskäl? Programmet jämför med en fast facit. Har du redan en egen server, kör samma kommandon och se vad du får.
Läs mer
- Säkra din VPS: de första fem minuterna
- Kom igång med din VPS
- Debians handbok för systemadministratörer, kapitel 6 (apt): https://debian-handbook.info/browse/stable/apt.html
- Manualsidan för
sources.list(5)(deb822-formatet): https://manpages.debian.org/trixie/apt/sources.list.5.en.html - Debian Security Tracker: https://security-tracker.debian.org/tracker/
