Debian : apt-dpkg et plus

notes diverses et non complètes sur l’utilisation d’apt


par maurice

Gestion des Paquets .deb avec APT et DPKG

APT est une interface de gestion des paquets des systèmes Linux Debian. apt est le programme de base permettant d’installer, de mettre à jour ou de supprimer des paquets.

le fichier /etc/apt/sources.list vous donne la liste des sources des paquets.
Si vous avez des difficultés à créer votre source.list, allez à cette adresse :
https://www.debian-fr.xyz/debgen/
la syntaxe générale d’une ligne :
• deb : Adresse de paquets binaires (compilés)
• deb-src : Adresse de paquets sources
• main : Les paquets principaux
• contrib : Les paquets plus vraiment supportés
• non-free : Les paquets de logiciels non libres (propriétaires)

Pour passer en root, il vous faut maintenant taper :
$ su - ou su -l
En quelque sorte le « su » d’avant ne respectait pas la norme posix, alors que maintenant, il la respecte.
Voir explication ici :
https://debian-facile.org/viewtopic.php?id=24901

Les commandes root (administrateur) sont précédées de #
les commandes simples utilisateurs sons précédées de $
# apt update
L’instruction update va rechercher les mises à jour disponibles pour votre système et vos programmes installés en se basant sur les sources définies dans /etc/apt/source.list

# apt upgrade
L’option upgrade installe les mises à jour identifiée avec apt update sans supprimer les paquets installés et sans en installer de nouveaux. S’il y a de nouvelles dépendances à installer, les paquets présents ne sont pas mis à jour.
Cette commande vous propose de voir les paquets qui vont être mis à jour avec.
# apt list - -upgradable

Apt search peut être utilisé en root et en simple user, ceci pour rechercher un paquet.
# apt search nom de paquet
pour n’avoir que ce paquet afficher, mettre ^paquet-deb$
# apt search ^nom du paquet$

Parfois le paquet n’existe plus en stable mais il peut exister en oldstable, un testing ou en sid.
Pour le savoir vous devez installer le paquet deb « devscripts »
# apt install devscripts
la commande sera, en root
# rmadison « paquet-deb »

Exemple :
# rmadison libavcodec-extra
libavcodec-extra | 6:11.12-1 deb8u1 | oldoldstable | all
libavcodec-extra | 7:3.2.14-1 deb9u1 | oldstable | all
libavcodec-extra | 7:4.1.6-1 deb10u1 | stable | all
libavcodec-extra | 7:4.3.2-0+deb11u2 | testing | amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
libavcodec-extra | 7:4.3.2-0+deb11u2 | unstable | amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x
libavcodec-extra | 7:4.3.2-2 | experimental | armel, mipsel
libavcodec-extra | 7:4.4-1 | experimental | amd64, arm64, armhf, i386, mips64el, ppc64el, s390x

Pour chercher une dépendances
# apt depends paquet-deb

Pour installer un paquet
# apt install paquet-deb

# apt install apt-listbugs
vous informera des bugs à l’installation du paquet lors des mises à jour ou des installations.

Pour supprimer un paquet
#apt remove - -purge paquet-deb

Pour rechercher de quel paquet provient un fichier :
# dpkg -S fichier

