Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Gestion des paquets avec APT

Introduction

La gestion des paquets sous Debian se fait par l'outil APT (Advanced Packaging Tool). Voici un petit récapitulatif des différentes commandes pour gérer les paquets sous Debian et exécuter les opérations de base avec apt à partir de Jessie.

Plutôt que d'utiliser des interfaces graphiques comme synaptic, on va privilégier les outils en ligne de commande. Il existe différents utilitaires apt-get, aptitude et apt permettant d'éxécuter les mêmes opérations.

Versions utilisées: Debian 8.2 / apt 1.0.9.8.1

Il est conseillé d'avoir lu APT : fichier sources.list .

apt simplifie et uniformise les commandes et apporte une interface plus agréable (barre de progression et coloration syntaxique). Nous verrons ici uniquement les fonctionnalités qui sont documentées pour apt. Je conseille encore l'utilisation d'apt-get et aptitude pour les fonctions avancées.

Mettre à jour la liste des paquets

La commande update permet simplement d'actualiser la liste des paquets disponibles pour votre système. On lance cette commande avant d'installer un nouveau paquet ou avant d'installer les mises à jour du système.

apt update

Elle ne modifie pas le système, elle demande simplement s'il existe de nouveaux paquets ou des nouvelles versions de paquets. Cette commande est généralement le préalable avant toute opération sur les paquets.

Installer les dernières versions d'un paquet

Nous vous recommandons d'installer les dernières versions de paquets disponibles pour votre système. Cela permet de corriger des bugs et d'installer les correctifs de sécurité.

apt upgrade

Elle doit toujours être précédée de la commande apt update. De nouveaux paquets peuvent être installés, mais les paquets installés ne seront jamais supprimés.

Installer un nouveau paquet

Une autre commande incontournable permettant d'installer un/plusieurs paquet(s) sur son système. Il faudra précéder l'installation d'un paquet par la commande apt update pour s'assurer d'installer la dernière version disponible.

apt install <paquet>

<paquet> correspondant au nom exact du logiciel que l'on veut installer. Si on souhaite installer le jeu SuperTux, la commande sera apt install supertux. On peut retrouver ce nom dans les différents wiki, tuto et forum. Tous les paquets sont recensés sur la page <https://www.debian.org/distrib/packages#search_packages>.

On peut installer plusieurs paquets en même temps, en séparant simplement le nom des paquets par un espace.

apt install <paquet1> <paquet2> <paquet3>

La commande install installera automatiquement toutes les dépendances nécessaires.

Si vous utilisez les dépôts de rétroportage (backports) ou si vous utilisez plusieurs branches de Debian (pinning), il est possible de forcer l'installation d'un paquet d'une branche:

apt install -t jessie-backports libreoffice

Il faut vérifier que les dépendances qui peuvent être installées n'altèrent pas le système. Le risque avec les dépôts backports est minime mais il est présent si on utilise différentes branches de Debian ou des dépôts tiers.

Pour connaître le nom des branches, il faut regarder ce qui est indiqué dans le fichier /etc/apt/sources.list .

Supprimer un paquet

Il arrive que certains paquets ne soient plus nécessaires et il est préférable de les désinstaller. Cette commande permet de supprimer un paquet présent sur votre système.

apt remove <paquet>

La commande supprimera également les dépendances qui ne sont plus nécessaires.

Il faut toujours regarder quels paquets seront supprimés. Dans certains cas exceptionnels, le gestionnaire de paquet pourrait supprimer des paquets dont vous avez besoin.

Editer le fichier sources.list

Il peut arriver de devoir modifier son fichier sources.list pour ajouter des paquets non-libres ou appartenant à des dépôts tiers. Cette commande permet de bénéficier de la coloration syntaxique et fournit des vérifications de sécurité de base.

apt edit-sources

Avec sources.list.d

Pour éditer un fichier présent dans le répertoire sources.list.d, il faut spécifier son nom.

exemple: pour éditer le fichier /etc/apt/sources.list.d/deb-multimedia.list

apt edit-sources deb-multimedia.list

Autres fonctions utiles

Connaître les paquets qui seront mis à jour

apt list --upgradable

Cela permet de connaître les paquets qui seront installés lors de la prochaine mise à jour (upgrade).

Trouver des informations sur un paquet

