Table des matières

Identifier la Section à laquelle appartient un paquet

Nota : Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Présentation

Voici un petit script, que j'ai nommé “debsection” qui permet de savoir si un paquet se trouve dans la section “main”, “non-free” ou “contrib”

La liste des paquets est stockée dans le fichier /var/cache/debsect par l'intermédiaire de l'option 'update'. Il faut donc être root uniquement pour cette option, sinon un simple utilisateur suffit, du moment qu'il a accès à /var/cache/debsect, bien entendu.

Le Script Debsection

debsection
#!/bin/sh
 
debcache=/var/cache/debsect
 
update(){
 
# Ces variables ne seront pas visibles en dehors de la fonction update()
local debinst section
 
if [ $(id -u) -ne 0 ]; then
  echo "Vous devez être ROOT"
  exit 1
fi
 
echo "Mise à jour en cours...";
 
rm -f "$debcache" 2> /dev/null
 
for debinst in $(dpkg -l | awk '$1 == "ii" { print $2 }'); do
        info=$(apt-cache showpkg "$debinst")
        case $info in
                *main*)     section=main;;
                *contrib*)  section=contrib;;
                *non-free*) section=non-free;;
                *)          section=unknown;;
        esac
        echo "$section : $debinst" >> "$debcache"
done
}
 
help() {
        echo "Usage: `basename $0` paquet1 paquet2";
        echo "Options :"
        echo "  update      : mise à jour de la base de données (ROOT uniquement)";
        echo "  list             : liste tout les paquets";
        echo "  search      : liste nom_paquet";
        exit;
}
 
 
if [ ! -f "$debcache" ] && [ "$1" != "update" ]; then
        echo "Veuillez faire '`basename $0` update' SVP";
        exit 1;
fi
 
case $1 in
        list)
                cat "$debcache"
                exit 0
                ;;
        update)
                update
                exit 0
                ;;
        search)
                shift
                for i in "$@"; do
                        grep "$i" "$debcache"
                done
                exit 0
                ;;
        *)
                help
                exit 1
                ;;
esac

Pensez 'y

N'oubliez pas la commande 'awk' si vous voulez afficher uniquement les noms de paquets:

debsection list | grep non-free | awk '{print $3}'

ce qui affichera la liste des paquets installés et faisant partis de la section 'non-free'.

Et même :

debsection list | awk '/non-free/ { print $3 }'
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !