kyopages/docs/debian/apt/apt_preferences-hold.md

164 lines
4.5 KiB
Markdown
Raw Normal View History

2018-01-23 18:57:54 +01:00
# 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
2018-01-23 19:25:07 +01:00
* par défaut, un dépôt a une priorité de **500** sauf expérimental (1) ou backports (100)
2018-02-19 07:30:23 +01:00
* un paquet installé à une priorité **100** (release: a=now)
2018-01-23 19:25:07 +01:00
* un dépôt marqué target release (APT::Default-Release "stable";) a une priorité 990, comme celui indiqué temporairement par l'option `-t`
* une priorité >1000 permet un retour en arrière (downgrade) comme l'option `--allow-downgrades`
2018-02-15 14:59:54 +01:00
* une priorité 100: `NotAutomatic: yes`, `ButAutomaticUpgrades: yes`: mise à jour d'un paquet installé dans la branche possible, mais pas de mise à niveau hors branche (un noyau sid ne sera pas utilisé par exemple, sauf si install auparavant). épiglage par défaut de backports, induit par le fichier `releases` du dépôt, mais l'automatisme n'est pas (ou n'a pas toujours été?) fiable, épinglage préférable
* une priorité < -1 interdit l'installation automatique (recommends) (depends?), permet l'installation manuelle (apt -t ou paquet/branche). très strict
2018-01-23 19:25:07 +01:00
2018-02-15 14:59:54 +01:00
## suivi testing
2018-01-23 18:57:54 +01:00
```text
### stable en fallback, cet épinglage n'est pas fonctionnellement utile
Package: *
Pin: release a=stable,n=stretch
Pin-Priority: 400
2018-02-15 14:59:54 +01:00
### sid TRES STRICT uniquement manuel, pas d'upgrade auto
2018-01-23 18:57:54 +01:00
Package: *
Pin: release a=unstable,n=sid
Pin-Priority: -10
```
2018-02-15 14:59:54 +01:00
```text
### 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
2018-02-15 15:24:28 +01:00
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
2018-02-15 14:59:54 +01:00
2018-02-15 15:06:53 +01:00
## installation d'une "origin" différente
2018-02-15 14:59:54 +01:00
2018-01-23 18:57:54 +01:00
* installer un paquet de sid|unstable
```shell
apt -t unstable install <paquet>
# ou
apt -t sid install <paquet>
# ou
apt <paquet>/unstable
```
2018-02-15 14:59:54 +01:00
## préférence sur une version de paquet
2018-01-23 18:57:54 +01:00
* maintenir version 1
```text
Package: <paquet>
Pin: version <version1 paquet>*
Pin-Priority: 1001
```
* maintenir version 1, équivalent
```text
Package: <paquet>
Pin: release a=now
Pin-Priority: 1001
```
(release a=now indique les paquets installés)
* éviter une installation version 2
```text
Package: <paquet>
Pin: version <version2>*
Pin-Priority: -10
```
2018-02-15 14:59:54 +01:00
## 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_"
```text
2018-02-15 15:06:53 +01:00
### backports, règles en du du comportement normalement par défaut
2018-02-15 14:59:54 +01:00
Package: *
Pin: release a=stretch-backports
Pin-Priority: 100
```
2018-01-23 18:57:54 +01:00
## hold
2018-02-15 14:59:54 +01:00
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:
2018-01-23 18:57:54 +01:00
* figeage (hold) d'un paquet en place
```shell
apt-mark hold <paquet>
```
* libérer un paquet
```shell
apt-mark unhold <paquet>
```
* voir tous les paquets marqués hold
```shell
apt-mark showhold
```
* combiner unhold et maj
```shell
apt --ignore-hold upgrade
```
équivalent de `apt-mark unhold *` & `apt upgrade`
2018-02-15 14:59:54 +01:00
## syntaxe préférences APT
```text
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
* voir les caractéristiques des dépots: `pager /var/lib/apt/lists/...InRelease|Release`
* `apt policy`
2018-02-19 07:30:23 +01:00
Suite (a=) |
:--: | :--:
now | paquets installés
2018-02-15 14:59:54 +01:00
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
* pour toutes les branches, Components: `main` `contrib` `non-free`