Product SiteDocumentation Site

6.2. aptitude, apt-get, og apt-kommandoer

APT er et stort prosjekt, der et grafisk grensesnitt inngår i de opprinnelige planene. Det er basert på et bibliotek med kjernen programmet (the core application), og apt-get er den første grenseflaten - kommandolinjebasert - som ble utviklet i prosjektet. apt er en andre kommandolinjebaserte grenseflate, levert fra APT, som overkommer noen designfeil i apt-get.
Begge verktøyene er bygget på toppen av det samme biblioteket og er dermed svært nær, men standardvirkemåten til apt er forbedret for interaktivt bruk og faktisk gjøre det de fleste brukere forventer. APT-utviklerne forbeholder seg retten til å endre det offentlige grensesnittet til dette verktøyet for å forbedre det ytterligere. I så måte er det offentlige grensesnittet til apt-get godt definert og vil forbli bakoverkompatibelt. Det er dermed verktøyet du vil anvende når du trenger å skripte bestillinger av pakkeinstallasjoner.
Tallrike andre grafiske grensesnitt dukket opp som eksterne prosjekter: synaptic, aptitude (som inkluderer både et tekstmodus grensesnitt og et grafisk - selv om det ikke er fullført ennå), wajig og så videre. Det mest anbefalte grensesnittet, apt, er det vi vil bruke i eksemplene vi gir i denne seksjonen. Noter gjerne at apt-get og aptitude har en veldig lik kommandolinje-syntaks. Når det er store forskjeller mellom disse tre kommandoene, vil de bli gitt i detalj.

6.2.1. Initialisering

For alt arbeid med APT, trenger listen over tilgjengelige pakker å oppdateres; dette kan enkelt gjøres med apt update. Denne operasjonen kan, avhengig av hastigheten på nettilkoblingen og oppsettet, ta en stund siden det innebærer nedlasting et visst antall (vanligvis komprimerte) filer Packages/Sources/Translation-language-code, som sakte har blitt større og større etter hvert som Debian har utviklet seg (minst 10–16 MB med data for main-seksjonen). Installering fra en CD-ROM/DVD krever, selvfølgelig, ingen nedlasting — i sådant fall er operasjonen meget rask.

6.2.2. Installere og fjerne

Med APTs, kan pakker legges til eller fjernes fra systemet, med henholdsvis apt install package og apt remove pakke. I begge tilfeller, vil APT automatisk installere de nødvendige avhengighetene eller slette pakker som er avhengig av pakken som blir fjernet. apt purge pakke-pakken involverer en komplett avinstallering — ved å også slette oppsettsfilene.
Hvis filen sources.list nevner flere distibusjoner, er det mulig å gi den versjonen av pakken som skal installeres. Et spesifikt versjonsnummer kan hentes med apt install pakke=versjon, men å indikere distribusjonens opprinnelse (Stable, Testing eller Unstable) - med apt install pakke/distribusjon - er vanligvis foretrukket. Med denne kommandoen er det mulig å gå tilbake til en eldre versjon av en pakke (hvis for eksempel du vet at den fungerer godt), forutsatt at den er tilgjengelig i en av kildene referert til av sources.list-filen. Ellers kan snapshot.debian.org-arkivet komme til hjelp (se sidefelt FOR VIDEREKOMMENDE Gamle pakkeversjoner: snapshot.debian.org og archive.debian.org).

Eksempel 6.4. Installasjon av Unstable-versjonen av spamassassin

# apt install spamassassin/unstable
Hvis pakken som skal installeres er gjort tilgjengelig for deg i form av en enkel .deb-fil uten tilhørende pakkebrønn, er det fortsatt mulig å bruke APT til å installere den sammen med avhengighetene (forutsatt at avhengighetene er tilgjengelige i de oppsatte pakkekildene) med en enkel kommando: apt install ./path-to-the-package.deb. Den ledende ./ er viktig for å gjøre det klart at vi refererer til et filnavn og ikke til navnet på en pakke som er tilgjengelig i en av pakkebrønnene.

6.2.3. Oppgradering av systemet

