Cours Ubuntu 26.04 / Retirer, maintenir et réparer les paquets

Pour résoudre un problème de paquets Ubuntu, distinguez suppression, maintien d’une version, verrou d’une opération en cours et dépendances incohérentes. Lisez d’abord l’état et les diagnostics, puis simulez la modification avant de choisir l’action adaptée. Une commande de réparation n’est pas une réponse universelle à toutes les erreurs APT.

Comprendre la portée de remove, purge, autoremove et hold

Opération Effet et limite
remove Retire le paquet ; des fichiers de configuration système peuvent rester.
purge Retire aussi la configuration gérée lors de la purge du paquet ; ne signifie pas supprimer tous les fichiers personnels.
autoremove Propose de retirer les paquets marqués automatiques et devenus inutiles selon les dépendances connues.
hold Marque un paquet pour empêcher ses changements automatiques ; peut aussi différer des mises à jour de sécurité.

Utilisez uniquement hello dans une VM de laboratoire pour les manipulations de cette leçon. Notez s’il était déjà installé ou employé avant l’exercice. Le cours APT avec hello fournit la préparation et les contrôles d’installation. Ne choisissez pas un noyau, un pilote, le réseau ou l’authentification comme paquet jetable.

Une restauration de paquet n’est pas nécessairement une restauration de données. Avant de retirer un vrai service, sauvegardez sa configuration et ses données de manière cohérente, puis prévoyez comment vérifier son fonctionnement et revenir à l’état voulu.

Simuler les retraits et lire les dépendances touchées

apt-get -s remove hello
apt-get -s purge hello
apt-get -s autoremove

Comparez les listes proposées. La troisième commande vise les paquets automatiques considérés inutiles dans l’ensemble du système : elle ne se limite pas à hello. Vous pouvez examiner ces trois simulations sans décider d’appliquer les trois actions.

-s ne réserve pas l’état de la machine ; le plan peut changer avant une intervention réelle. Une simulation sans privilèges peut aussi être limitée par l’accès à certaines configurations. Relisez donc le résumé de la vraie commande et annulez si des pilotes, services ou composants importants inattendus sont concernés.

Si hello a été ajouté uniquement pour cet exercice et que le plan de retrait convient, vous pouvez exécuter :

sudo apt remove hello

N’ajoutez pas -y pour éviter l’examen du plan. Ne poursuivez pas avec purge ou autoremove par habitude. Les fichiers personnels, données applicatives et scripts de maintenance demandent une analyse propre au paquet ; le manuel apt-get d’Ubuntu précise les opérations et simulations.

Observer une mise en attente en préservant l’état initial

Cette manipulation demande hello installé. Si vous l’avez retiré dans la section précédente et souhaitez ce second exercice, réinstallez-le par le parcours APT vérifié. Une mise en attente explicite n’est pas identique à un paquet temporairement différé par le déploiement progressif d’Ubuntu.

Le bloc suivant vérifie l’état installé et lit la sélection de maintien séparément. Il conserve un maintien existant ; sinon, il ajoute puis retire le maintien de hello :

(
set -eu
pkg_state=$(dpkg-query -W -f='${db:Status-Status}' hello)
if [ "$pkg_state" != installed ]; then
    printf 'Installez le paquet de laboratoire hello avant cet exercice.\n' >&2
    exit 1
fi
held_before=$(apt-mark showhold hello)
if [ -n "$held_before" ]; then
    printf 'Maintien deja present : conserve sans modification.\n'
    apt-mark showhold hello
else
    sudo apt-mark hold hello
    apt-mark showhold hello
    sudo apt-mark unhold hello
    apt-mark showhold hello
fi
)

Sans maintien initial, hello doit apparaître après hold et ne plus apparaître après unhold. Avec un maintien initial, le bloc le laisse en place. Les autres paquets ne sont pas visés. Les parenthèses limitent les options set -eu et les variables à ce sous-shell ; elles ne rendent pas transactionnelles les modifications d’apt-mark.

