ajout infos sur APT / apt_preferences

This commit is contained in:
Gregory Colpart 2018-08-26 01:46:43 +02:00
parent 0229ca734e
commit 8c3795c6af

View file

@ -124,18 +124,76 @@ $ dpkg -L foo
Lister les packages installé qui contiennent un fichier
$ dpkg -S bin/bar
Comparer 2 versions de package en utilisant l'algorithme de dpkg
$ dpkg --compare-versions 2:1-1 gt-nl 2:1-1~0 && echo OK
~~~
## apt
Liste des packages pouvant être mis au jour (inclus les package en hold) :
Des ensembles de packages `.deb` sont regroupés sur un site HTTP, un CD-ROM, une clé USB, etc.
Le programme APT permet de gérer ces ensembles de packages grâce à un algorithme de dépendances.
Le plus classique est d'utiliser des dépôts (sites HTTP/HTTPS) qui mettent à disposition des paquets.
On les définit via le fichier `/etc/apt/sources.list` ou des fichiers `/etc/apt/sources.list.d/*.list` avec des lignes du type :
~~~
deb http://pub.evolix.net/ stretch/
~~~
On récupère la liste de ces packagess avec une certain nombre d'informations (versions, description, etc.) via un fichier `Packages.gz` en faisant la commande :
~~~
# apt update
~~~
On peut ensuite manipuler ces listes de packages téléchargées avec la commande `apt-cache` :
~~~
Donner des informations sur un package
$ apt-cache show foo
Rechercher les packages dont le nom ou la description courte contient foo
$ apt-cache search foo
Donner les dépendances d'un package
$ apt-cache depends foo
~~~
Et l'on peut installer/supprimer/etc. des paquets avec la commande `apt` :
~~~
Installer un package
# apt install foo
Supprimer un package
# apt remove foo
Supprimer et purger un package
# apt purge foo
Mettre à jour tous les packages installés (sauf si cela installe/supprime d'autres packages)
# apt upgrade
Mettre à jour tous les packages installés (même si cela installe/supprime d'autres packages)
# apt dist-upgrade
Nettoyer les packages téléchargés du cache local
# apt clean
Lister des packages pouvant être mis au jour (inclus les package en hold) :
$ apt list --upgradable
~~~
> *Note* : avec *aptitude* on a un résultat plus précis avec `aptitude upgrade -sV`
On peut utiliser d'autres commandes comme `apt-get` ou `aptitude` qui offrent des options différentes :
~~~
Lister des packages pouvant être mis au jour (plus précis que "apt list --upgradable")
$ aptitude upgrade -sV
Installer les dépendances pour recompiler un package
$ apt-get build-dep foo
~~~
### hold / unhold
@ -153,6 +211,44 @@ hi foo […]
Annulation de l'état figé pour foo.
~~~
### preferences
<https://manpages.debian.org/stable/apt/apt_preferences.5.fr.html>
Par défaut, les packages situés sur un dépôt ont une priorité de 500.
Sauf le dépôt des Backports qui a une priorité de 100.
Ces priorités sont utilisées pour gérer plusieurs dépôts.
On peut afficher les priorités des dépôts avec la commande :
~~~
$ apt-cache policy
100 /var/lib/dpkg/status
release a=now
100 http://mirror.evolix.org/debian stretch-backports/main amd64 Packages
release o=Debian Backports,a=stretch-backports,n=stretch-backports,l=Debian Backports,c=main,b=amd64
origin mirror.evolix.org
500 http://pub.evolix.net stretch/ Packages
release c=
origin pub.evolix.net
500 http://security.debian.org/debian-security stretch/updates/non-free amd64 Packages
release v=9,o=Debian,a=stable,n=stretch,l=Debian-Security,c=non-free,b=amd64
origin security.debian.org
[…]
~~~
On peut réaliser du _pinning APT_ en modifiant la priorité des packages via le fichier `/etc/apt/preferences` ou des fichiers `/etc/apt/preferences.d/*`.
Voici quelques informations utiles :
* avec la priorité -1 un package n'est jamais installé
* de 1 à 99, le package sera installé uniquement si aucune version n'est déjà installée
* de 100 à 499, le package sera installé/mis à jour SAUF si il existe une version dans un autre dépôt avec priorité supérieure à 500
* de 500 à 989, le package sera installé (ou mis à jour si version plus récente) => CAS STANDARD
* de 990 à 999, le package sera installé (ou mis à jour si version plus récente) même si une version par défaut a été définie (`APT::Default-Release`)
* au dessus de 1000, le package sera installé ou mis à jour même si sa version est inférieure à celle installée
## Astuces