Regelmessige oppgraderinger anbefales fordi de inneholder de nyeste sikkerhetsoppdateringene. For å oppgradere bruk apt upgrade, apt-get upgrade, eller aptitude safe-upgrade (selvfølgelig etter apt update). Denne kommandoen ser etter installerte pakker som kan oppgraderes uten at pakker fjernes. Med andre ord er målet å sikre den minst mulig påtrengende oppgraderingen. apt-get er litt mer krevende enn aptitude, eller apt fordi den vil avslå å installere pakker som ikke var installert på forhånd.
apt vil vanligvis velge det seneste versjonsnummeret (unntatt for pakker fra Experimental og stable-backports, som ignoreres uansett versjonsnummer). Hvis du spesifiserer Testing, eller Unstable i din sources.list, vil apt upgrade skifte til det meste av ditt Stable-system til Testing eller Unstable, hvilket kanskje ikke var det du ville.
For å be apt om å bruke en bestemt distribusjon når du søker etter oppgraderte pakker, må du bruke -t or --target-release-valget, etterfulgt av navnet på distribusjonen du ønsker (for eksempel: apt -t stable upgrade). For å slippe å spesifisere dette alternativet hver gang du bruker apt, kan du legge til APT::Default-Release "stable"; i filen /etc/apt/apt.conf.d/local.
For viktigere oppgraderinger, som for eksempel overgang fra en stor Debian versjon til den neste, må du bruke apt full-upgrade. Med denne instruksjonen vil apt fullføre oppgraderingen selv om den må fjerne noen utdaterte pakker, eller installere nye avhengigheter. Dette er også kommandoen som benyttes av brukere som jobber daglig med Debian Unstable-utgaven, og følger dens utvikling dag for dag. Det er så enkelt at det nesten ikke trenger forklaring: APTs omdømme er basert på denne store funksjonaliten.
Til forskjell fra apt og aptitude, kjenner ikke apt-get til full-upgrade-kommandoen. I stedet skal du bruke apt-get dist-upgrade («distribution upgrade»), den historiske og velkjente kommandoen apt og aptitude godtas også, til lettelse for de brukerne som ble vant med den.
Resultatene av disse operasjonene er logget til /var/log/apt/history.log og /var/log/apt/term.log, mens dpkg beholder sin logg i en fil kalt /var/log/dpkg.log.

6.2.4. Oppsettsvalg

Foruten de oppsettselementene som allerede er nevnt, er det mulig å sette opp visse egenskaper ved APT ved å legge til anvisninger i en fil i /etc/apt/apt.conf.d/-mappen eller /etc/apt/apt.conf itself. Husk for eksempel at det er mulig for APT å be dpkg om å ignorere filkonfliktfeil ved å spesifisere DPkg::options { "--force-overwrite"; }.
Hvis Internettet bare kan nås via en mellomtjener, legg til en linje som Acquire::http::proxy "http://yourproxy:3128". For en FTP-mellomtjener, skriv Acquire::ftp::proxy "ftp://yourproxy". For å finne flere oppsettsvalg, les manualsiden apt.conf(5) (sjekk Seksjon 7.1.1, «Manualsider» for detaljer om manualsider).

6.2.5. Styring av pakkeprioriteter

