APT_PREFERENCES(5)

NAME
apt_preferences - Bestand om de voorkeursinstellingen voor APT te beheren

OMSCHRIJVING

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.

  Door APT standaard toegekende prioriteiten

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
    aan de versies die afkomstig zijn uit archieven die volgens hun Release-bestanden gemarkeerd staan als "NotAutomatic: yes" maar niet als "ButAutomaticUpgrades: yes", zoals bijvoorbeeld het Debian-archief experimental.

prioriteit 100
    aan de reeds geïnstalleerde versie (als er een is) en aan de versies die afkomstig zijn van archieven die volgens hun Release-bestanden gemarkeerd staan als "NotAutomatic: yes" en "ButAutomaticUpgrades: yes", zoals bijvoorbeeld het Debian-archief backports sinds squeeze-backports.

prioriteit 500
    aan de versies die niet behoren tot de doelrelease.

prioriteit 990
    aan de versies die behoren tot de doelrelease.
De hoogste van deze prioriteiten waarvan de beschrijving overeenkomt met de versie wordt aan die versie toegekend.

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.

    • Nooit een degradatie uitvoeren tenzij de prioriteit van een beschikbaar pakket groter is dan 1000. ("Degraderen" (downgrading) betekent het installeren van een minder recente versie van een pakket ter vervanging van een recentere versie. Noteer dat geen enkele van de standaardprioriteiten die APT gebruikt, groter dan 1000 is. Dergelijke hoge prioriteiten kunnen enkel in het bestand preferences ingesteld worden. Merk ook op dat het degraderen van een pakket riskant kan zijn.)

    • De versie met de hoogste prioriteit installeren.

    • Indien twee of meer versies eenzelfde prioriteit hebben, het meest recente installeren (dat is die met het hoogste versienummer).

    • De niet-geïnstalleerde versie installeren indien twee of meer versies eenzelfde prioriteit en hetzelfde versienummer hebben maar er op het gebied van de metadata toch een onderling verschil is, of indien de optie --reinstall gebruikt werd.

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.

  Het effect van de voorkeursinstellingen voor APT

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.

    • De specifieke vorm kent een prioriteit (een "Pin-Priority") toe aan een of meer opgegeven pakketten met een specifieke versie of binnen een versiebereik. De volgende structuur geeft bijvoorbeeld een hoge prioriteit aan alle versies van het pakket perl waarvan het versienummer begint met "5.20". Meerdere pakketten kunnen van elkaar gescheiden worden met spaties.

        Package: perl
        Pin: version 5.20*
        Pin-Priority: 1001

    • De algemene vorm kent een prioriteit toe aan alle pakketversies in een bepaalde distributie (dit betekent alle versies van pakketten die vermeld worden in een bepaald Release-bestand) of aan alle pakketversies die afkomstig zijn van een bepaalde internetsite, zoals aangegeven door de unieke volledige domeinnaam (fully qualified domain name) van de site.

    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 "bullseye".

        Package: *
        Pin: release n=bullseye
        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 "10" als releaseversienummer heeft.

        Package: *
        Pin: release a=stable, v=10
        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.

  Reguliere expressies en glob(7) syntaxis

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 focal.

    Package: *
    Pin: release n=focal*
    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.

  Pinning by source package

APT supports pinning by source packages. To pin by a source package, prepend "src:" to the package name.

For example, to pin all binaries produced by the apt source package of this APT's version to 990, you can do:

    Package: src:apt
    Pin: version 2.0.2
    Pin-Priority: 990

Source package pinning can be combined with regular expressions and glob patterns, and can also take a binary architecture.

For example, let's pin all binaries for all architectures produced by any source package containing apt in its name to 990:

    Package: src:*apt*:any
    Pin: version *
    Pin-Priority: 990

  Hoe APT prioriteiten interpreteert

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
    heeft de installatie van een versie tot gevolg ook al houdt dit een degradatie van het pakket in

990 <= P < 1000
    heeft de installatie van een versie tot gevolg ook al is ze niet van de doelrelease afkomstig, tenzij de geïnstalleerde versie recenter is

500 <= P < 990
    heeft de installatie van een versie tot gevolg tenzij er een versie uit de doelrelease beschikbaar is of de geïnstalleerde versie recenter is

100 <= P < 500
    heeft de installatie van een versie tot gevolg tenzij er een versie uit een andere distributie beschikbaar is of de geïnstalleerde versie recenter is

0 < P < 100
    heeft de installatie van een versie tot gevolg enkel en alleen als er geen versie van het pakket geïnstalleerd is

P < 0
    voorkomt dat de versie geïnstalleerd wordt

