Het bestand met de voorkeursinstellingen voor APT, /etc/apt/preferences, en de bestandsfragmenten uit de map /etc/apt/preferences.d/ kunnen gebruikt worden om in te stellen welke versie van een pakket voor installatie geselecteerd zal worden.
Indien het bestand sources.list(5) verwijzingen bevat naar meer dan een uitgave (bijvoorbeeld stable en testing), dan kunnen meerdere versies van eenzelfde pakket beschikbaar zijn voor installatie. APT kent aan elke beschikbare versie een prioriteit toe. Rekening houdend met eventuele beperkingen ten gevolge van vereisten, zal apt-get de versie met de grootste prioriteit uitkiezen voor installatie. De voorkeursinstellingen voor APT overschrijven de prioriteiten die APT standaard aan pakketversies toekent, waardoor de gebruiker controle verwerft over welk pakket voor installatie uitgekozen wordt.
Meerdere exemplaren van eenzelfde versie kunnen beschikbaar zijn indien het bestand sources.list(5) verwijzingen bevat naar meer dan een pakketbron. In dat geval zal apt-get het exemplaar downloaden dat eerst vermeld wordt in het bestand sources.list(5) De APT-voorkeuren hebben geen invloed op de keuze van het exemplaar, enkel op de versiekeuze.
Voorkeuren leggen veel macht in de handen van een systeembeheerder, maar ze kunnen ook tot zijn grootste nachtmerrie uitgroeien als er niet zorgvuldig mee omgesprongen wordt! APT zal de voorkeuren niet in vraag stellen. Daardoor kunnen foute instellingen leiden tot niet-installeerbare pakketten of tot het nemen van foute beslissingen bij het opwaarderen van pakketten. Nog meer problemen kunnen ontstaan als verschillende uitgaven door elkaar gebruikt worden zonder een goed begrip van de volgende paragrafen. Pakketten uit een specifieke uitgave worden niet uitgetest voor (en werken daarom niet altijd als verwacht in) eerdere of latere uitgaves of samen met andere pakketten uit verschillende uitgaves. U bent gewaarschuwd.
Noteer dat de bestanden uit de map /etc/apt/preferences.d in oplopende alfanumerieke volgorde ontleed worden en dat hun naam aan de volgende conventie moet beantwoorden: de bestanden hebben ofwel geen bestandsnaamextensie ofwel is dat "pref" en ze bevatten enkel alfanumerieke tekens, koppeltekens (-), lage streepjes (_) en punten (.). In het andere geval zal APT melding maken van het feit dat het een bestand overgeslagen heeft, tenzij dat bestand overeenkomt met een patroon uit de configuratielijst Dir::Ignore-Files-Silently. In dat laatste geval zal het stilzwijgend overgeslagen worden.
Indien het bestand preferences niet bestaat of indien het geen item bevat dat op een specifieke versie betrekking heeft, dan wordt aan die versie de prioriteit toegekend van de uitgave waartoe die versie behoort. Men kan een bepaalde uitgave uitkiezen als "the target release" (de doelrelease), die dan een hogere prioriteit krijgt dan standaard aan andere uitgaven gegeven wordt. De doelrelease kan aan de commandoregel van apt-get ingesteld worden of in /etc/apt/apt.conf, het configuratiebestand van APT. Merk op dat deze instelling voorrang heeft op gelijk welke algemene prioriteitsinstelling die u vastlegt in het bestand /etc/apt/preferences waarover we het later hebben, maar geen voorrang op specifieke gepinde pakketten. Bijvoorbeeld
apt-get install -t testing een-bepaald-pakket
APT::Default-Release "stable";
Indien de doelrelease opgegeven werd, dan gebruikt APT het volgende algoritme om de prioriteiten van de versies van een pakket te bepalen. Het toekennen van:
prioriteit 1
prioriteit 100
prioriteit 500
prioriteit 990
Indien er geen doelrelease opgegeven werd, dan kent APT gewoonweg prioriteit 100 toe aan alle geïnstalleerde pakketversies en prioriteit 500 aan alle niet-geïnstalleerde pakketversies, behalve aan versies die afkomstig zijn uit archieven die volgens hun Release-bestanden gemarkeerd staan als "NotAutomatic: yes" - deze versies krijgen de prioriteit 1 of de prioriteit 100 als ze bovendien ook gemarkeerd staan als "ButAutomaticUpgrades: yes".
Om uit te maken welke versie van een pakket geïnstalleerd moet worden, past APT dan de volgende regels toe, vermeld in volgorde van prioriteit.
In een gewone situatie is de geïnstalleerde versie van een pakket (prioriteit 100) minder recent dan een van de versies die beschikbaar is in een pakketbron die in het bestand sources.list(5) vermeld wordt (prioriteit 500 of 990). In dat geval zal het pakket opgewaardeerd worden als de opdracht apt-get install een-bepaald-pakket of apt-get upgrade uitgevoerd wordt.
Een minder vaak voorkomende situatie is die waarbij de geïnstalleerde versie van een pakket recenter is dan welke andere beschikbare versie ook. Bij het uitvoeren van de opdracht apt-get install een-bepaald-pakket of apt-get upgrade zal het pakket dan niet gedegradeerd worden.
Soms is de geïnstalleerde versie van een pakket recenter dan de versie van de doelrelease, maar niet zo recent als een versie van een andere distributie. Zo een pakket zal wel degelijk opgewaardeerd worden als apt-get install een-bepaald-pakket of apt-get upgrade uitgevoerd wordt, omdat minstens een van de beschikbare versies een hogere prioriteit heeft dan de geïnstalleerde versie.
APT begrijpt een veld genaamd Phased-Update-Percentage, dat kan worden gebruikt om de uitrol van een nieuwe versie te controleren. Het is een geheel getal tussen 0 en 100.
Of een systeem in aanmerking komt voor een gefaseerde update, wordt bepaald door de generator van willekeurige getallen te voeden met de bronnaam van het pakket, het versienummer en /etc/machine-id, en vervolgens een geheel getal binnen het bereik [0, 100] te berekenen. Als dit gehele getal groter is dan het Phased-Update-Percentage, wordt de versie vastgezet op 1 en dus tegengehouden. Anders zijn de normale beleidsregels van toepassing.
Als u meerdere systemen heeft waarvan u wilt dat deze dezelfde set updates ontvangen, kunt u APT::Machine-ID instellen op een UUID zodat ze allemaal dezelfde fasering toepassen, of u kunt de instelling APT::Get::Never-include-Phased-Updates gebruiken of APT::Get::Always-include-Phased-Updates instellen op true zodat APT nooit/altijd gefaseerde updates zal overwegen.
Het APT-bestand preferences laat de systeembeheerder toe het toekennen van prioriteiten te regelen. Het bestand bestaat uit een of meer structuren die uit meerdere regels bestaan en van elkaar gescheiden worden door lege regels. De structuren kunnen een van de twee volgende vormen aannemen: een specifieke vorm of een algemene vorm.
Package: perl Pin: version 5.20* Pin-Priority: 1001
Zo een item in het preferences-bestand van APT dat aan de algemene vorm beantwoordt, is enkel op groepen pakketten van toepassing. De volgende structuur kent bijvoorbeeld een hoge prioriteit toe aan alle pakketversies die op de lokale site beschikbaar zijn.
Package: * Pin: origin "" Pin-Priority: 999
Een aanmaning tot voorzichtigheid: het gebruikte trefwoord hier is "origin" dat gebruikt kan worden om een computernaam te vergelijken. De volgende structuur kent een hoge prioriteit toe aan alle versies die te verkrijgen zijn op de server die met de computernaam "ftp.de.debian.org" geïdentificeerd wordt.
Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999
Men mag dit niet verwarren met de oorsprong (Origin) van een distributie zoals die in een Release-bestand vermeld wordt. Wat in een Release-bestand op het label "Origin:" volgt is geen internetadres, maar een auteur of de naam van een leverancier, zoals "Debian" of "Ximian".
De volgende structuur kent een lage prioriteit toe aan alle pakketversies die behoren tot gelijk welke distributie die "unstable" als archiefnaam heeft.
Package: * Pin: release a=unstable Pin-Priority: 50
De volgende structuur kent een hoge prioriteit toe aan alle pakketversies die behoren tot om het even welke distributie met de codenaam "bookworm".
Package: * Pin: release n=bookworm Pin-Priority: 900
De volgende structuur kent een hoge prioriteit toe aan alle pakketversies die behoren tot om het even welke uitgave die "stable" als archiefnaam heeft en die "11" als releaseversienummer heeft.
Package: * Pin: release a=stable, v=11 Pin-Priority: 500
Het effect van de kommaoperator is vergelijkbaar met een "en" in de logica: aan alle voorwaarden moet voldaan zijn opdat er een overeenkomst zou zijn met de pin. Er is één uitzondering: voor om het even welk type voorwaarde (zoals twee "a"-voorwaarden) geldt dat enkel de laatste dergelijke voorwaarde getoetst wordt.
APT ondersteunt bij het pinnen ook het gebruik van glob(7)-expressies, en reguliere expressies die door slashes ingesloten worden. Het volgende voorbeeld geeft prioriteit 500 aan alle pakketten uit experimental waarvan de naam begint met gnome (als een glob(7)-achtige expressie) of het woord kde (als een in slashes ingesloten POSIX uitgebreide reguliere expressie) bevat.
Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500
De regel voor deze expressies is dat ze overal kunnen voorkomen waar een tekenreeks kan voorkomen. De volgende pin kent dus een prioriteit 990 toe aan alle pakketten van een uitgave die begint met hirsute.
Package: * Pin: release n=hirsute* Pin-Priority: 990
Indien een reguliere expressie voorkomt in een Package-veld, dan lokt dit hetzelfde gedrag uit als wanneer deze reguliere expressie vervangen zou worden door een lijst met alle pakketnamen die ermee overeenkomen. Het is nog niet beslist of dit in de toekomst anders zal worden. U moet dus altijd jokertekenpins eerst plaatsen, zodat latere specifieke pins die kunnen overschrijven. Het patroon "*" in een Package-veld wordt op zichzelf niet als een glob(7)-expressie beschouwd.
APT ondersteunt het vastzetten op bronpakket. Om op een bronpakket vast te zetten, laat u "src:" voorafgaan aan de pakketnaam.
Bijvoorbeeld, om alle binaire pakketten die met het apt-bronpakket van deze APT-versie geproduceerd worden, vast te zetten op 990, kunt u als volgt te werk gaan:
Package: src:apt Pin: version 2.1.20 Pin-Priority: 990
Vastzetten van broncodepakketten kan gecombineerd worden met reguliere expressies en glob-patronen en het kan ook een architectuur voor de binaire pakketten als argument hebben.
Laten we bijvoorbeeld alle binaire pakketten voor alle architecturen die geproduceerd worden door gelijk welk broncodepakket met apt in zijn naam, vastzetten op 990:
Package: src:*apt*:any Pin: version * Pin-Priority: 990
Prioriteiten (P) die in het preferences-bestand van APT toegekend worden, moeten positieve of negatieve gehele getallen zijn. Zij worden (grof geschetst) als volgt geïnterpreteerd:
P >= 1000
990 <= P < 1000
500 <= P < 990
100 <= P < 500
0 < P < 100
P < 0
P = 0
Het eerste record van specifieke aard dat een overeenkomst oplevert met een beschikbare pakketversie, bepaalt de prioriteit van die pakketversie. Bij gebrek daaraan wordt de prioriteit van het pakket vastgelegd op het maximum van al de prioriteiten die gedefinieerd worden door records van algemene aard waarmee die versie een overeenkomst oplevert. Records die bij middel van andere patronen dan "*" in het Pin-veld gedefinieerd worden, worden behandeld als records van specifieke aard.
Veronderstel bijvoorbeeld dat het APT-bestand preferences de drie structuren bevat die we eerder bespraken:
Package: perl Pin: version 5.20* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
Dan is dit het gevolg:
De locaties die in het bestand sources.list(5) vermeld worden, moeten de bestanden Packages en Release aanbieden om de pakketten te beschrijven die op die locatie ter beschikking staan.
Het bestand Packages bevindt zich normaal in de map .../dists/distributienaam/component/architectuur, bijvoorbeeld .../dists/stable/main/binary-i386/Packages. Het bevat een reeks structuren, die uit meerdere regels bestaan, een per pakket dat in die map beschikbaar is. In elke structuur zijn slechts twee regels relevant voor het instellen van APT-prioriteiten:
de regel Package:
de regel Version:
Het bestand Release bevindt zich normaal in de map .../dists/distributienaam, bijvoorbeeld .../dists/stable/Release, of .../dists/bullseye/Release. Het bevat een enkele structuur bestaande uit meerdere regels, die van toepassing is op alle pakketten uit de volledige mappenboom die zich onder diens bovenliggende map bevindt. In tegenstelling tot wat het geval is voor het bestand Packages, zijn praktisch alle regels uit een Release-bestand relevant voor het instellen van de APT-prioriteiten:
de regel Archive: of de regel Suite:
Pin: release a=stable
de regel Codename:
Pin: release n=bookworm
de regel Version:
Pin: release v=11 Pin: release a=stable, v=11 Pin: release 11
de regel Component:
Pin: release c=main
de regel Origin:
Pin: release o=Debian
de regel Label:
Pin: release l=Debian
Alle Packages- en Release-bestanden die opgehaald worden van locaties die in het bestand sources.list(5) vermeld staan, worden opgeslagen in de map /var/lib/apt/lists of in het bestand dat in het bestand apt.conf door de variabele Dir::State::Lists genoemd wordt. Het bestand debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release bevat bijvoorbeeld het Release-bestand dat opgehaald werd van de site debian.lcs.mit.edu en dat betrekking heeft op bestanden voor de architectuur binary-i386 uit de component contrib van de distributie unstable.
In het APT-bestand preferences kan elke structuur facultatief beginnen met een of meer regels waarvan het eerste woord Explanation: is. Zo wordt ruimte gemaakt voor commentaar.
Het volgende preferences-bestand van APT doet APT een hogere prioriteit dan standaard (500) toekennen aan alle pakketversies die tot een stable-distributie behoren en een buitensporig lage prioriteit aan pakketversies die tot andere Debian-distributies behoren.
Explanation: Installeer geen van Debian afkomstige pakketten met andere Explanation: versies dan die uit de distributie stable of verwijder ze anders Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
Met een passend bestand sources.list(5) en het bovenstaande preferences-bestand, zal elk van de volgende commando's APT ertoe aanzetten om op te waarderen naar de nieuwste versie(s) uit stable.
apt-get install pakketnaam apt-get upgrade apt-get dist-upgrade
Het volgende commando zal APT ertoe aanzetten om het opgegeven pakket op te waarderen naar de allernieuwste versie uit de distributie testing. Het pakket zal niet opnieuw opgewaardeerd worden tenzij die opdracht terug gegeven wordt.
apt-get install pakket/testing
Het volgende preferences-bestand van APT doet APT een hoge prioriteit toekennen aan pakketversies uit de distributie testing, een lagere prioriteit aan pakketversies uit de distributie unstable en een buitensporig lage prioriteit aan pakketversies die tot andere Debian-distributies behoren.
Package: * Pin: release a=testing Pin-Priority: 900 Package: * Pin: release a=unstable Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Met een passend bestand sources.list(5) en het bovenstaande preferences-bestand, zal elk van de volgende commando's APT ertoe aanzetten om op te waarderen naar de nieuwste versie(s) uit testing.
apt-get install pakketnaam apt-get upgrade apt-get dist-upgrade
Het volgende commando zal APT ertoe aanzetten om het opgegeven pakket op te waarderen naar de allernieuwste versie uit de distributie unstable. Nadien zal apt-get upgrade het pakket opwaarderen naar de nieuwste versie uit testing als die recenter is dan de geïnstalleerde versie en anders naar de nieuwste versie uit unstable als die recenter is dan de geïnstalleerde versie.
apt-get install pakket/unstable
Het volgende preferences-bestand van APT doet APT een hogere prioriteit dan standaard (500) toekennen aan alle pakketversies die tot een distributie met de opgegeven codenaam behoren en een buitensporig lage prioriteit aan pakketversies die tot andere Debian-distributies, -codenamen en -archieven behoren. Merk op dat met deze APT-voorkeur APT de overgang van een release zal volgen vanuit het archief testing naar stable en later oldstable. Indien u bijvoorbeeld de voortgang in testing wilt volgen ongeacht de veranderende codenaam, dan moet u de hierboven gegeven configuratievoorbeelden gebruiken.
Explanation: Installeer geen van Debian afkomstige pakketversies behalve Explanation: die uit de distributie met codenaam bookworm of sid Explanation: of verwijder ze in het andere geval Package: * Pin: release n=bookworm Pin-Priority: 900 Explanation: Debian unstable heeft steeds de codenaam sid Package: * Pin: release n=sid Pin-Priority: 800 Package: * Pin: release o=Debian Pin-Priority: -10
Met een passend bestand sources.list(5) en het bovenstaande preferences-bestand, zal elk van de volgende commando's APT ertoe aanzetten om op te waarderen naar de nieuwste versie(s) uit de release met de codenaam bookworm.
apt-get install pakketnaam apt-get upgrade apt-get dist-upgrade
Het volgende commando zal APT ertoe bewegen om het opgegeven pakket op te waarderen naar de nieuwste versie uit de distributie sid. Nadien zal de opdracht apt-get upgrade het pakket opwaarderen naar de meest recente versie uit bookworm indien dat een meer recente versie is dan die welke geïnstalleerd is of anders naar de meest recente versie uit sid indien dat een meer recente versie is dan die welke geïnstalleerd is.
apt-get install pakket/sid
/etc/apt/preferences
/etc/apt/preferences.d/
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)
m[blue]APT bugpaginam[][1]. Indien u een bug in APT wilt rapporteren, raadpleeg dan /usr/share/doc/debian/bug-reporting.txt of het reportbug(1) commando.
De Nederlandse vertaling werd in 2015 gemaakt door Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, in samenwerking met het Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>.
Merk op dat de vertaling van dit document nog onvertaalde delen kan bevatten. Dit is intentioneel om te vermijden dat inhoud verloren zou gaan door een vertaling die achterop loopt op het origineel.
APT-team