Lister les paquets installés et leur provenance

Présentation

Voici un petit script que j'ai nommé “debsources” qui permet de savoir à partir de quel dépôt a été installé un paquet.

Il crée un fichier dans lequel est enregistrée la liste des paquets installés (/var/cache/deblist).
Il faut être root pour créer ou mettre à jour cette liste via l'unique option '-u', sinon un simple utilisateur suffit pour l'afficher sans aucune option.

Le script Debsources

script Debsources
#!/bin/bash
 
deblist="/var/cache/deblist"
temp_file="/tmp/policy"
 
update() {
if [ `id -u` -ne 0 ]; then echo "Vous devez être ROOT"; exit 1; fi
rm -f "$deblist" > /dev/null;
for i in `dpkg -l | grep ^ii | awk '{print $2}'` ; do
    apt-cache policy $i  > "$temp_file"
    let j=`cat -n $temp_file | grep 100\ \/var\/lib\/dpkg\/status | awk '{print $1}'`-1;
    echo "$i: `cat -n $temp_file | sed -n "$j"p | awk '{print $3" "$4" "$5" "$6}'`" >> "$deblist";
done
rm -f "$temp_file" > /dev/null;
}
 
if [ ! -f $deblist ] && [ "$1" != "-u" ]; then
    echo "Veuillez faire '`basename $0` -u' SVP";
    exit 1;
fi
 
case $1 in
    -h)
        echo "Usage: `basename $0` -u   : met à jour la base de donnée (root)"
        echo "       `basename $0`  : affiche la base de donnée"
        exit 0;
        ;;
    -u)
        update
        exit 0
        ;;
    *)
        cat "$deblist"
        ;;
esac
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !