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
.
Both tools are built on top of the same library and are thus very close, but the default behavior of apt
has been improved for interactive use and to actually do what most users expect. The APT developers reserve the right to change the public interface of this tool to further improve it. Conversely, the public interface of apt-get
is well defined and will not change in any backwards incompatible way. It is thus the tool that you want to use when you need to script package installation requests.
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
, etc. 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.
For any work with APT, the list of available packages needs to be updated; this can be done simply through apt update
. Depending on the speed of your connection and configuration, the operation can take a while, since it involves downloading a certain number of (usually compressed) files (Packages
, Sources
, Translation-language-code
), which have gradually become bigger and bigger as Debian has developed (at least 10-16 MB of data for the main
section). Of course, installing from a CD-ROM/DVD set does not require any downloading — in this case, the operation is very fast.
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 å slette oppsettsfilene også.
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
GOING FURTHER Old package versions: snapshot.debian.org
and 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 pakkekilde, 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 pakkekildene.
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, som 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
.
Foruten de oppsettselementene som allerede er nevnt, er det mulig å sette opp visse egenskaper ved APT ved å legge til direktiver 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"; }
.
If the Web can only be accessed through a proxy, add a line like
Acquire::http::proxy "http://yourproxy:3128"
. For an FTP proxy, write
Acquire::ftp::proxy "ftp://yourproxy"
. To discover more configuration options, read the
apt.conf(5) manual page (for details on manual pages, see
Seksjon 7.1.1, «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 -t
kommandolinjevalg, eller APT::Default-Release
oppsettsdirektiv).
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 will never install an older version of a package (that is, a package whose version number is lower than the one of the currently installed package) except if its priority is higher than 1000 (or it is explicitly requested by the user, see
Seksjon 6.2.2, «Installere og fjerne»). APT will always install the highest priority package which follows this constraint. If two packages have the same priority, APT installs the newest one (whose version number is the highest). If two packages of same version have the same priority but differ in their content, APT installs the version that is not installed (this rule has been created to cover the case of a package update without the increment of the revision number, which is usually required).
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.
When APT checks /etc/apt/preferences
and /etc/apt/preferences.d/
, it first takes into account the most specific entries (often those specifying the concerned package), then the more generic ones (including, for example, all the packages of a distribution). If several generic entries exist, the first match is used. The available selection criteria include the package's name and the source providing it. Every package source is identified by the information contained in a Release
file that APT downloads together with the Packages
files. It specifies the origin (usually “Debian” for the packages of official mirrors, but it can also be a person's or an organization's name for third-party repositories). It also gives the name of the distribution (usually Stable, Testing, Unstable or Experimental for the standard distributions provided by Debian) together with its version (for example, 11 for Debian Bullseye). Let's have a look at its syntax through some realistic case studies of this mechanism.
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:
a=stable
definerer navnet på den valgte distribusjonen. o=Debian
begrenser utvalget til pakker som kommer fra «Debian».
Let's now assume that you have a server with several local programs depending on the version 5.28 of Perl and that you want to ensure that upgrades will not install another version of it. You could use this entry:
To gain a better understanding of the mechanisms of priority and distribution or repository properties to pin do not hesitate to execute
apt-cache policy
to display the default priority associated with each package source, or
apt-cache policy package
to display the default priority for each available version and source of a package as explained in
Seksjon 6.3.1, «The apt-cache policy
Command».
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.
In this situation, upgrades (
upgrade
and
full-upgrade
) are done within
Stable except for packages already upgraded to another distribution: those will follow updates available in the other distributions. We will explain this behavior with the help of the default priorities set by APT below. Do not hesitate to use
apt-cache policy
(
Seksjon 6.3.1, «The apt-cache policy
Command») to verify the given priorities.
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».
Let's take the example of another package whose version 2 has been installed from Testing. Version 1 is available in Stable and version 3 in Unstable. Version 1 (of priority 990 — thus lower than 1000) is discarded because it is lower than the installed version. This only leaves version 2 and 3, both of priority 500. Faced with this alternative, APT selects the newest version, the one from Unstable. If you don't want a package installed from Testing to migrate to the version in Unstable, you have to assign a priority lower than 500 (490 for example) to packages coming from Unstable. You can modify /etc/apt/preferences
to this effect:
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)
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.
Logic patterns can be combined with other packages to form more complex expressions. For instance, we could use a pattern like ?and(PATTERN, PATTERN)
. See apt-patterns(7) and glob(7) for all the patterns you can use and the complex expressions you can create with them.