apt préférences, pinning, hold

emplacement des fichiers:
/etc/apt/preferences ou /etc/apt/preferences.d/perso ou /etc/apt/preferences.d/perso.pref

préférences sur branche

suivi testing

    ### stable en fallback, cet épinglage n'est pas fonctionnellement utile
Package: *
Pin: release a=stable,n=stretch
Pin-Priority: 400

    ### sid TRES STRICT uniquement manuel, pas d'upgrade auto
Package: *
Pin: release a=unstable,n=sid
Pin-Priority: -10
    ### sid en dépôt annexe, install manuelle, upgrade des paquets installés
Package: *
Pin: release a=unstable,n=sid
Pin-Priority: 100

test simulation

jouer avec des mélanges de dépôts n'est pas anodin, bien tester le comportement de l'épinglage avec: apt policy et apt policy <paquet>

getInfo -cc permet de voir facilement l'origine des upgrades à faire

installation d'une "origin" différente

apt -t unstable install <paquet>
 # ou
apt -t sid install <paquet>
 # ou
apt <paquet>/unstable

préférence sur une version de paquet

Package: <paquet>
Pin: version <version1 paquet>*
Pin-Priority: 1001
Package: <paquet>
Pin: release a=now
Pin-Priority: 1001

(release a=now indique les paquets installés)

Package: <paquet>
Pin: version <version2>*
Pin-Priority: -10

info backports

sans réglages, le fichier release de la branche backports induira une priorité de 100, mais comme il y a eu de nombreux incidents à l'époque de jessie en stable, il est péférable de "l'inscrire en dur"

    ### backports, règles en du du comportement normalement par défaut
Package: *
Pin: release a=stretch-backports
Pin-Priority: 100

hold

hold permet de figer un paquet, sans discernement comme la version par exemple. plus de mise à jour possible sans marquage unhold. fonctionnement différent de pinning, ici pour info:

apt-mark hold <paquet>
apt-mark unhold <paquet>
apt-mark showhold
apt --ignore-hold upgrade

équivalent de apt-mark unhold * & apt upgrade

syntaxe préférences APT

Origin      -> o=       (origin)
Label       -> l=       (label)
Suite       -> a=       (archive)
Version     -> v=       (version)
Components  -> c=       (components: main contrib non-free)
Codename    -> n=       (name)

voir codes à appliquer:

dépôts/branches debian

Suite (a=) |
:--: | :--:
now | paquets installés

Suite (a=) Codename (n=) Label (l=) Origin (o=)
stable stretch Debian Debian
stable stretch Debian-Security Debian
stable-updates stretch-updates Debian Debian
stretch-backports stretch-backports Debian Backports Debian Backports
Suite (a=) Codename (n=) Label (l=) Origin (o=)
testing buster Debian Debian
testing buster Debian-Security Debian
testing-updates buster-updates Debian Debian
Suite (a=) Codename (n=) Label (l=) Origin (o=)
unstable sid Debian Debian