La commande show vous affiche toutes les informations détaillées sur le(s) paquet(s)
exemple :
$ apt show gedit
Package : gedit
Version : 3.30.2-2
Priority : optional
Section : gnome
Maintainer : Debian GNOME Maintainers
Installed-Size : 1 980 kB
Depends : python3:any (>= 3.2 ), python3.7, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.4), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.2.4), libenchant1c2a (>= 1.6.0), libgdk-pixbuf2.0-0 (>= 2.25.2), libgirepository-1.0-1 (>= 0.9.3), libglib2.0-0 (>= 2.44), libgspell-1-1 (>= 1.0.0), libgtk-3-0 (>= 3.21.4), libgtksourceview-3.0-1 (>= 3.21.5), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpeas-1.0-0 (>= 1.14.1), libx11-6, libxml2 (>= 2.7.4), gir1.2-gtk-3.0 (>= 3.21.3), gir1.2-gtksource-3.0 (>= 3.21.2), gedit-common (>= 3.30), gedit-common (<> = 3.0), python3-gi-cairo (>= 3.0), gir1.2-peas-1.0, gir1.2-glib-2.0, gir1.2-pango-1.0, iso-codes
Recommends : zenity, yelp
Suggests : gedit-plugins
Homepage : https://wiki.gnome.org/Apps/Gedit
Tag : implemented-in::c, interface::graphical, interface::x11, role::program,
suite::gnome, uitoolkit::gtk, use::editing, works-with::text,
works-with::unicode, x11::application
Download-Size : 432 kB
APT-Manual-Installed : yes
APT-Sources : http://deb.debian.org/debian buster/main amd64 Packages
Description : Éditeur de texte officiel de l’environnement de bureau GNOME
gedit est un éditeur de texte qui offre la plupart des fonctions de base
que vous attendez d’un éditeur de texte, avec en plus des fonctionnalités
rarement trouvées dans les éditeurs simples. C’est une application avec
une interface graphique qui supporte l’édition de plusieurs fichiers texte
dans une seule fenêtre (quelquefois connu comme onglets ou MDI).
.
gedit gère n’importe quelle langue pour les textes grâce à l’utilisation
du codage Unicode UTF-8 pour les fichiers édités. Les fonctionnalités de
base comprennent la coloration syntaxique du code source, l’auto-
indentation et le support pour l’impression et l’aperçu avant impression.

gedit est également extensible par le biais de son système de modules,
parmi lesquels on peut citer le support pour la vérification
orthographique, la comparaison de fichiers, la visualisation de
changements dans les versions CVS et l’ajustement des niveaux
d’indentation.

Dans votre distribution, pour avoir la liste de paquets qu’il est possible de mettre à jour
# apt install apt-file
# apt-file update
# apt-file search paquet-deb

en cas de problèmes divers :
vous pouvez déjà aller voir si des paquets posent problèmes

# dpkg -l | grep -v ^ii
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err ?=(aucune)/besoin Réinstallation (État,Err : majuscule=mauvais)
||/ Nom Version Architecture Description
+++-=============================================-========================================-============-=======================================================================================
dans ce cas, tout va bien, sinon il y aura des réponses :
voir explications en fin d’article ( dpkg-query).
Les fichiers débutants avec l’option rc sont des paquets supprimés et mal purgés
Pour les purger :

# dpkg - -purge paquet
Si il y en à beaucoup
# dpkg -l | grep ’^rc’ | awk ’print $2’ | xargs dpkg -P
ou
# dpkg -l | awk ’/^rc/ print $2

Si vous utilisez aptitude
# aptitude search ’ c’
# aptitude purge ’ c’

