Ernest

Gestion des programmes de la Debian

Le logo de la distribution Debian

Sommaire


Introduction

La Debian est réputée pour la gestion très simple de l'installation / désinstallation de programmes. Ces opérations sont gérées via un système de paquets .deb et des outils APT (Advanced Packaged Tools). Nous résumons ici les différentes opérations pertinentes en la matière. Toutes les manipulations sont réalisées sur une Debian Jessie (c'est-à-dire la Testing).

[ sommaire ] | [ home ]


Le fichier sources.list

APT va se charger de récupérer les programmes que l'on souhaite installer. Pour cela, il faut lui indiquer où aller les chercher. C'est à cela que sert le fichier /etc/apt/sources.list


[ stephane@Lisa ]~$ cat /etc/apt/sources.list
deb http://debian.proxad.net/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ jessie-updates main
deb-src http://ftp.fr.debian.org/debian/ jessie-updates main

# jessie-backports, previously on backports.debian.org
deb http://ftp.fr.debian.org/debian/ jessie-backports main
deb-src http://ftp.fr.debian.org/debian/ jessie-backports main

Les lignes commençant par # sont des commentaires et donc ignorées par le système. Les autres contiennent les informations qui nous intéressent. Le premier champ de ces lignes indique le type de la source :

Le deuxième champ indique l'adresse où trouver les paquets (le dépôt), par exemple : http://debian.proxad.net/debian/

Notons que cette adresse commence ici par http. Cela signifie que la ressource est sur le web. Elle pourrait commencer avec le préfixe file://, ce qui signifie que le dépôt est sur un disque local. Il existe également des dépôts accessibles par un serveur FTP, le préfixe étant alors ftp:// ou encore des dépôts sur cd / dvd / blu-ray (préfixe cdrom://).

Le champ suivant est composé du nom de la version (ici Jessie, on aurait eu Wheezy si utilisait la version antérieure de Debian). Viennent ensuite les grands types de paquets que l'on souhaite utiliser sur son système. Debian en distingue trois :

Le fichier sources.list pointe donc sur les paquets de la distribution Jessie de tous les types (main contrib non-free). Les deux lignes suivantes pointent sur les mises-à-jour de sécurité (paquets binaires et sources). Plus bas viennent les mises-à-jour puis les backports dont nous reparlerons plus tard. Notons que puisque nous utilisons ici la distribution testing, les mises-à-jour sont relativement fréquentes. A contrario, avec une version stable de Debian, elles sont beaucoup plus rares.

Comment choisir un dépôt ? Une bonne méthode consiste à utiliser l'utilitaire apt-spy (sudo apt-get install apt-spy) qui va mesurer quel dépôt répond le plus rapidement.


$ sudo apt-spy -d testing -s FR

L'option -d permet de spécifier la distribution (stable, testing, unstable), l'option -s sert à choisir le pays dans lequel on se trouve.

Apt-spy écrit les résultats dans le fichier /etc/apt/sources.list.d/apt-spy.list (c'est pourquoi vous devez utiliser sudo, sinon il n'a pas les droits pour écrire). Il suffit ensuite de copier le résultat dans le fichier de configuration d'apt et de mettre à jour avec un apt-get update :


# sources.list generated by apt-spy v3.2.2
#
# Generated using:
#
# apt-spy \
#       -d testing \
#       -s FR
#
deb ftp://debian.advalem.net/debian/ testing main #contrib non-free
deb-src ftp://debian.advalem.net/debian/ testing main #contrib non-free
deb http://security.debian.org/ testing/updates main

[ sommaire ] | [ home ]


apt-get

Il existe plusieurs outils disponibles pour assurer la gestion des paquets Debian : synaptic, aptitude, apt-get ... Certains sont graphiques, ce qui les rend plus attractifs. Pour débuter toutefois, mieux vaut passer par apt-get, en mode texte, qui est donc plus versatile (pas de serveur X sur un serveur en prod).

Avant toute chose, il convient de mettre à jour les listes des paquets disponibles. En effet, les modifications dans les sources pourraient vous empêcher d'installer correctement un paquet. Pour ce faire on utilise la commande suivante :


# apt-get update

Une fois le système mis à jour, on installe un paquet "mon_soft" avec la commande apt-get install mon_soft. La désinstallation se fait pas la commande apt-get remove mon_soft.