P = 0
    heeft ongedefinieerd gedrag; niet te gebruiken.

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 meest recente beschikbare versie van het pakket perl zal geïnstalleerd worden, zolang het versienummer van die versie begint met "5.20". Indien er een of andere 5.20* versie van perl beschikbaar is en de geïnstalleerde versie is 5.24*, dan zal perl gedegradeerd worden.

    • Een versie van om het even welk ander pakket dan perl dat vanaf het lokale systeem beschikbaar is, heeft prioriteit over andere versies, zelfs versies uit de doelrelease.

    • Een versie van een pakket waarvan de origine niet het lokale systeem is, maar een andere site die in sources.list(5) vermeld wordt, en die tot een unstable distributie behoort, wordt enkel geïnstalleerd als het geselecteerd werd om geïnstalleerd te worden en er niet reeds een versie van het pakket geïnstalleerd is.

  Het vaststellen van pakketversie en distributie-eigenschappen

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:
    vermeldt de pakketnaam

de regel Version:
    vermeldt het versienummer van het genoemde pakket

Het bestand Release bevindt zich normaal in de map .../dists/distributienaam, bijvoorbeeld .../dists/stable/Release, of .../dists/buster/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:
    benoemt het archief waartoe alle pakketten uit de mappenboom behoren. Bijvoorbeeld de regel "Archive: stable" of "Suite: stable" geeft aan dat alle pakketten uit de mappenboom die zich onder de bovenliggende map van het bestand Release bevindt, deel uitmaken van een stable archief. Om deze waarde op te geven in het APT-bestand preferences is de volgende regel nodig:

        Pin: release a=stable

de regel Codename:
    benoemt de codenaam waartoe alle pakketten in de mappenboom behoren. De regel "Codename: bullseye" geeft bijvoorbeeld aan dat alle pakketten uit de mappenboom die zich onder de bovenliggende map van het Release-bestand bevindt, tot een versie behoren die de naam bullseye draagt. Om deze waarde op te geven in het APT-bestand preferences is de volgende regel nodig:

        Pin: release n=bullseye

de regel Version:
    benoemt de releaseversie. De pakketten uit de boomstructuur zouden bijvoorbeeld kunnen komen uit de Debian releaseversie 10. Merk op dat er normaal geen versienummer bestaat voor de distributies testing en unstable omdat ze nog niet uitgegeven werden. Om dit op te geven in het APT-bestand preferences is een van de volgende regels nodig.

        Pin: release v=10
        Pin: release a=stable, v=10
        Pin: release 10

de regel Component:
    benoemt de licentiecomponent van de pakketten uit de mappenboom van het Release-bestand. De lijn "Component: main" bijvoorbeeld geeft aan dat alle pakketten uit de mappenboom behoren tot de component main, hetgeen inhoudt dat hun licentie in overeenstemming is met de Vrije Softwarerichtlijnen van Debian. Om deze component op te geven in het APT-bestand preferences is de volgende regel nodig:

        Pin: release c=main

de regel Origin:
    benoemt de maker van de pakketten uit de mappenboom van het Release-bestand. Meest gebruikelijk is dat Debian. Om deze oorsprong op te geven in het APT-bestand preferences is de volgende regel nodig:

        Pin: release o=Debian

de regel Label:
    benoemt het etiket van de pakketten uit de mappenboom van het Release-bestand. Meest gebruikelijk is dat Debian. Om dit etiket op te geven in het APT-bestand preferences is de volgende regel nodig:

        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.

  Facultatieve regels van een structuur in het bestand preferences van APT

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.

VOORBEELDEN

  De distributie Stable volgen

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

  Testing of Unstable volgen

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

  De evolutie van een uitgave volgen aan de hand van zijn codenaam

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 bullseye of sid
    Explanation: of verwijder ze in het andere geval
    Package: *
    Pin: release n=bullseye
    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 bullseye.

    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 bullseye 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

BESTANDEN

/etc/apt/preferences
    Bestand met versievoorkeuren. Dit is waar u "pinning" kunt opgeven. Dit is een voorkeur voor het ophalen van bepaalde pakketten uit een aparte pakketbron of uit een andere versie van een distributie. Configuratie-item: Dir::Etc::Preferences.

/etc/apt/preferences.d/
    Bestandsfragmenten met versievoorkeuren. Configuratie-item: Dir::Etc::PreferencesParts.

ZIE OOK

apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)

BUGS

APT bugpagina[1]. Indien u een bug in APT wilt rapporteren, raadpleeg dan /usr/share/doc/debian/bug-reporting.txt of het reportbug(1) commando.

VERTALING

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.

AUTEUR

APT-team

OPMERKINGEN

1.  APT bugpagina
    http://bugs.debian.org/src:apt