apt-get

La commande apt-get est un véritable couteau suisse pour la gestion des packages Debian. Cette commande permet de gérer les packages binaires, les packages sources, et gère le système de dépendances et les dépôts de paquets.

Utilisation générale

La commande apt-get s'utilise avec une sous-commande qui décrit le type d'action demandé à APT. Par exemple, la ligne suivante installe KDE:

# apt-get install kde

Il est inutile de connaître la combinaison de toute les sous-commandes et options de apt-get, nous allons voir les options les plus importantes: install, update, dist-upgrade et remove.

Rechercher et installer des paquets

Commençons par la fonction la plus utilisée de la suite APT: rechercher et installer des paquets.

Rechercher un paquet se fait avec la commande apt-cache et l'option "search". Voici par exemple comment retrouver le paquet qui contient l'éditeur de texte Kate:

$ apt-cache search kate
espeak - A multi-lingual software speech synthesizer
aterm-ml - Afterstep XVT - a VT102 emulator for the X window system
highlighting-kate-doc - library documentation for highlighting-kate
kwrite - text editor for KDE 4
kate - KDE 4 Advanced Text Editor

Le nom du paquet qui nous intéresse est kate. Pour l'installer, il suffit d'utiliser apt-get avec la sous-commande install suivit du nom du package:

# apt-get install kate
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  kate
0 upgraded, 1 newly installed, 0 to remove and 9 not upgraded.
Need to get 0B/1105kB of archives.
After this operation, 3322kB of additional disk space will be used.
Selecting previously deselected package kate.
(Reading database ... 221124 files and directories currently installed.)
Unpacking kate (from .../kate_4%3a4.2.2-0ubuntu1_amd64.deb) ...
Processing triggers for man-db ...
Setting up kate (4:4.2.2-0ubuntu1) ...

Processing triggers for libc6 ...
ldconfig deferred processing now taking place

Dans ce cas-ci aucune dépendances n'est nécessaire pour installer l'application. Dans les cas où des dépendances sont nécessaires, apt-get propose de les installer et demande une confirmation.

Mettre à jour la liste des paquets et mettre à jour le système

Mettre à jour la liste des paquets

Sur les dépôts, les packages sont mis à jour en permanence. APT d'un autre coté conserve une liste des packages obtenues lors de la dernière mise à jour. Il est donc nécessaires de mettre à jour régulièrement la liste des packages.

Pour mettre à jour la liste de packages, il faut utiliser la sous-commande update:

# apt-get update
Hit http://security.ubuntu.com jaunty-security Release.gpg
Hit http://no.archive.ubuntu.com jaunty-updates Release
Hit http://no.archive.ubuntu.com jaunty/main Packages
Hit http://no.archive.ubuntu.com jaunty/restricted Packages
Reading package lists... Done

Mettre à jour la liste le système

APT permet de mettre à jour l'ensemble du système. Pour ce faire, la liste de paquet disponible est comparée à la liste des paquets installés, quand une version plus récente existe pour un paquet installé, le paquet est mis à jour.

La sous-commande pour faire une mise à jour est dist-upgrade. Mais attention, cette commande utilise la liste locale pour les paquets disponible, il vaut donc mieux mettre cette liste à jour avec update avant d'exécuter dist-upgrade.

Voici par exemple le processus d'une mise à jour:

# apt-get update
...
# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx 
9 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 4239kB of archives.
After this operation, 0B of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://no.archive.ubuntu.com jaunty-updates/main libgl1-mesa-dri 7.4-0ubuntu3.1 [2922kB]
Get:2 http://no.archive.ubuntu.com jaunty-updates/main libgl1-mesa-glx 7.4-0ubuntu3.1 [130kB]
...
Fetched 4239kB in 1s (3163kB/s)
(Reading database ... 221262 files and directories currently installed.)
Preparing to replace libgl1-mesa-dri 7.4-0ubuntu3 (using .../libgl1-mesa-dri_7.4-0ubuntu3.1_amd64.deb) ...
Unpacking replacement libgl1-mesa-dri ...
Preparing to replace libgl1-mesa-glx 7.4-0ubuntu3 (using .../libgl1-mesa-glx_7.4-0ubuntu3.1_amd64.deb) ...
Unpacking replacement libgl1-mesa-glx ...
...
Setting up libgl1-mesa-glx (7.4-0ubuntu3.1) ...

Setting up libgl1-mesa-dri (7.4-0ubuntu3.1) ...
...
Processing triggers for libc6 ...
ldconfig deferred processing now taking place

Supprimer/désinstaller un paquet

Pour désinstaller un paquet, apt-get fournit la sous-commande remove. Par exemple, voici comment désinstaller la bibliothèque GTK:

# apt-get remove libgtk*

Notez la présence du wildcard à la fin du nom de package: "libgtk*". Ce format permet de supprimer tous les packages commençant par "libgtk".

La sous-commande remove peut aussi être accompagné de l'option --purge pour supprimer les fichiers de configuration. Par exemple voici une désinstallation complète de gftp:

# apt-get remove --purge gftp*
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting gftp-gtk for regex 'gftp*'
Note, selecting gftp-text for regex 'gftp*'
Note, selecting gftp-common for regex 'gftp*'
Note, selecting gftp for regex 'gftp*'
The following packages will be REMOVED:
  gftp* gftp-common* gftp-gtk* gftp-text*
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 3834kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 221335 files and directories currently installed.)
Removing gftp ...
Removing gftp-text ...
Removing gftp-gtk ...
Purging configuration files for gftp-gtk ...
Removing gftp-common ...
Purging configuration files for gftp-common ...
Processing triggers for man-db ...

La différence entre l'option remove et remove --purge est importante. Sans --purge, la commande désinstalle le package, mais laisse en place les fichiers de configuration. Le comportement par défaut évite de perdre les données contenu dans les fichiers de configuration.

Dans les cas où il est certains que les fichiers de configuration ne contiennent aucune données importante, --purge peut être utilisé pour nettoyer complètement le système.

Installer les dépendances d'un paquet

Voyons finalement une sous-commande qui n'est pas au programme de certification mais qui est très utile pour les programmeurs et tout ceux qui veulent compiler un programme à partir des sources.

Pour compiler une application non-triviale, il faut que les librairies et les headers utilisés par l'application soient présent. Plutôt que d'installer les dépendances à la main, on peut utiliser sur apt-get avec la sous-commande build-dep. Avec build-dep, apt-get installe les packages nécessaires pour construire le package donné en argument.

Voici par exemple comment installer les dépendances de Qt:

# apt-get build-dep libqt4-dev

La sous-commande build-dep n'est pas à connaître pour les certifications Linux. Retenez néanmoins que cette possibilité existe, elle vous fera gagner du temps tôt ou tard.

Ressources

La page de manuel de apt-get décrit les modes de fonctionnement et l'ensemble des options de la commande.

La page de manuel est très utile comme référence mais elle est indigeste si vous désirez apprendre APT. Une bonne ressource est l'APT howto (en français), qui explique la configuration et l'utilisation de APT.