Introduction
Sous Ubuntu, les logiciels sont généralement distribués sous forme de paquets. Les dépôts publient les fichiers de paquets ainsi que des métadonnées qui décrivent leurs noms, leurs versions, leurs dépendances et leurs emplacements de téléchargement. apt fonctionne avec les dépôts et résout les dépendances ; dpkg gère, à un niveau inférieur, la base de données des paquets .deb installés.
Vous allez mettre à jour les métadonnées, effectuer une recherche avant l’installation, inspecter un paquet installé, le supprimer, puis installer un fichier .deb local de manière déterministe. Chaque modification utilise un paquet d’entraînement que vous pouvez supprimer, et vous pourrez vérifier les résultats à partir de l’état des paquets plutôt qu’en consultant l’historique du terminal.
Lire l’état des paquets et les sources
Dans cette étape, vous allez distinguer la configuration des dépôts, les métadonnées disponibles et l’état des paquets installés.
Inspectez les définitions de sources activées. Les images Ubuntu modernes peuvent utiliser des fichiers .list ou .sources. Ce pipeline en lecture seule recherche dans les deux emplacements : grep -R effectue une recherche récursive, -h masque les noms des fichiers sources, -s supprime les messages concernant les fichiers manquants et -E active le motif groupé. head limite l’affichage aux douze premières lignes correspondantes :
grep -RhsE '^(deb |Types:|URIs:|Suites:)' /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null | head -n 12
Demandez à dpkg si Bash est installé. -W sélectionne les enregistrements des paquets, tandis que -f définit le format d’affichage. ${Package}, ${Version} et ${db:Status-Status} sont des champs dpkg, et non des variables du shell, car le format se trouve entre apostrophes :
dpkg-query -W -f='package=${Package} version=${Version} status=${db:Status-Status}\n' bash
dpkg-query lit l’état local des paquets installés. En revanche, apt-cache policy compare la version installée aux versions connues des dépôts configurés :
apt-cache policy bash
Enregistrez une observation stable de l’état du paquet installé :
mkdir -p /home/labex/project/package-lab
dpkg-query -W -f='${Package} ${db:Status-Status}\n' bash > /home/labex/project/package-lab/bash-state.txt
cat /home/labex/project/package-lab/bash-state.txt
Actualiser les métadonnées des dépôts
Dans cette étape, vous allez actualiser l’index des paquets et comprendre ce que modifie apt update.
Exécutez :
sudo apt update
Cette commande télécharge les métadonnées actuelles des dépôts. Elle n’installe pas les dernières versions de tous les paquets ; apt upgrade est l’opération distincte qui met à niveau les paquets installés.
Inspectez le répertoire du cache des métadonnées :
ls -ld /var/lib/apt/lists
find /var/lib/apt/lists -maxdepth 1 -type f | head
Enregistrez le nombre de fichiers de métadonnées ordinaires présents :
find /var/lib/apt/lists -maxdepth 1 -type f | wc -l | tr -d ' ' > /home/labex/project/package-lab/index-file-count.txt
cat /home/labex/project/package-lab/index-file-count.txt
Rechercher, inspecter et installer un paquet provenant d’un dépôt
Dans cette étape, vous allez examiner un paquet avant de l’installer.
Recherchez dans les noms et les descriptions des paquets l’utilitaire d’affichage des arborescences :
apt search '^tree$'
Lisez ses métadonnées :
apt show tree
Installez-le en prenant en charge ses dépendances. sudo fournit les privilèges d’administration nécessaires et -y répond automatiquement par « oui » à cette demande d’installation déjà vérifiée :
sudo apt install -y tree
Vérifiez à la fois l’état du paquet et la recherche de la commande, puis utilisez cette dernière :
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' tree | tee /home/labex/project/package-lab/tree-installed.txt
command -v tree
tree -L 1 /home/labex/project/package-lab
Répertoriez les chemins fournis par le paquet :
dpkg -L tree | head
Supprimer un paquet et vérifier le résultat
Dans cette étape, vous allez supprimer le paquet d’entraînement provenant du dépôt et distinguer les opérations de nettoyage associées.
Supprimez tree :
sudo apt remove -y tree
remove supprime les programmes installés par le paquet, mais peut conserver sa configuration. purge supprime également la configuration appartenant au paquet. autoremove supprime les dépendances installées automatiquement qui ne sont plus nécessaires ; examinez sa proposition avant de la confirmer sur un hôte réel.
Prévisualisez les opérations de nettoyage des dépendances sans modifier le système. L’option --dry-run effectue le calcul, mais ne supprime rien :
sudo apt autoremove --dry-run | tee /home/labex/project/package-lab/autoremove-preview.txt
Lisez les actions proposées avant d’exécuter apt autoremove sans --dry-run, en particulier sur un hôte partagé ou de production.
La session Bash actuelle peut avoir mémorisé l’ancien chemin d’une commande. Videz ce cache des emplacements de commandes, puis vérifiez que la commande a disparu et enregistrez l’état de la base de données des paquets :
hash -r
command -v tree || echo "tree command is unavailable"
dpkg-query -W -f='${db:Status-Status}\n' tree 2>/dev/null || echo "not-installed" | tee /home/labex/project/package-lab/tree-removed.txt
Garantissez un marqueur stable, que dpkg conserve ou non un enregistrement résiduel :
if dpkg-query -W -f='${db:Status-Status}' tree 2>/dev/null | grep -qx installed; then echo "still-installed"; else echo "not-installed"; fi > /home/labex/project/package-lab/tree-removed.txt
cat /home/labex/project/package-lab/tree-removed.txt
Inspecter et installer un paquet deb local
Dans cette étape, vous allez inspecter un fichier .deb préparé, l’installer avec apt, exécuter sa commande, puis le supprimer proprement.
Accédez à l’espace de travail et inspectez les métadonnées ainsi que le contenu du paquet sans l’installer :
cd /home/labex/project/package-lab
dpkg-deb -I labex-greeter_1.0_all.deb
dpkg-deb -c labex-greeter_1.0_all.deb
Le préfixe ./ indique à apt qu’il s’agit d’un fichier local et non du nom d’un paquet provenant d’un dépôt :
sudo apt install -y ./labex-greeter_1.0_all.deb
Interrogez le paquet et exécutez sa commande :
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' labex-greeter
labex-greeter | tee local-package-output.txt
Supprimez le paquet après le test et vérifiez que la commande fournie a disparu :
sudo apt remove -y labex-greeter
if command -v labex-greeter >/dev/null; then echo "still-installed"; else echo "local-package-removed"; fi > local-package-state.txt
cat local-package-state.txt
Résumé
Vous avez distingué les métadonnées des dépôts de l’état des paquets installés, actualisé les index apt, examiné un paquet avant son installation, vérifié les fichiers fournis et la recherche de la commande, supprimé un paquet provenant d’un dépôt et mené à bien le cycle de vie complet d’un fichier .deb local inspecté.



