logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

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

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 !
doc/systeme/apt/debsect.txt · Dernière modification: 13/07/2015 18:09 par milou

Pied de page des forums

Propulsé par FluxBB