# apt-get install mon_soft
# apt-get remove mon_soft

Le système garde une copie de chaque paquet téléchargé sur le système dans le répertoire /var/cache/apt/archives. Ce répertoire peut devenir particulièrement imposant en cas de mises-à-jour fréquentes (cas de la testing). On peut alors faire le ménage avec la commande apt-get clean.

Notez qu'il est possible d'installer plusieurs paquets à la fois avec la commande suivante :


apt-get install paquet1 paquet2 paquet3

Lorsqu'on désinstalle un programme, les fichiers de configuration de ce dernier sont conservés par défaut. Il est possible de forcer l'éradication complète avec l'option --purge.


$ sudo apt-get remove --purge paquet

Afin de mettre à jour son système, on utilise la commande apt-get upgrade, mais seulement après avoir mis à jour les sources...


# apt-get update && apt-get upgrade

Attention : si vous utilisez sudo, vous devez précéder chaque commande par sudo :


$ sudo apt-get update && sudo apt-get upgrade

Lorsque APT installe un paquet, il va également automatiquement installer les éventuels paquets dont le programme aura besoin. On appelle cela les dépendances, et c'est à cette condition que les programmes fonctionnent. Certaines de ces dépendances sont utilisées par plusieurs programmes, aussi lors de la désinstallation, il est parfois indispensable de ne pas les supprimer. APT propose de gérer ce mode opératoire avec la commande apt-get autoremove, qui va supprimer tous les paquets désormais inutiles et encore installés sur le système.


# apt-get autoremove

APT est également capable de récupérer les sources des paquets. Il faut pour cela avoir des dépôts de type src dans son /etc/apt/sources.list. Pour récupérer les sources de php par exemple, on utilise la commande suivante :


# apt-get source php5

Par défaut, les fichiers sont téléchargés et décompressés dans le répertoire courant.

[ sommaire ] | [ home ]


apt-cache

APT stocke de nombreuses informations en cache lors de l'opération apt-get update. Cela permet ensuite de faire une recherche par mot-clé dans ces données avec la commande apt-cache search:


$ apt-cache search editeur
libbusiness-edifact-interchange-perl - module to parse Edifact messages for book ordering
aoeui - editeur de textes, léger et discret, optimisé pour clavier Dvorak.
ed - editeur de texte ligne à ligne traditionnel d'UNIX
scite - Editeur de programmation léger en GTK

On peut consulter les en-têtes d'un paquet dont on connait le nom pour en savoir davantage à son sujet avec la commande apt-cache show paquet


$ apt-cache show vim
Package: vim
Version: 2:7.4.430-1
Installed-Size: 2063
Maintainer: Debian Vim Maintainers 
Architecture: amd64
Provides: editor
Depends: vim-common (= 2:7.4.430-1), vim-runtime (= 2:7.4.430-1), libacl1 (>= 2.2.51-8), 
libc6 (>= 2.15), libgpm2 (>= 1.20.4), libselinux1 (>= 1.32), libtinfo5
Suggests: ctags, vim-doc, vim-scripts
Description-fr: Vi IMproved - éditeur vi amélioré
 Vim est une version presque totalement compatible de l'éditeur Vi d'UNIX.

Cette commande permet en particulier de connaître le nom complet d'un paquet :


$ apt-cache show vim | grep Filename
Filename: pool/main/v/vim/vim_7.4.430-1_amd64.deb

Les informations sont plus fournies en temps normal, ici elles ont été raccourcies pour gagner de la place.

[ sommaire ] | [ home ]


dpkg

dpkg est un des programmes emblématiques de Debian, créé par Ian Jackson en 1993. Il permet notamment de fournir des informations à propos des paquets. En fait, il peut également installer / désinstaller ces derniers, toutefois, comme nous l'avons vu, APT fait très bien cela aussi. Pour autant, dpkg peut rendre bien des services, comme nous allons le voir maintenant.

Trouver des informations grâce à dpkg