Si une commande échoue après hold, le bloc peut s’arrêter avant unhold. Consultez alors apt-mark showhold hello et votre relevé initial. Annulez uniquement le maintien ajouté par cet exercice avec sudo apt-mark unhold hello ; n’enlevez pas un maintien qui existait déjà. Déverrouiller une version ne lance pas à lui seul une mise à jour.

La référence dpkg-query distingue état d’installation et sélection souhaitée ; le manuel apt-mark décrit hold, unhold et showhold. Pour un maintien durable, notez la raison, la date de réexamen et l’impact sur les correctifs de sécurité.

Identifier le travail en cours avant de toucher à un verrou

systemctl status apt-daily.service apt-daily-upgrade.service --no-pager
ps -eo pid,etime,args | grep -E '[a]pt|[d]pkg|[u]nattended'

Les mises à jour automatiques peuvent utiliser APT et dpkg. Si une opération progresse normalement, attendez. Une unité inactive ne prouve pas que tous les gestionnaires ont terminé : un processus manuel ou un autre outil peut travailler en parallèle.

ps est un instantané et le filtre par texte constitue un indice, pas une preuve exclusive du détenteur du verrou. Comparez heure de début, durée, messages et journaux. N’effacez pas les fichiers de verrou et ne tuez pas arbitrairement les processus de paquets pour libérer l’accès : vous pourriez interrompre une écriture dans la base.

Si une tâche paraît bloquée, relevez son état et son journal avant une décision d’administration adaptée. Un échec de téléchargement, une question de configuration en attente et une opération de base de données ne se traitent pas de la même façon.

Distinguer configuration inachevée et dépendances cassées

Après avoir vérifié qu’aucune autre opération de paquets n’est active, examinez les incohérences et un éventuel plan de correction :

sudo dpkg --audit
apt-get -s --fix-broken install

dpkg --audit recherche notamment des installations partielles ou des données de contrôle incohérentes. Un paquet unpacked peut être décompressé sans être configuré ; half-configured signale une configuration commencée mais inachevée. Le manuel dpkg décrit ces états et la configuration.

Si une interruption a laissé des paquets à configurer, lisez les journaux et le diagnostic, contrôlez la sauvegarde et la fenêtre d’intervention, puis choisissez si cette opération est appropriée :

sudo dpkg --configure -a

Cette commande configure les paquets décompressés en attente ; ce n’est pas une simple lecture. Elle exécute des scripts de maintenance et des déclencheurs et peut agir sur des services. Elle ne répare pas automatiquement une source de paquets indisponible ou une erreur permanente dans un script.

Pour une incohérence de dépendances, examinez d’abord le résultat simulé de --fix-broken install. Il peut proposer une installation ou une suppression. Si les actions sont adaptées à la cause et aux données à préserver, la version réelle est :

sudo apt-get --fix-broken install

Ne la combinez pas aveuglément avec d’autres réparations ni avec des options forçant les dépendances ou les signatures. Si la cause est un mélange de versions Ubuntu, un dépôt incompatible ou retiré, corrigez la source et sa configuration de confiance avant de répéter le solveur.

Vérifier la cohérence et le service après correction

sudo dpkg --audit
sudo apt-get check

Relisez tous les diagnostics. apt-get check examine les dépendances et actualise son cache de paquets ; il n’est pas un test de fonctionnement de votre application. Un audit sans problème signalé et un contrôle de dépendances réussi constituent un résultat sur l’état des paquets, pas une preuve que les données applicatives ont été restaurées.

Vérifiez séparément les unités nécessaires, leurs journaux et une vraie réponse du service depuis son client. Conservez cause identifiée, commandes retenues, plan accepté et état final. L’aide officielle Ubuntu sur les paquets fournit les bases de retrait et de dépendances ; le choix de la réparation reste lié au diagnostic rencontré.