Skip to Content

Gestion des Paquets .deb sous Debian avec dpkg, apt-get et aptitude

But de ce document

Ce document me sert de mémo sur les différentes commandes de gestion des paquets sous Debian. Je le diffuse en espérant qu’il puisse servir à d’autres personnes.

Si vous préférez utiliser une interface graphique pour gérer vos paquets, vous pouvez suivre ce mémo :

  •  http://www.coagul.org/article.php3 ?id_article=617

    Activer la completion intelligente pour faciliter l’utilisation de la ligne de commande

    Sous Linux, tout le monde connaît la complétion automatique avec la touche TAB, mais la complétion intelligente, permet en plus d’avoir la liste des options d’une commande (ex : apt-get) ou de connaître la liste des paquets commençants par certains caractères (ex : apt-get install vi +TAB). Je trouve qu’utiliser les commandes « apt » avec la complétion intelligente est pour moi plus simple que d’utiliser synaptique.

    Pour activer la complétion intelligente, il faut saisir la commande suivante à la fin du fichier «  /.bashrc » ou à la fin du fichier « /etc/profile » :

    . /etc/bash_completion

    Remarque  : Pour une utilisation en console sous KDE de la completion intelligente, il est possible aussi de dé-commenter les 3 lignes correspondantes du fichier « /etc/bash.bashrc »

    Bash avec completion dès la première tabulation

    Sous Debian, pour avoir la liste des choix possibles de la completion il est nécessaire d’appuyer deux fois sur la touche TAB.

    En ajoutant la ligne suivante à la fin du fichier « /etc/inputrc » ou du fichier «  /.inputrc », la liste des choix sera affichée dés la première tabulation (après reconnexion) :

    set show-all-if-ambiguous on

    dpkg : Utilitaire de base pour gérer les paquets Debian .deb

    dpkg est l’utilitaire de base sous Debian, pour installer, supprimer, configurer ou obtenir des informations sur des paquets (.deb). Contrairement à apt-get, il ne s’occupe pas du téléchargement et ne gère pas les dépendances.

    Opération Commande
    Installer un paquet présent en local dpkg -i Nom_Exact_Du_Paquet
    Supprimer un paquet dpkg -r Nom_Exact_Du_Paquet
    Supprimer un paquet même défectueux et marqué comme demandant une réinstallation dpkg -r —force-remove-reinstreq Nom_Exacte_Du_Paquet
    Liste complète des paquets installés dpkg -l
    Liste partielle des paquets installés dpkg -l Nom_Du_Paquetdpkg -l Début_Du_Nom_Du_Paquet* dpkg -l *Nom_Partiel_Du_Paquet*
    Rechercher l’emplacement du fichier contenu dans un paquet et le nom de ce paquet dpkg -S Nom_Partiel_Du_Fichier
    Connaître la liste des fichiers d’un paquet dpkg -L Nom_Exacte_Du_Paquet
    Informations complètes sur un paquet dpkg -p Nom_Du_Paquet
    Re-configurer un paquet dpkg-reconfigure Nom_Exacte_Du_Paquet
    Pour avoir l’historique des actions effectuées par dpkg cat /var/log/dpkg.log

    Les scripts de pré-installation et post-installation des paquets sont disponibles dans :

    /var/lib/dpkg/info.

    Dans ce répertoire, les fichiers terminés par .list donnent la liste des fichiers installés par le paquet.

    apt : Utilitaire avancé pour gérer les paquets Debian .deb

    apt-get est un utilitaire plus évolué que dpkg qui permet d’installer des paquets en les téléchargeant depuis internet (ou depuis une autre source) à partir d’une liste de sites indiqués dans le fichier « /etc/apt/sources.list  ».

    /etc/apt/sources.list

    Ce fichier contient la liste des sources des paquets.

    Voici la syntaxe générale d’une ligne :

    {deb | deb-src} URL {stable | testing | unstable} {main | contrib | non-free}

  •  deb : Adresse de paquets binaires (compilés)
  •  deb-src : Adresse de paquets sources
  •  main : Les paquets principaux
  •  contrib : Les paquets plus vraiment supportés
  •  non-free : Les paquets de logiciels non libres (propriétaires)

    La ligne suivante permet de récupérer tous les paquets binaires de la Debian testing

    deb http://ftp.fr.debian.org/debian/ testing main contrib non-free

    La même ligne avec un accès ftp:

    deb ftp://ftp.fr.debian.org/debian/ testing main contrib non-free

    Il est possible d’écrire la ligne précédente sur 3 lignes

    deb http://ftp.fr.debian.org/debian/ testing main
    deb http://ftp.fr.debian.org/debian/ testing contrib
    deb http://ftp.fr.debian.org/debian/ testing non-free

    Cette ligne est nécessaire uniquement pour pouvoir compiler des sources :

    deb-src http://ftp.fr.debian.org/debian/ testing main

    Cette ligne (facultative) permet de récupérer des paquets non autorisés aux US (ex : Algorithmes d’encryptage) :

    deb http://non-us.debian.org/debian-non-US/ testing/non-US main

    Cette ligne permet de récupérer les mises à jour de sécurité de la section principale (main)

    deb http://security.debian.org/ testing/updates main

    Voici un exemple complet pour suivre une Debian testing :

    deb ftp://ftp.fr.debian.org/debian/ testing main non-free
    deb-src ftp://ftp.fr.debian.org/debian/ testing main
    deb http://security.debian.org/ testing/updates main

    La commande « apt-setup » permet d’utiliser une interface texte pour ajouter des sources à la fin du fichier.

    La commande « netselect-apt » (apt-get install netselect-apt) permet de rechercher le miroir officiel Debian qui donne les meilleures performances de téléchargement. Il faut juste lui donner en argument la distribution utilisée :

    netselect-apt testing

    dpkg-reconfigure debconf : Configurer apt

    Cette commande, permet de modifier le paramétrage d’apt et d’indiquer le niveau de priorité à partir duquel il doit poser des questions :

    dpkg-reconfigure debconf

    apt-get update : Mettre à jour la base de données des paquets

    Opération Commande
    Mettre à jour la liste des paquets disponibles sur les sites FTP apt-get update
    Mettre à jour la liste des paquets en utilisant un autre fichier que « /etc/apt/sources.list » apt-get update -o Dir ::Etc ::SourceList=/etc/apt/monfichier

    apt-get install / remove : Installer ou supprimer des paquets

    Opération Commande
    Installer un nouveau paquet apt-get install Expression_Régulière_Du_Paquetex : apt-get install ^kde* -> Installe tout ce qui commence par kde
    Réinstaller un paquet apt-get —reinstall install paquet
    Supprimer un paquet apt-get remove Expression_Régulière_Du_Paquet
    Supprimer un paquet avec ces fichiers de configuration apt-get —purge remove Expression_Régulière_Du_Paquet

    apt-get upgrade / dist-upgrade : Mettre à jour la distribution

    Opération Commande
    Mettre à jour tout le système Débian apt-get upgrade
    Mettre à jour tout le système Débian en téléchargeant les nouvelles versions des paquets et pas seulement les mises à jour. Attention : Cette commande peut également supprimer des paquets si c’est nécessaire au fonctionnement de l’ensemble du système. Cette commande s’utilise normalement que pour passer d’une version de Debian à une autre (ex : Pour passer de Testing à Unstable) apt-get dist-upgrade
    Télécharger toutes les mises à jour sans les installer apt-get -dy upgrade
    Mettre à jour le système en utilisant un autre fichier que « /etc/apt/sources.list » apt-get upgrade -o Dir ::Etc ::SourceList=/etc/apt/monfichier
    Mettre à jour tout le système Débian jusqu’au bout, malgré les erreurs rencontrées apt-get upgrade -f

    apt-get clean : Vider le cache des paquets téléchargés

    Opération Commande
    Supprimer les paquets téléchargés dans « /var/cache/apt/archives » et installés (pour libérer de l’espace disque) apt-get clean

    apt-cache : Recherches sur les paquets

    Opération Commande
    Affiche la description d’un paquet, même si celui-ci n’est pas installé. apt-cache show paquet
    Cherche « text » dans la description des paquets, même si celui-ci n’est pas installé. apt-cache search text
    Pour affiner la recherche, il est possible d’indiquer plusieurs textes à rechercher. apt-cache search text1 text2
    L’option -f, permet d’avoir une description complète des paquets trouvés apt-cache search -f text

    apt-file : Rechercher à quel paquet appartient un fichier.

    Comme « dpkg -S » ou « dpkg -L », cette commande, permet de retrouver à quel paquet appartient un fichier ou permet de connaître le détail des fichiers d’un paquet. Mais contrairement à « dpkg », « apt-file », fonctionne également avec les paquets non installés à condition de mettre à jour la base de données avant de l’utiliser.

    Par défaut, cette commande n’est pas installée. Pour pouvoir l’utiliser, il faut donc installer un paquet supplémentaire :

    # apt-get install apt-file

    Opération Commande
    Mise à jour de la base de données. Attention : Étant donné le nombre importent de paquets du système Debian, la mise à jour du cache peut-être relativement longue. apt-file updateRemarque  : Pour pouvoir lancer cette commande et corriger un problème de dépendance, j’ai dû installer le paquet «  curl  » (apt-get install curl)
    Liste des fichiers d’un paquet apt-file list Nom_Partiel_Du_Paquet
    Liste des paquets contenants un fichier apt-file search Nom_Partiel_Du_Fichier

    Remarque  : Étant donné le temps important nécessaire pour mettre à jour le cache, il est souvent plus rapide de faire la recherche directement sur Internet :

  •  http://www.debian.org/distrib/packages#search_contents

    aptitude : Utilitaire avancé pour gérer les paquets Debian .deb

    aptitude est utilisable en ligne de commandes comme apt. aptitude est désormais le frontal en mode texte pour APT à utiliser de préférence à la place d’apt-get car il est plus performant.

    Opération Commande
    Mise à jour de la liste des paquets aptitude update
    Mise à jour des paquets (installation des nouvelles version de tous les paquets) aptitude upgrade
    Télécharger les nouveaux paquets sans les installer (Opération pouvant être effectuée en batch dans un cron) aptitude —download-only upgrade
    Migrer vers une autre version de Debian (ex : Passage de testing à unstable) aptitude dist-upgrade
    Installer un paquet aptitude install LePaquet
    Supprimer un paquet aptitude remove LePaquet
    Purger un paquet (le supprimer sans laisser aucune trace) aptitude purge LePaquet
    Rechercher dans la description de tous les paquets le mot indiqué aptitude search LeMot
    Effacer les paquets du cache (/var/cache/apt/archives) aptitude clean
    Effacer les paquets du cache en conservant uniquement la dernière version de chaque paquet aptitude autoclean

    Astuce  : Personnellement, je place dans la crontab de root (crontab -e), la ligne suivante pour télécharger tous les jours les derniers paquets mais sans les installer :

    00 18 * * * /usr/bin/aptitude update &&
    /usr/bin/aptitude --download-only --assume-yes dist-upgrade &&
    /usr/bin/aptitude autoclean

    apt-listchanges : connaître le détail des modifications des paquets

    Le paquet « apt-listchanges », permet d’être informé à l’écran ou par mail des modifications effectuées sur les paquets avant de mettre à jour votre système à l’aide des commandes « apt-get upgrade » ou « apt-get dist-upgrade »

    Pour cela, il faut commencer par installer ce nouveau paquet :

    apt-get install apt-listchanges

    Ensuite, il faut le configurer :

    dpkg-reconfigure apt-listchanges

    Pour informations, voici le paramétrage que j’utilise :

    Question Réponse
    Mode d’affichage des changements par apt Pageur
    Ignorer les changements déjà affichés Non
    Adresse où envoyer les changements mon adresse mail
    Type de changements affichés par apt Les deux
    Demande de confirmation après affichage des changement Oui

    Avec cette configuration et avant chaque mise à jour du système, les modifications seront affichées à l’écran et envoyées par mail et une demande de confirmation sera affichée.

    apt-listbugs : Éviter d’installer des paquets buggès

    Le paquet « apt-listbugs », télécharge avant chaque installation de paquets les rapports de bugs émis sur ce paquet. Si un rapport de bug est émis, un message d’avertissement apparaît et demande une confirmation avant d’installer ce paquet. Cela permet d’éviter d’installer des paquets buggés ou d’être informé de problèmes éventuels.

    Pour cela, il suffit d’installer ce paquet :

    apt-get install apt-listbugs

    netselect-apt : Trouver le miroir Debian le plus rapide

    Certains miroirs Debian étant très sollicité (ex : ftp.fr.debian.org surtout lors de la sortie d’une nouvelle version) il existe un outil scannant tous les miroirs disponibles à la recherche du plus efficace. Installation du paquet :

    # aptitude install netselect-apt

    Lancement de la détection pour la version stable :

    # netselect-apt stable

    Pour plus d’infos, ne pas hésiter à lire la page de man

    Utiliser apt-get derrière un proxy

    Pour faire fonctionner apt-get derrière un proxy il faut ajouter la ligne suivante dans le fichier « /etc/apt/apt.conf » (Si ce fichier n’existe pas, il faut le créer) :

    Acquire::http::Proxy "http://ServeurProxy:Port";

    Il faut remplacer ServeurProxy par l’adresse IP ou le nom du serveur Proxy et Port par le numéro du port utilisé par le Proxy (ex : 3128 pour Squid).

    Le gros avantage de passer derrière un Proxy est d’éviter de télécharger plusieurs fois les mêmes paquets pour plusieurs postes. Le programme « apt-proxy » permet également de mettre en cache des paquets pour plusieurs postes, mais celui-ci n’est disponible que sur Debian Stable et Instable (Pas sur Testing).

    Copier la configuration d’un système sur un autre

    Sur le premier système, faire :

    dpkg --get-selections "*" >MaSelection.txt

    Le paramètre "*", permet de prendre en compte les paquets à purger.

    Le fichier MaSelection.txt contiendra tous les paquets installés sur le système.

    Sur l’autre ordinateur récupérer le fichier MaSelection.txt et lancer les commandes suivantes :

    dselect update
    dpkg --set-selections apt-get dselect-upgrade

    Automatiser le téléchargement des mises à jour

    Pour télécharger automatiquement à 12H5 du lundi au vendredi les mises à jour et envoyer un message d’avertissement à root, il faut écrire la ligne suivante dans le crontab de root (crontab -e) :

    5 12 * * 1-5 (/usr/bin/apt-get update && /usr/bin/apt-get
    -dy dist-upgrade) | mail -s "Mise à jour `hostname`" root

    Automatiser l’installation des mises à jour de sécurité

    ATTENTION : Il peut être dangereux de faire des installations automatiquement sans aucun contrôle de l’administrateur. Donc la procédure ci-dessous est donnée à titre expérimentale et sans aucune garantie (D’ailleurs, je ne l’utilise pas :-) )

    Pour automatiser l’installation des mises à jour de sécurité sans mettre à jour tout le système, il faut commencer par créer un nouveau fichier (ex : /etc/apt/sources.list.security) contenant la ligne suivante pour une Debian testing :

    deb http://security.debian.org/ testing/updates main

    Ensuite pour lancer l’installation automatiquement à 12H5 du lundi au vendredi et envoyer un message d’avertissement à root, il faut écrire la ligne suivante dans le crontab de root (crontab -e) :

    5 12 * * 1-5 (/usr/bin/apt-get -o
    Dir::Etc::SourceList=/etc/apt/sources.list.security
     update && /usr/bin/apt-get -o
      Dir::Etc::SourceList=/etc/apt/sources.list.security
       dist-upgrade) | mail -s "Mise à jour Sécurité `hostname`" root

    Purger les paquets orphelins avec « deborphan »

    Après avoir installé et supprimé de nombreux paquets, il arrive que des paquets contenant des librairies deviennent inutiles car celles-ci ne sont plus utilisées par aucun programme.

    Le paquet « deborphan » donne la liste de ces libraires inutiles (orphelines).

    Installation du paquet :

    # apt-get install deborphan

    Une fois la paquet installé, la commande suivante donne la liste des paquets inutiles :

    # deborphan

    Et la commande suivante permet de supprimer ces paquets :

    # apt-get --purge remove `deborphan`

    Remarque  : Il faut lancer la commande précédente plusieurs fois jusqu’à la suppression de tous les paquets orphelins. Dans mon cas, je l’ai lancé 3 fois et j’ai supprimé 32 paquets et 17Mo.

    Reconstituer un paquet à partir des fichiers installés

    Si vous avez installé un paquet sur un poste et souhaitez l’installer sur un autre poste mais que celui-ci n’est plus disponible sur Internet, il est possible de le reconstruire.

    Pour cela, il faut commencer par installer les paquets suivants :

    # apt-get install fakeroot dpkg-repack

    Ensuite, la commande suivante permet de reconstruire le paquet :

    # fakeroot dpkg-repack MonPaquet

    Ensuite, il suffit de copier le paquet régénéré sur l’autre poste et de l’installer :

    # dpkg -i MonPaquet

    Remarque  : Cette méthode permet également de créer des paquets personnalisés avec vos propres fichiers de configuration.

    Passer de Debian Testing à Debian Stable

    Si à force de jouer avec votre fichier « /etc/apt/sources.list », vous avez installer par erreur des paquets d’une version plus récente (ex : Des paquets de Testing alors que vous êtes sous Stable), voici comment revenir en arrière et repasser tous vos paquets dans une version plus ancienne (ex : Stable)

    Pour information, la commande suivante, permet de connaître les paquets plus récent que la version utilisée :

    # apt-show-versions | grep newer

    Créer le fichier « /etc/apt/preferences » et ajouter les lignes suivantes :

    Package: *
    Pin: release a=stable
    Pin-Priority: 1001

    Ces lignes indiques que vous souhaitez utiliser la version stable. En mettant une « Pin-Priority » supérieur à 1000 cela autorise une mise jour vers des paquets plus anciens.

    Ensuite, une simple mise à jour avec la simple commande suivante devrait réinstaller tous les paquets dans leur version « Stable » :

    # aptitude upgrade

    Autrement, ne pas hésiter à faire « man apt_preferences » ou man « apt-show-versions » pour avoir plus d’informations.

    Attention : Une mise à jour vers une version plus ancienne n’est pas garanti mais fonctionne bien dans la plupart des cas.

    Documentation officielle

    Pour en savoir plus sur « apt », un paquet contenant une documentation très complète et en français existe :

    aptitude install apt-howto-fr aptitude-doc-fr

    Après l’installation de ces paquets, la documentation est disponible dans les dossiers « /usr/share/doc/Debian/apt-howto » et « /usr/share/doc/aptitude »

    Cette documentation est fournie au format html, pdf et postscript. Pour ces deux dernières, il faut installer le paquet « gunzip » pour pouvoir les décompresser et les lire.

    Liens Internet

    La documentation officielle en français et très bien faite :

  •  http://www.debian.org/doc/manuals/quick-reference/ch-package.fr.html

    Pour voir la liste des paquets ou rechercher dans les répertoires de paquets ou rechercher dans le contenu des paquets :

  •  http://www.debian.org/distrib/packages

    Rechercher des informations sur des bugs :

  •  http://bugs.debian.org/package-name si vous connaissez le nom du paquet
  •  http://bugs.debian.org/bugnumber si vous connaissez le numéro du bogue

    Installer l’ancienne version d’un paquet :

  •  http://snapshot.debian.net/

    Historique des modifications

    Version Date Commentaire
    0.1 10/09/04 Création par Tony GALMICHE
    0.3 16/12/04 Ajout Chapitre « Copier la configuration d’un système sur un autre »
    0.4 04/02/05 Ajout « Automatiser le téléchargement » et « Automatiser l’installation »
    0.5 06/04/05 Ajout chapitre « apt-file »
    0.6 12/04/05 Ajout chapitre « apt-listchanges »
    0.7 28/06/05 Ajout chapitre « apt-listbugs : Éviter d’installer des paquets buggès »
    0.8 27/07/05 Ajout chapitre « Purger les paquets orphelins » (Merci Jibux)
    0.9 02/09/05 Ajout chapitre « Reconstituer un paquet à partir des fichiers installés »
    1.0 20/08/06 Ajout chapitre « aptitude » et « Activer la completion intelligente »
    1.1 08/05/07 Ajout chapitre « netselect-apt : Trouver le miroir Debian le plus rapide »
    1.2 15/08/07 Ajout chapitre « Passer de Debian Testing à Debian Stable »
  • Commentaires

    Gestion des Paquets .deb sous Debian avec dpkg, apt-get et apti

    Merci pour l’info. Comme je suis sous Debian ETCH sur tous mes postes maintenant, je n’ai pas encore rencontré ce changement.

    Gestion des Paquets .deb sous Debian avec dpkg, apt-get et apti

    En suivant ce lien,
    je me suis aperçu qu’aptitude avait changé ses commandes. D’ailleurs dans testing, si je fais un "aptitude upgrade", il me dit :" W : The "upgrade" command is deprecated ; use "safe-upgrade" instead.." En gros, upgrade est déprécié, utilise safe-upgrade à la place. De même, aptitude "dist-upgrade" est devenu aptitude "full-upgrade"
    C’est un détail... mais l’article est intéressant dans l’utilisation d’aptitude en terminal.

    Purger des fichiers de config d’un paquet deja enlevé

    Si vous avez deja enlevé un paquet debian et que vous voulez purger ses fichiers de config, la solution consiste à utiliser aptitude.

    Lancer aptitude et rechercher le paquet en question et puis utiliser la touche "_" pour purger puis valider par "g" !

    Maintenant les fichiers de config ont été éffacés :)

    Gestion des Paquets .deb sous Debian avec dpkg et apt-get

    Salut Tony

    Une autre commande bien pratique trouvée sur le forum debian :

    # cat /var/log/dpkg.log | less

    pour l’historique de toutes les actions.