En av de viktigste aspektene i oppsettet av APT er behandlingen av prioriteringene knyttet til hver pakkekilde. For eksempel kan du ønske å forlenge en fordeling med en eller to nyere pakker fra Testing, Unstable, eller Experimental. Det er mulig å tildele en prioritet til hver tilgjengelig pakke (samme pakke kan ha flere prioriteringer, avhengig av hvilken versjon eller distribusjon den kommer fra). Disse prioriteringene vil påvirke APTs oppførsel: For hver pakke vil det alltid velge versjonen med høyest prioritet (unntatt hvis denne versjonen er eldre enn den installerte, og hvis prioriteten er mindre enn 1000).
APT definerer flere standard prioriteringer. Hver installert pakkeversjon har en prioritet på 100. En ikke-installert versjon har en prioritet på 500 som standard, men det kan hoppe til 990 hvis det er en del av målrettet utgivelse (definert med kommandolinjevalget -t, eller oppsettsanvisningen APT::Default-Release).
Du kan endre prioriteringer ved å legge til oppføringer i en fil i /etc/apt/preferences.d/ eller i /etc/apt/preferences-filen med navnene på de berørte pakker, versjonen, opprinnelsen og den nye prioriteten deres.
APT vil aldri installere en eldre distribusjon av en pakke (som er en pakke med et versjonsnummer som er lavere enn det som den allerede installerte pakken har), unntatt hvis prioriteten dens er over 1000 (eller den er eksplisitt bedt om av brukeren, se Seksjon 6.2.2, «Installere og fjerne»linkend="sect.apt.install" />). APT vil alltid installere pakken med høyeste prioritet som følger denne begrensningen. Hvis to pakker har samme prioritet, installerer APT den nyeste (hvis versjonsnummer er høyest). Hvis to pakker av samme versjon har samme prioritet, men varierer i innhold, installerer APT versjonen som ikke er installert (denne regelen har blitt opprettet for å dekke tilfelle av en pakkeoppdatering uten økning av revisjonsnummeret, noe som vanligvis er nødvendig).
I mer konkrete termer, en pakke hvis prioritet er
< 0
vil aldri bli installert,
1..99
vil bare bli installert hvis ingen annen versjon av pakken allerede er installert,
100..499
vil bare bli installert hvis det ikke er noen annen nyere versjon installert eller tilgjengelig i en annen distribusjon,
500....989
vil bare bli installert hvis det ikke er installert noen nyere versjon eller er tilgjengelig i måldistribusjonen,
990..1000
installeres, bortsett fra hvis den installerte versjonen er nyere,
> 1000
vil alltid bli installert, selv om det tvinger APT til å nedgradere til en eldre versjon.
Når APT sjekker /etc/apt/preferences og /etc/apt/preferences.d/, tar den først hensyn til de bestemte oppføringer (ofte de som spesifiserer den aktuelle pakken), deretter de mer generiske (inkludert for eksempel alle pakkene i en distribusjon). Hvis flere generiske oppføringer finnes, brukes det første treffet. De tilgjengelige utvalgskriteriene inkluderer pakkens navn og kilden den kommer fra. Hver pakkekilde identifiseres av infoen i Release-filen som APT laster ned sammen med Packages-filene. Den angir opprinnelsen (vanligvis «Debian» for pakker fra offisielle speil, men det kan også være en persons eller en organisasjons navn for tredjeparts kodelagre). Den gir også navnet på distribusjonen (vanligvis Stable, Testing, Unstable, eller Experimental for standard distribusjoner levert av Debian) sammen med versjonen (for eksempel 11 for Debian Bullseye). La oss se på syntaksen i noen realistiske referansestudier med denne mekanismen.
La oss anta at du bare vil bruke pakker fra den stabile versjonen av Debian. De som leveres i andre versjoner bør ikke installeres med mindre det eksplisitt blir bedt om det. Du kan skrive inn følgende i /etc/apt/preferences-filen:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
a=stable definerer navnet på den valgte distribusjonen. o=Debian begrenser utvalget til pakker som kommer fra «Debian».
La oss nå anta at du har en tjener med flere lokale programmer som støtter seg på versjon 5.28 av Perl, og at du ønsker å sikre at oppgraderinger ikke vil installere en annen versjon av den. Da kan du skrive inn følgende:
Package: perl
Pin: version 5.28*
Pin-Priority: 1001
For å få en bedre forståelse av mekanismene for prioritet og distribusjon eller pakkebrønn-egenskaper for låsing, ikke nøl med å kjøre apt-cache policy for å vise standard prioritet knyttet til hver pakkekilde, eller apt-cache policy pakke for å vise standard prioritet for hver tilgjengelige versjon og kilde til en pakke, som forklart i Seksjon 6.3.1, «Kommandoen apt-cache policy».
Referansedokumentasjonen for filene /etc/apt/preferences og /etc/apt/preferences.d/ er tilgjengelig på manualsiden apt_preferences(5), som du kan vise med man apt_preferences.

6.2.6. Å arbeide med flere distribusjoner