pour afficher la liste des paquets obsolètes (attention, certains paquets que vous voulez garder, mais dont vous vous servez tnés peux peuvent être listés dans cette commande.
# aptitude search ’ o’

Enlever les anciennes versions obsolètes avec :
# apt-get autoclean

Supprimer les paquets du cache avec
# apt-get clean

Si vous êtes coincés et que ça n’avance pas, essayez l’option - -fix-broken
# apt install -f
cette option essaye de réparer un système dont les dépendances sont défectueuses
Cette option, utilisée avec apt install ou apt remove...

puis tentez :
# apt full-upgrade
ce qui installe les versions candidates des paquets installés en installant ou en supprimant d’autres paquets si nécessaire, tiens compte des dépendances..
vous obtiendrez toutes les dernières mises à jour sur votre système et du noyau.

Lors du passage à une version supérieure de votre distribution, mettez tout vos paquets à jour
Puis ré-ecrivez votre fichier source.list
ensuite mettez tout à jour
# apt dist-upgrade
ou
# apt full-upgrade

Problèmes possibles pendant une mise à niveau
La mise à niveau échoue avec « Impossible de faire une configuration immédiate ».
Dans certains cas, l’étape apt full-upgrade peut échouer après le téléchargement des paquets avec :
Si cela se produit, exécuter .
#apt full-upgrade -o APT::Immediate-Configure=0
devrait permettre la mise à niveau.

Pour voir la liste des métapaquets linux-image disponibles, exécutez :
# dpkg -l "linux-image*" | grep ^ii | grep -i meta

# apt-cache policy permet de consulter les priorités des différentes sources de paquets ainsi que celles des paquets qui bénéficient d’un traitement particulier

# apt-cache dumpavail qui affiche les en-têtes de toutes les versions disponibles de tous les paquets

# apt-cache pkgnames affiche une liste de tous les paquets existants dans la mémoire cache.

# apt-get autoremove pour supprimer proprement les paquets ainsi que les librairies dépendantes.
vérifir avant de confirmer

Pour obtenir un rapport plus détaillé pour un paquet particulier, lancez la commande :
# dpkg - -status packagename

Pour afficher des informations détaillées des versions disponibles pour un paquet et les paquets ayant des dépendances inverses sur lui :
# apt-cache showpkg paquet

Reinstaller un paquet si nécessaire
# apt install - -reinstall

Pour construite (ou reconstruire) le cache à partir des sources qui se trouvent dans /etc/apt/sources.list il est nécessaire d’utiliser la commande gencaches
# apt-cache gencaches

À installer si vraiment besoin.

apt install apt-show-source
Afficher les informations des paquets source

apt-install apt-show-versions
afficher les versions de paquet disponibles dans la distribution

apt install apt-src
gestionnaire des paquets source Debian

apt install apt-transport-https
transport de téléchargement https pour APT

apt install apt-transport-s3
transport APT pour les dépôts privés sur AWS S3

apt install apt-transport-spacewalk
transport APT pour communiquer avec des serveurs Spacewalk

ap -install apt-transport-tor
transport APT pour les téléchargements de paquets anonymes via Tor

apt install apt-utils
utilitaires liés à la gestion de paquets

apt install apt-venv
environnement virtuel apt

apt install apt-xapian-index
outils de recherche et de maintenance dans un index Xapian des paquets Debian

on peut lister les paquets de transition avec :
aptitude search smetapackages

aptitude search soldlibs
aptitude search smetapackages soldlibs

pour voir les paquets de priorité « important
aptitude search ’ pimportant’

Pour savoir pourquoi un paquet est installé, tu peux utiliser :
aptitude why $paquet

Vous pouvez lister les paquets installés
$ dpkg -l
les mettre dans un fichier texte
$ dpkg -l > liste-paquets.txt
dpkg -l | grep vim
ou n’en voir qu’un
$ dpkg -l | grep apache2

$ man apt (manuel d’apt)

dpkg-query - Un outil pour interroger la base de données de dpkg
il affiche les informations sur les paquets connus par la base
la commande citée plus haut « dpkg -l | grep -v ^ii » en fait partie

# dpkg-query -l apache2
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err ?=(aucune)/besoin Réinstallation (État,Err : majuscule=mauvais)
||/ Nom Version Architecture Description
+++-==============-================-============-=================================
ii apache2 2.4.38-3+deb10u4 amd64 Apache HTTP Server

$ dpkg -l apache2
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
|/ Err ?=(aucune)/besoin Réinstallation (État,Err : majuscule=mauvais)
||/ Nom Version Architecture Description
+++-==============-================-============-=================================
ii apache2 2.4.38-3+deb10u4 amd64 Apache HTTP Server
Les trois premières colonnes affichées montrent dans l’ordre : l’action souhaitée,
l’état du paquet et les erreurs.

Action souhaitée :
u = Inconnu (Unknown)
i = Installer (Install)
h = Garder (Hold)
r = Supprimer (Remove)
p = Purger (Purge)

État du paquet :
n = Non installé (Not-installed)
c = Fichiers de configuration (Config-files)
H = Semi-installé (Half-installed)
U = Décompressé (Unpacked)
F = Semi-configuré (Half-configured)
W = Attente de déclenchements (Triggers-awaiting)
t = Déclenchements en attente (Triggers-pending)
i = Installé (Installed)

Plus d’infos sur dpkg-query ici
https://man.cx/dpkg-query(1)/fr
https://man.cx/dpkg(1)

autres paquets à voir :
cruft propose ainsi un traitement un peu plus élaboré qu’un simple balayage du système de fichiers, couplé à des requêtes sur la base dpkg.

# apt search cruft
En train de trier... Fait
Recherche en texte intégral... Fait
cruft/stable 0.9.38 amd64
identifier les fichiers systèmes devenus inutiles

Attention, il vous faut regarder à deux fois avant de supprimer quelque fichier que ce soit !
Man cruft est fortement conseillé

l’outil debsums
$ apt search debsums
En train de trier... Fait
Recherche en texte intégral... Fait
debsums/stable,stable,now 2.2.3 all [installé]
outil de vérification des fichiers de paquets installés grâce à des sommes de contrôle MD5
Les options de debsums
- a,
Vérifie aussi les fichiers de configuration (ignorés par défaut).
- e
Vérifie seulement les fichiers de configuration.
- c
Envoie la liste des fichiers modifiés sur la sortie standard (ceci implique -s).
- l
Liste les paquets (ou fichiers .deb) qui n’ont pas de somme de contrôle MD5.
- s
Affiche seulement les erreurs.
- m, —md5sums=fichier
Lit la liste des sommes de contrôle dans fichier.
- r, - -root=répertoire
Répertoire racine à vérifier (/ par défaut).
- d, - -admindir=répertoire
Répertoire administratif de dpkg (/var/lib/dpkg par défaut).
- p, - -deb-path=répertoire[:répertoire...]
Répertoires où chercher les fichiers .deb dérivés du nom du paquet (répertoire courant par défaut).

Quand on utilise apt-get autoclean ou qu’on ne vide pas du tout le cache, /var/cache/apt/archives est un paramètre intéressant pour cette option. La commande :
apt-get - -reinstall -d install `debsums -l`
peut être utilisée pour remplir à nouveau le cache avec les paquets qui ne sont pas déjà dans le cache.

Aptitude

aptitude est une interface « ncurses »en ligne de commande basée sur plusieurs bibliothèques Apt, basé sur du texte et se lance à partir d’un terminal

Qu’est ce que Ncurses ?Retour ligne automatique
ncurses est une bibliothèque qui fournit des fonctions de définition de touches du clavier, de couleurs d’écran et permet l’affichage de plusieurs fenêtres sans recouvrement sur un terminal texte.

Voulez vous que vos programmes disposent d’une interface couleur sur un terminal texte ? Ncurses est une bibliothèque qui offre ce type de fonctionnalité pour les terminaux en mode texte. Ncurses peut Retour ligne automatique
utiliser tout l’écran,, créer et gérer des fenêtres, en permettant l’utilisation de la sourisRetour ligne automatique
Utiliser les touches de fonction du clavier.Retour ligne automatique
comme midnight-commander, ou vi

Mettre à jour la liste des paquets :Retour ligne automatique
# aptitude update

Mettre à jour les paquets : Retour ligne automatique
# aptitude safe-upgrade

# installer vim-noxRetour ligne automatique
# aptitude install vim-nox

Supprimer vim-noxRetour ligne automatique
# aptitude remove vim-nox

# aptitude purge vim-nox

pour mettre en oeuvre les mises à jour de sécuritéRetour ligne automatique
# aptitude updateRetour ligne automatique
# aptitude full-upgrade

Activation des mises à jour automatiques (mises à jour sans surveillance)

https://wiki.debian.org/UnattendedUpgrades
https://www.linuxtricks.fr/wiki/debian-activer-les-mises-a-jour-automatique-avec-unattended-upgrades

# apt search unattended-upgrade
En train de trier... Fait
Recherche en texte intégral... Fait
apt-config-auto-update/stable,stable 2.1 all
configuration APT pour mettre à jour le cache automatiquement
unattended-upgrades/stable,stable 1.11.2 all
installation automatique des mises à jour de sécurité

le paquet apt-listchanges - Affiche les nouvelles entrées du journal des modifications des paquets de l’archive Debian, il affiche ce qui a changé dans la nouvelle version d’un paquet Debian par rapport à la version actuellement installée sur le système.
Il réalise cela en extrayant les entrées appropriées des fichiers NEWS.Debian et changelog[.Debian], qui se trouvent habituellement dans le répertoire /usr/share/doc/paquet, de l’archive d’un paquet Debian. (voir man)

Le fichier de configuration par défaut du package unattended-upgrades se trouve dans /etc/apt/apt.conf.d/50unattended-upgrades

Pour activer les mises à jour sans surveillance , vous devez vous assurer que le stub de configuration apt /etc/apt/apt.conf.d/20auto-upgrades contient au moins les lignes suivantes.
# éditeur /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1" ;
APT::Périodique::Mise à niveau sans surveillance "1" ;
Le fichier /etc/apt/apt.conf.d/20auto-upgrades peut être créé manuellement ou en exécutant la commande suivante en tant que root :
# dpkg-reconfigure -plow unattended-upgrades

# apt install unattended-upgrades apt-listchanges

À propos du message :
« package linux-image-amd64 upgradable but fails to be marked for upgrade
Packages that will be upgraded : »

en gros ça dit :
Démarrage du script de mise à niveau automatique
Les origines permises sont : origin=Debian,codename=buster,label=Debian-Security
Le paquet linux-image-amd64 peut être mis à niveau mais n’est pas marqué pour la mise à niveau ()

apt upgrade n’ajoute pas de nouveaux packages. Le linux-image-amd64 est un méta-paquet qui dépend souvent de l’installation d’un nouveau paquet qui est la version la plus récente du noyau.
Quoi qu’il en soit, si vous souhaitez passer à la dernière version du noyau, utilisez apt dist-upgrade, ce qui peut-être dangereux

dist-upgrade peut être assez dangereux, car il peut supprimer des packages pour résoudre des situations de dépendance complexes. Contrairement à vous, APT n’est pas toujours assez intelligent pour savoir si ces ajouts et suppressions pourraient faire des ravages.

Trouvé cette explication sur le net. a potasser avant toute chose

Si la mise à niveau nécessite la suppression d’un autre package ou l’installation d’un nouveau package, le package sera "conservé".
Les packages actuellement installés avec les nouvelles versions disponibles sont récupérés et mis à niveau ; en aucun cas les packages actuellement installés ne sont supprimés, ou les packages non déjà installés ne sont récupérés et installés.
Pour surmonter cela, vous pouvez faire

# apt - -with-new-pkgs upgrade

Cela permet d’installer de nouveaux packages. Il vous indiquera quels packages seront installés et vous demandera avant de procéder à l’installation.

Le rapport de base est qu’il apt upgrade ne mettra pas à niveau les packages pour lesquels le gestionnaire de packages souhaite supprimer et réinstaller le package. Cela se produit beaucoup dans les correctifs de sécurité car, souvent, ce sont en fait des bibliothèques précurseurs de la compilation finale distribuable qui ont été corrigées.
Half-Installed »(à moitié installé) ou « Failed-Config »(Échec de la configuration), ainsi que ceux qui sont dans un état d’erreur.

# dpkg - -audit

les paquets installés
# dpkg - -get-selections "*" > /paquets-actuels.txt

Si vous désirez vérifier quels paquets étaient bloqués pour apt, il vous faudra utiliser :
# dpkg - -get-selections | grep ’hold$’

La commande apt-mark
Elle peut être utilisée comme interface unique pour diverses
configurations d’un paquet, par exemple pour le marquer comme installé automatiquement ou
manuellement, ou pour modifier les sélections de dpkg telles que hold install deinstall et
purge qui sont suivies par exemple par les commandes apt-get dselect-upgrade ou aptitude.
PAQUETS INSTALLÉS AUTOMATIQUEMENT ET MANUELLEMENT
Lorsque l’installation d’un paquet est demandée et que par voie de dépendances d’autres
paquets sont installés, ces paquets sont marqués comme ayant été automatiquement
installés, tandis que le paquet que vous avez installé explicitement est marqué comme manuellement installé. Une fois que ces paquets automatiquement installés ne sont plus
liés à un paquet installé manuellement, ils ne seront plus considérés comme nécessaires et
apt ou aptitude, par exemple, proposeront au moins de les supprimer.
Voir le man pour toutes les options

Server apt kernel purge

Il existe un fichier généré automatiquement qui indique à apt-get les noyaux à supprimer automatiquement et ceux à conserver.
Le fichier qui indique à apt-get leur noyau est /etc/apt/apt.conf.d/01autoremove-kernels qui est généré à partir de /etc/kernel/postinst.d/apt-auto-removal.

momo# uname -r
4.19.0-17-amd64

momo# cat /etc/apt/apt.conf.d/01autoremove-kernels
// DO NOT EDIT ! File autogenerated by /etc/kernel/postinst.d/apt-auto-removal
APT::NeverAutoRemove

"^linux-image-4\.19\.0-16-amd64$" ;
"^linux-image-4\.19\.0-17-amd64$" ;
"^linux-headers-4\.19\.0-16-amd64$" ;
"^linux-headers-4\.19\.0-17-amd64$" ;
"^linux-image-extra-4\.19\.0-16-amd64$" ;
"^linux-image-extra-4\.19\.0-17-amd64$" ;
"^linux-modules-4\.19\.0-16-amd64$" ;
"^linux-modules-4\.19\.0-17-amd64$" ;
"^linux-modules-extra-4\.19\.0-16-amd64$" ;
"^linux-modules-extra-4\.19\.0-17-amd64$" ;
"^linux-signed-image-4\.19\.0-16-amd64$" ;
"^linux-signed-image-4\.19\.0-17-amd64$" ;
"^linux-image-unsigned-4\.19\.0-16-amd64$" ;
"^linux-image-unsigned-4\.19\.0-17-amd64$" ;
"^kfreebsd-image-4\.19\.0-16-amd64$" ;
"^kfreebsd-image-4\.19\.0-17-amd64$" ;
"^kfreebsd-headers-4\.19\.0-16-amd64$" ;
"^kfreebsd-headers-4\.19\.0-17-amd64$" ;
"^gnumach-image-4\.19\.0-16-amd64$" ;
"^gnumach-image-4\.19\.0-17-amd64$" ;
"^.*-modules-4\.19\.0-16-amd64$" ;
"^.*-modules-4\.19\.0-17-amd64$" ;
"^.*-kernel-4\.19\.0-16-amd64$" ;
"^.*-kernel-4\.19\.0-17-amd64$" ;
"^linux-backports-modules-.*-4\.19\.0-16-amd64$" ;
"^linux-backports-modules-.*-4\.19\.0-17-amd64$" ;
"^linux-modules-.*-4\.19\.0-16-amd64$" ;
"^linux-modules-.*-4\.19\.0-17-amd64$" ;
"^linux-tools-4\.19\.0-16-amd64$" ;
"^linux-tools-4\.19\.0-17-amd64$" ;
"^linux-cloud-tools-4\.19\.0-16-amd64$" ;
"^linux-cloud-tools-4\.19\.0-17-amd64$" ;
"^linux-buildinfo-4\.19\.0-16-amd64$" ;
"^linux-buildinfo-4\.19\.0-17-amd64$" ;
"^linux-source-4\.19\.0-16-amd64$" ;
"^linux-source-4\.19\.0-17-amd64$" ;
 ;
/* Debug information :
# dpkg list :
ii linux-image-4.19.0-14-amd64 4.19.171-2 amd64 Linux 4.19 for 64-bit PCs (signed)
ii linux-image-4.19.0-16-amd64 4.19.181-1 amd64 Linux 4.19 for 64-bit PCs (signed)
iF linux-image-4.19.0-17-amd64 4.19.194-1 amd64 Linux 4.19 for 64-bit PCs (signed)
iU linux-image-amd64 4.19+105+deb10u12 amd64 Linux for 64-bit PCs (meta-package)
# list of installed kernel packages :
4.19.0-14-amd64 4.19.171-2
4.19.0-16-amd64 4.19.181-1
4.19.0-17-amd64 4.19.194-1
# list of different kernel versions :
4.19.194-1
4.19.181-1
4.19.171-2
# Installing kernel : 4.19.194-1 (4.19.0-17-amd64)
# Running kernel : 4.19.181-1 (4.19.0-16-amd64)
# Last kernel : 4.19.194-1
# Previous kernel : 4.19.181-1
# Kernel versions list to keep :
4.19.181-1
4.19.194-1
# Kernel packages (version part) to protect :
4\.19\.0-16-amd64
4\.19\.0-17-amd64
*/

voir explications ici

https://www.it-swarm-fr.com/fr/server/comment-apt-decide-t-il-combien-de-vieux-noyaux-conserver/961367042/

un mot sur les modules de kernel

Les modules correspondent à des drivers que
l’on peut charger et décharger dynamiquement de la mémoire.

Vous trouverez le ou les modules dans le répertoire/lib/modules/(version kernel)
ls -lha /lib/mod
modprobe.d/ modules/ modules-load.d/

Pour une raison donnée ; on peut aussi décharger un module. Pour cela, on utilise la commande rmmod . Exemple avec le module floppy :
Copier vers le presse-papierCode BASH :
modprobe -rf floppy
On peut aussi blacklister un module. Le module incriminé est alors placé dans une liste noire et ne sera plus chargé au démarrage. Par exemple, avec le module du beep interne :

# echo "blacklist pcspkr" >> /etc/modprobe.d/blacklist

smod pour lister les modules
# lsmod | grep -i

si le troisième champ est 0
exemple :
lsmod | grep jfs
jfs 208896 0
le module est inutile
# rmod module

Si un module contient des données persistantes (voir insmod et modules.conf ), la suppression du module écrit toujours les données persistantes dans le nom de fichier dans l’entrée de symbole __insmod _P. Vous pouvez également enregistrer les données persistantes à tout moment par rmmod -e , cela ne déchargera aucun module.

Lorsque les données persistantes sont écrites dans le fichier, elles sont précédées d’une ligne de commentaire générée, #% kernel_version timestamp Les lignes de commentaire générées commencent par ’#%’, tous les commentaires générés sont supprimés du fichier existant, les autres commentaires sont conservés. Les valeurs de données enregistrées sont écrites dans le fichier, préservant l’ordre existant des commentaires et des affectations. De nouvelles valeurs sont ajoutées à la fin du fichier . Si le fichier contient des valeurs qui n’existent pas dans le module, ces valeurs sont conservées mais sont précédées d’un commentaire généré avertissant qu’elles ne sont pas utilisées. Cette dernière opération permet à un utilisateur de basculer entre les noyaux sans perdre de données persistantes et sans recevoir de messages d’erreur.

depmod - Gestion des dépendances entre les modules du noyau
Les utilitaires depmod et modprobe ont été conçus pour rendre le noyau Linux modulaire, configurable pour tous les utilisateurs, administrateurs et concepteurs de distribution. depmod crée un fichier de dépendances de type « Makefile », basé sur les symboles qu’il trouve dans les modules indiqués sur la ligne de commande ou dans les répertoires indiqués par le fichier de configuration. Ce fichier est ensuite utilisé par modprobe pour charger automatiquement le bon module ou l’ensemble de modules.
L’invocation normale de depmod se fait en incluant la ligne

/sbin/depmod -a
insmod - Charger des modules dans le noyau en cours d’utilisation.
insmod essaie de lier un module dans le noyau en cours d’exécution en résolvant les noms de symboles à partir de la table des symboles exportés par le noyau.
Si le nom du fichier objet est donné sans répertoire ni extension, insmod cherchera le module dans quelques répertoires par défaut. La variable d’environnement MODPATH peut surcharger ces répertoires par défaut. Si un fichier de configuration comme /etc/modules.conf existe, il surchargera les chemins indiqués dans MODPATH.
La variable d’environnement MODULECONF peut sélectionner un fichier de configuration différent de /etc/modules.conf (ou /etc/conf.modules (obsolète)). Cette variable d’environnement prévaudra sur toutes les définitions précédentes.

Quand la variable d’environnement UNAME_MACHINE est remplie, modutils l’utilisera à la place du champ « machine » de l’appel système uname(2). Ceci est surtout utile si vous compilez des modules 64 bits dans un espace utilisateur 32 bits ou inversement ; remplissez UNAME_MACHINE avec le type de modules construits. La version actuelle de modutils ne supporte pas la construction croisée complète de modules, elle est limitée au choix entre 32 et 64 bits de l’architecture hôte.
modprobe - Manipulations haut niveau de modules chargeables (pour charger un module)
- a, - -all
Charger tous les modules au lieu de s’arrêter après le premier chargement réussi.
- c, - -showconfig
Afficher la configuration courante.
- C, - -config config
Utiliser le fichier de configuration config plutôt que (le facultatif) /etc/modules.conf pour le paramétrage. La variable d’environnement MODULECONF peut être aussi utilisée pour sélectionner (et surcharger) un fichier de configuration différent du fichier par défaut /etc/modules.conf, ou /etc/conf.modules (obsolète).

notes supplémentaires

Boucles de conflits ou de prédépendances
Il est parfois nécessaire d’activer l’option d’APT APT::Force-LoopBreak pour pouvoir temporairement retirer un paquet essentiel à cause de boucles « Conflicts/Pre-Depends ». apt vous alertera à ce propos et interrompra la mise à niveau. Vous pouvez contourner ce problème en passant l’option -o APT::Force-LoopBreak=1 sur la ligne de commande d’apt.

Il est possible que la structure de dépendances d’un système soit tellement défectueuse qu’elle requière une intervention manuelle. Habituellement, cela signifie qu’il faut utiliser apt
ou : # dpkg - -remove nom_du_paquet

pour éliminer certains des paquets en cause, ou :
# apt -f install
# dpkg - -configure –pending
voir la doc pour - -pending (reconfiguration d’un paquet)
triggers-pending (Une action différée de ce paquet a été activée, il reste à l’exécuter)
- -configure paquet...|-a|- -pending

Configuration d’un paquet dépaqueté mais non encore configuré. Si l’option -a ou - -pending est utilisée au lieu de paquet, tous les paquets dépaquetés mais non configurés sont configurés.
Pour reconfigurer un paquet qui l’a déjà été, vous devriez plutôt utiliser la commande
- P, - -purge paquet...|-a|- -pending
Purger un paquet installé ou déjà supprimé. L’action supprime tout, y compris les fichiers de configuration et tout le reste nettoyé de postrm. Si -a ou - -pending est indiqué à la place d’un nom de paquet, tous les paquets dépaquetés ou supprimés mais marqués dans le fichier /var/lib/dpkg/status comme devant être purgés seront purgés.

Note : certains fichiers de configuration peuvent être inconnus de dpkg car ils sont créés et gérés séparément par le biais de scripts de configuration. En ce cas, dpkg ne les supprimera pas lui-même et le script postrm du paquet devra s’en charger durant l’opération de purge. Cela ne s’applique bien entendu qu’aux fichiers situés dans les répertoires systèmes et non aux fichiers de configuration créés dans les répertoires « home » des utilisateurs.

Dans certains cas extrêmes, vous pourriez devoir forcer une réinstallation à l’aide d’une commande comme :
# dpkg - -install /chemin/vers/nom_du_paquet.deb

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
dpkg -V, - -verify nom-du-paquet...
Vérifie l’intégrité du nom-du-paquet ou de tous les paquets, si omis, en comparant l’information des fichiers installés par un paquet avec l’information des métadonnées des fichiers stockée dans la base de données de dpkg (depuis dpkg 1.17.2). L’origine de l’information des métadonnées des fichiers dans la base de données, ce sont les paquets binaires eux-mêmes. Ces métadonnées sont collectées au moment du dépaquetage des paquets durant le processus d’installation.
Actuellement la seule vérification fonctionnelle effectuée est une comparaison des sommes de contrôle MD5 du contenu des fichier par rapport aux valeurs stockées dans la base de données des fichiers. La vérification n’a lieu que si la base de données contient les informations nécessaires. Pour vérifier si des métadonnées manquent dans la base de données, la commande - -audit peut être employée.
On peut choisir le format de sortie avec l’option - -verify-format, par défaut c’est le format rpm, mais cela pourrait changer dans le futur, et selon le format que les programmes analysant cette sortie de commande pourraient explicitement attendre.

Dpkg -C, - -audit nom-du-paquet...
Effectue une vérification du bon état et de consistance de la base de données sur le nom-du-paquet ou sur tous les paquets si omis (vérification par paquet depuis dpkg 1.17.10). Par exemple, recherche les paquets qui n’ont été que partiellement installés sur le système ou qui ont des données de contrôle ou des fichiers manquants, incorrects ou obsolètes. dpkg suggère une manière de les corriger