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 indiquant les noms, les versions, les dépendances et les emplacements de téléchargement. apt interagit 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 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 prévu pour être supprimé et peut être vérifiée à partir de l'état des paquets plutôt que de l'historique du terminal.
Lire l'état des paquets et des 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 récentes peuvent utiliser des fichiers .list ou .sources. Cette commande 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 relatifs aux fichiers absents et -E active le motif regroupé. 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 de paquets, tandis que -f définit le format d'affichage. ${Package}, ${Version} et ${db:Status-Status} sont des champs dpkg, et non des variables shell, car le format est placé 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 d'installation :
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 contenant le 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 ordinaires de métadonnées 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$'
Consultez ses métadonnées :
apt show tree
Installez-le en gérant automatiquement ses dépendances. sudo fournit les privilèges d'administration requis et -y répond automatiquement « 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-la :
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
Affichez 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 différentes 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 les fichiers de 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 système réel.
Prévisualisez le 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, surtout sur un hôte partagé ou de production.
La session Bash actuelle peut mémoriser l’ancien chemin d’une commande. Effacez ce cache, 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
Assurez la présence d'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 et 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-le :
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, puis mené à bien le cycle complet d'un fichier .deb local inspecté.