Når apt er et så fantastisk verktøy, er det fristende å plukke pakker som kommer fra andre distribusjoner. For eksempel, etter å ha installert et Stable-system, ønsker du kanskje å prøve ut en programvarepakke som finnes i Testing, eller Unstable uten å avvike for mye fra systemets opprinnelige tilstand.
Selv om du noen ganger vil støte på problemer mens du mikser pakker fra forskjellige distribusjoner, håndterer apt slik sameksistens veldig godt, og begrenser risiko svært effektivt. Den beste måten for å fortsette er å liste opp alle distribusjoner som brukes i /etc/apt/sources.list (noen vil alltid sette inn de tre distribusjonene, men husk at Unstable er reservert for erfarne brukere), og for å definere din referansedistribusjon med APT::Default-Release-parameter (se Seksjon 6.2.3, «Oppgradering av systemet»).
La oss anta at Stable er din referansedistribusjon med at Testing og Unstable også er listet i din sources.list-fil. I dette tilfellet kan du bruke apt install pakke/testing til å installere en pakke fra Testing. Hvis installasjonen mislykkes på grunn av noen ikke-tilfredsstilte avhengigheter, la den løse disse avhengighetene innenfor Testing ved å legge til -t testing-parameteret. Det samme gjelder selvsagt Unstable.
I denne situasjonen blir oppgraderingene upgrade og full-upgrade) gjort innenfor Stable, bortsett fra for pakker som allerede er oppgradert til en annen distribusjon: De vil følge oppdateringene som er tilgjengelige i andre distribusjoner. Vi forklarer denne virkemåten ved hjelp av standardprioriteringene satt av APT nedenfor. Ikke nøl med å bruke apt-cache policy (Seksjon 6.3.1, «Kommandoen apt-cache policy») for å bekrefte de gitte prioriteringene.
Alt er basert på det faktum at APT bare vurderer pakker med høyere eller lik versjon enn den installerte (forutsatt at /etc/apt/preferences ikke har vært brukt til å tvinge prioriteter høyere enn 1000 for noen pakker).
La oss anta at du har installert versjon 1 av en første pakke fra Stable, og at versjon 2 og 3 respektivt er tilgjengelig i Testing og Unstable. Den installerte versjonen har en prioritet på 100 mens versjonen som ligger i Stable (akkurat den samme) har en prioritet på 990 (fordi den er en del av målet utgivelse (target release)). Pakker i Testing, og Unstable har en prioritet på 500 (standardprioriteten til en ikke-installert versjon). Vinneren er da versjon 1 med en prioritet på 990. Pakken «står i Stable».
La oss ta et eksempel fra en annen pakke som versjon 2 er installert fra Testing. Versjon 1 er tilgjengelig i Stable, og versjon 3 i Unstable. Versjon 1 (med prioritet 990 - altså lavere enn 1000) forkastes fordi det er lavere enn den installerte versjonen. Bare versjon 2 og 3 står igjen, begge med prioritet 500. Stilt ovenfor dette alternativet, velger APT den nyeste versjonen, den ene fra Unstable. Hvis du ikke ønsker en pakke installert fra Testing til å flytte til versjonen i Unstable, må du tildele en prioritet lavere enn 500 (490 for eksempel) til pakker som kommer fra Unstable. Du kan endre /etc/apt/preferences i så henseende:
Package: *
Pin: release a=unstable
Pin-Priority: 490

6.2.7. Å finne installerte pakker automatisk

En av de svært viktige funksjonene i apt er sporing av pakker som bare er installert ved avhengigheter. Disse pakkene kalles «automatiske», og inkluderer ofte biblioteker.
Med denne informasjonen, når pakker er fjernet, kan pakkebehandlerne lage en liste over automatiske pakker som ikke lenger trengs (fordi det ikke er noen «manuelt installerte» pakker som er avhengig av dem). apt-get autoremove eller apt autoremove vil kvitte seg med disse pakkene. aptitude har ikke denne kommandoen fordi den fjerner dem automatisk så snart de er identifisert. I alle tilfelle, verktøyene viser en klar melding som lister de berørte pakkene.
Det er en god vane å merke som automatisk, pakker som du ikke trenger direkte, slik at de fjernes automatisk når de ikke lenger er nødvendige. apt-mark auto pakke vil merke en gitt pakke som automatisk, mens apt-mark manual pakke gjør det motsatte. aptitude markauto og aptitude unmarkauto virker på samme måte selv om de tilbyr flere funksjoner for å merke mange pakker på en gang (se Seksjon 6.5.1, «aptitude»). Det konsollbaserte brukergrensesnittet til aptitude gjør det også enkelt å gå i gjennom «automatisk»-flagget hos mange pakker.
Folk vil kanskje vite hvorfor en automatisk installert pakke er til stede på systemet. For å få denne informasjonen fra kommandolinjen kan du bruke aptitude why pakke (apt og apt-get har ingen tilsvarende funksjon):
$ aptitude why python3-debian
i   aptitude         Suggests apt-xapian-index
p   apt-xapian-index Depends  python3-debian (>= 0.1.14)

6.2.8. APT-mønster

Mønster lar deg angi komplekse søkespørringer for å velge pakker å installere eller vise. De fantes først i aptitude (sjekk Seksjon 6.5, «Brukergrensesnitt: aptitude, synaptic»), men nå gjør APT også bruk av dem.
For eksempel kan apt list ?automatic brukes for å liste opp alle pakker som er installert automatisk. For å finne pakker som er automatisk installert, men som man ikke lenger avhenger av for noen installerte pakker kan mønsteret ?garbage brukes.
Logiske mønstre kan kombineres med andre pakker for å lage mer komplekse uttrykk. For eksempel kan man bruke et mønster som ?and(MØNSTER, MØNSTER). Sjekk apt-patterns(7) og glob(7) for alle mønsterne du kan bruke og de komplekse uttrykkene som kan lages med dem.