Afin de connaître la liste de tous les paquets installés, on peut utiliser la commande dpkg (qu'on pipe dans un less car en général, la liste produite est longue ...) :


$ dpkg -l | less

Dans le même ordre d'idée, on peut chercher directement à savoir si un paquet est installé avec la commande suivante :


dpkg -l | grep vim

Enfin, dpkg -L peut nous fournir la liste des fichiers installés par un paquet :


~/ dpkg -L vim
/.
/usr
/usr/share
/usr/share/bug
/usr/share/bug/vim
/usr/share/bug/vim/presubj
/usr/share/bug/vim/script
/usr/share/doc
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/vim
/usr/bin
/usr/bin/vim.basic
/usr/share/doc/vim

Installer des packages hors-dépôts avec dpkg

Mais les possibilités de dpkg ne s'arrêtent pas là. En effet, il peut installer des paquets .deb, mais pas ceux des dépôts, ceux qui sont sur votre disque dur. Ainsi, certains drivers ou encore des logiciels propriétaires qui ne sont pas dans les sources Debian sont installables confortablement. Voici un exemple : imaginons que j'ai récupéré le paquet dropbox_1.6.2_amd64.deb et que je veuille l'installer pour polluer mon système et me faire spy par la NSA dès que je fous un mp3 dans le cloud (prononcer Claude. Comme Claude François. Mais sans le François quoi). J'utilise alors la commande suivante :


# dpkg -i dropbox_1.6.2_amd64.deb

Et voilà, le .deb s'installe comme un charme et toutes les dépendan ... Heu non. En fait, il y a peu de chances que cela fonctionne car les dépendances ne sont pas automatiquement satisfaites par dpkg. Mais alors quel intérêt ? Et bien en fait, si un problème de dépendances survient, il est pris en compte par apt-cache. Dès lors, vous pouvez "réparer" ces dépendances brisées (et donc installer le paquet) avec les commandes suivantes :


# apt-get update && apt-get -f upgrade

Pour finir, nous relançons notre commande dpkg -i


# dpkg -i dropbox_1.6.2_amd64.deb

Désinstaller les packages installés avec dpkg

Pour désinstaller notre package avec dpkg, nous avons deux possibilités. Si nous souhaitons conserver les fichiers de configuration (en vue d'une éventuelle réinstallation par exemple), nous pouvons utiliser la commande suivante :


# dpkg --remove dropbox

Et pour désinstaller notre package en supprimant toute trace de dropbox (ce que je recommande chaudement), nous utilisons la commande suivante :


# dpkg --purge dropbox

[ sommaire ] | [ home ]


Récapitulatif des commandes

Opération Commande
Le fichier de configuration /etc/apt/sources.list
Choisir un dépôt sudo apt-spy -d testing -s FR(résultats dans le fichier /etc/apt/sources.list.d/apt-spy.list)
Installer un programme apt-get install mon_soft
Supprimer un programme apt-get remove mon_soft
Supprimer un programme en effaçant tous les fichiers de configuration apt-get remove --purge mon_soft
Le répertoire contenant tous les paquets installés /var/cache/apt/archives/
Purger ce répertoire apt-get clean
Lister tous les paquets installés dpkg -l | less
Mettre à jour les paquets installés sudo apt-get update && sudo apt-get upgrade
Savoir si un paquet est installé dpkg -l | grep -i 'sudo'
Lister tous les fichiers installés par un paquet dpkg -L vim
Supprimer les paquets inutiles (dépendances) apt-get autoremove
Chercher un paquet par mot-clé apt-cache search mot-clé
Obtenir des détails sur un paquet apt-cache show paquet
Obtenir le nom complet d'un paquet apt-cache show paquet|grep Filename
Simuler une manipulation $ sudo apt-get -s install paquet
Répondre automatiquement yes aux questions $ sudo apt-get install -y php5
$ sudo apt-get source php5 Récupérer les sources d'un package
Installer un paquet depuis son disque dur
Si pb dépendances, utiliser les commandes suivantes
Il faut maintenant relancer dpkg -i
# dpkg -i paquet.deb
# apt-get update && apt-get -f upgrade
# dpkg -i paquet.deb
Désinstaller un paquet avec dpkg
Idem en supprimant les fichiers de conf
# dpkg --remove dropbox
# dpkg --purge dropbox

[ sommaire ] | [ home ]


Liens utiles

Manuel de référence Debian sur la gestion de paquets
La documentation officielle Debian, de très grande qualité et dans une traduction française impeccable, vous permettra d'approfondir cette brève introduction.

[ sommaire ] | [ home ]