Pakethanterare

Illustration av en pakethanterare som används för att hämta ny programvara. Manuella åtgärder kan omfatta godkännande av ett licensavtal eller val av vissa paketspecifika konfigurationsalternativ.

Ett programvarupaket är en arkivfil som innehåller ett datorprogram samt nödvändiga metadata för distributionen av det. Datorprogrammet kan finnas i källkod som först måste kompileras och byggas. Paketmetadata omfattar paketbeskrivning, paketversion och beroenden (andra paket som måste installeras i förväg).

Pakethanterare har till uppgift att hitta, installera, underhålla eller avinstallera programvarupaket på användarens kommando. Typiska funktioner i ett pakethanteringssystem är bland annat följande:

  • Arbeta med filarkiverare för att extrahera paketarkiv
  • Säkerställa paketens integritet och äkthet genom att verifiera deras kontrollsummor respektive digitala certifikat
  • Söka upp, hämta, installera eller uppdatera befintlig programvara från ett programvaruarkiv eller en app-butik
  • Gruppera paketen efter funktion för att minska användarens förvirring
  • Hantera beroenden för att se till att ett paket installeras tillsammans med alla paket det kräver, och på så sätt undvika ”beroendehelvetet”

Utmaningar med delade bibliotekRedigera

Datorsystem som förlitar sig på dynamisk bibliotekslänkning, i stället för statisk bibliotekslänkning, delar exekverbara bibliotek med maskininstruktioner mellan paket och program. I dessa system leder komplexa förhållanden mellan olika paket som kräver olika versioner av bibliotek till en utmaning som i vardagligt tal kallas ”beroendehelvetet”. I Microsoft Windows-system kallas detta även för ”DLL-helvetet” när man arbetar med dynamiskt länkade bibliotek. En bra pakethantering är avgörande för dessa system. Framework-systemet från OPENSTEP var ett försök att lösa detta problem genom att tillåta att flera versioner av bibliotek installeras samtidigt och att programvarupaket anger vilken version de länkas mot.

Frontender för lokalt kompilerade paketRedigera

Systemadministratörer kan installera och underhålla programvara med hjälp av andra verktyg än pakethanteringsprogram. En lokal administratör kan till exempel hämta opaketerad källkod, kompilera den och installera den. Detta kan leda till att tillståndet i det lokala systemet inte längre är synkroniserat med tillståndet i pakethanterarens databas. Den lokala administratören måste då vidta ytterligare åtgärder, t.ex. hantera vissa beroenden manuellt eller integrera ändringarna i pakethanteraren.

Det finns verktyg för att se till att lokalt kompilerade paket integreras i pakethanteringen. För distributioner baserade på .deb- och .rpm-filer samt Slackware Linux finns CheckInstall, och för receptbaserade system som Gentoo Linux och hybridsystem som Arch Linux är det möjligt att först skriva ett recept som sedan ser till att paketet passar in i den lokala paketdatabasen.

Underhåll av konfigurationEdit

Partikulärt besvärligt vid programvaruuppgraderingar är uppgraderingar av konfigurationsfiler. Eftersom pakethanterare, åtminstone på Unix-system, har sitt ursprung som tillägg till verktyg för arkivering av filer, kan de vanligtvis bara antingen skriva över eller behålla konfigurationsfiler, snarare än att tillämpa regler på dem. Det finns undantag från detta ?som vanligtvis gäller kärnkonfiguration (som, om den bryts, gör datorn obrukbar efter en omstart). Problem kan uppstå om konfigurationsfilernas format ändras; till exempel om den gamla konfigurationsfilen inte uttryckligen inaktiverar nya alternativ som bör inaktiveras. Vissa pakethanterare, till exempel Debians dpkg, tillåter konfiguration under installationen. I andra situationer är det önskvärt att installera paket med standardkonfigurationen och sedan skriva över denna konfiguration, till exempel vid huvudlösa installationer på ett stort antal datorer. Denna typ av förkonfigurerad installation stöds också av dpkg.

RepositoriesEdit

För att ge användarna mer kontroll över vilka typer av programvaror de tillåter att installeras på deras system (och ibland på grund av juridiska skäl eller bekvämlighetsskäl från distributörernas sida), hämtas programvaror ofta från ett antal programvaruupplagor.

Undertryckande av uppgraderingEdit

När en användare interagerar med pakethanteringsprogrammet för att åstadkomma en uppgradering är det vanligt att användaren får en lista över de åtgärder som skall utföras (vanligen en lista över de paket som skall uppgraderas och eventuellt med angivande av det gamla och det nya versionsnumret), och att användaren antingen kan acceptera uppgraderingen som en helhet eller välja ut enskilda paket för uppgradering. Många pakethanterare kan konfigureras så att vissa paket aldrig uppgraderas, eller så att de endast uppgraderas när kritiska sårbarheter eller instabiliteter upptäcks i den tidigare versionen, enligt vad programvarans paketerare har definierat. Den här processen kallas ibland för versionspinning.

Till exempel:

  • yum stöder detta med syntaxen exclude=openoffice*
  • pacman med IgnorePkg= openoffice (för att undertrycka uppgradering av openoffice i båda fallen)
  • dpkg och dselect stöder detta delvis genom flaggan hold. i paketval
  • APT utökar hold-flaggan genom den komplexa ”pinning”-mekanismen (användare kan också svartlista ett paket)
  • aptitude har ”hold”- och ”forbid”-flaggor
  • portage stöder detta genom paketet.mask configuration file

Cascading package removalEdit

En del av de mer avancerade pakethanteringsfunktionerna erbjuder ”cascading package removal”, där alla paket som är beroende av målpaketet och alla paket som endast målpaketet är beroende av också tas bort.

Jämförelse av kommandonEdit

Och även om kommandona är specifika för varje enskild pakethanterare är de i stor utsträckning översättbara, eftersom de flesta pakethanterare erbjuder liknande funktioner.

Action sypper pacman apt dnf (yum) portage
installera paket zypper i PKG pacman -S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
remove package zypper rm -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE eller
emerge --unmerge PACKAGE
remove package+orphans zypper rm -u --force-resolution PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE eller
emerge --depclean PACKAGE
uppdatera programvarudatabas zypper ref pacman -Sy apt update dnf check-update emerge --sync
visa uppdaterbara paket zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world eller
emerge --update --pretend @world
delete orphans+config zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
show orphans zypper pa --orphaned --unneeded pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD eller
emerge --depclean --pretend
uppdatera alla zypper upp pacman -Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world

The Arch Linux Pacman/Rosetta wiki offers an extensive overview.

Lämna ett svar

Din e-postadress kommer inte publiceras.