La commande show affiche toutes les informations détaillées sur le(s) paquet(s) donné(s).

apt show <paquet>

Trouver les versions disponibles d'un logiciel

Cela permet de connaître les versions disponibles pour un paquet.

apt list --all-versions <paquet>

Cette commande est véritablement utile si vous utilisez des dépôts supplémentaires ou si vous utilisez plusieurs branches de Debian.

Rechercher un paquet

La commande search recherche le(s) terme(s) donné(s) et affiche les paquets correspondants.

apt search <terme>

Utile quand on veut installer un paquet dont on ne connaît pas le nom exact. On pourra lancer la commande *show* pour confirmer qu'il s'agit du bon paquet.

Mise à jour pour l’ensemble du système

La commande full-upgrade remplit la même fonction que upgrade mais peut aussi supprimer des paquets installés si cela est nécessaire pour résoudre un conflit entre des paquets.

apt full-upgrade

On utilise généralement cette commande lors du basculement d'une version majeure de Debian à la suivante.

Astuce : ajouter l'autocomplètement pour Debian 8

La version de apt de Debian Jessie ne supporte pas l'autocomplétion. Il est cependant possible d'en mettre en place via la création d'un fichier /usr/share/bash-completion/completions/apt contenant ceci :

/usr/share/bash-completion/completions/apt
# Debian apt(8) completion                             -*- shell-script -*-
 
_apt()
{
    local sourcesdir="/etc/apt/sources.list.d"
    local cur prev words cword
    _init_completion || return
 
    # see if the user selected a command already
    local COMMANDS=(
        "list"
        "search"
        "show"
        "install" "remove" "purge" "autoremove"
        "update"
        "upgrade" "full-upgrade" "dist-upgrade"
        "edit-sources"
        "help")
 
    local command i
    for (( i=0; i < ${#words[@]}-1; i++ )); do
        if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
            command=${words[i]}
            break
        fi
    done
 
    # supported options per command
    if [[ "$cur" == -* ]]; then
        case $command in
            install|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove)
                COMPREPLY=( $( compgen -W '--show-progress
                  --fix-broken --purge --verbose-versions --auto-remove
                  --simulate --dry-run
                  --download
                  --fix-missing
                  --fix-policy
                  --ignore-hold
                  --force-yes
                  --trivial-only
                  --reinstall --solver' -- "$cur" ) )
                return 0
                ;;
            update)
                COMPREPLY=( $( compgen -W '--list-cleanup 
                  ' -- "$cur" ) )
                return 0
                ;;
            list)
                COMPREPLY=( $( compgen -W '--installed --upgradable 
                  --manual-installed
                  -v --verbose
                  -a --all-versions
                   ' -- "$cur" ) )
                return 0
                ;;
            show)
                COMPREPLY=( $( compgen -W '-a --all-versions
                  ' -- "$cur" ) )
                return 0
                ;;
        esac
    fi
 
    # specific command arguments
    if [[ -n $command ]]; then
        case $command in
            remove|purge|autoremove)
                if [[ -f /etc/debian_version ]]; then
                    # Debian system
                    COMPREPLY=( $( \
                        _xfunc dpkg _comp_dpkg_installed_packages $cur ) )
                else
                    # assume RPM based
                    _xfunc rpm _rpm_installed_packages
                fi
                return 0
                ;;
            show|list)
                COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
                    2> /dev/null ) )
                return 0
                ;;
            install)
                COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
                    2> /dev/null ) )
                _filedir "*.deb"
                return 0
                ;;
            edit-sources)
                COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \
                    -- "$cur" ) )
                return 0
                ;;
        esac
    fi
 
    # no command yet, show what commands we have
    if [ "$command" = "" ]; then
        COMPREPLY=( $( compgen -W '${COMMANDS[@]}' -- "$cur" ) )
    fi
 
    return 0
} &&
complete -F _apt apt
 
# ex: ts=4 sw=4 et filetype=sh

Merci à MicP pour le tuyau sur le forum. ;-)

Ceci concerne uniquement bash (l’interpréteur de commande par défaut). Pour ceux qui utilisent zsh, l'autocomplétion fonctionne nativement.

Ressources

Lien vers le forum

1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/systeme/apt/apt.txt · Dernière modification: 10/10/2016 08:30 par MicP

Pied de page des forums

Propulsé par FluxBB