bonjour,
à propos de lister des paquets, j’ai fait un petit script qui pourrait servir à ceux qui viennent d’avoir un gros souci de dépendances, étant en sarge, et ayant tenté l’installation de paquet sid ou etch à l’arrache …
J’ai pas poussé plus loin, et je peux pas plus le tester vu que chez moi, il ne marche pas mdr, et oui … je ne m’explique pas pourquoi aucun paquet sarge n’est installable chez moi (dixit apt-get via mon script … mais il se peut qu’il marche normalement chez d’autre …), si quelques uns veulent bien le tester
NB:
1/ Vous le mettez n’importe où en le nommant comme vous voulez
2/ Vous passez en root
3/ chmod root ou user +x pour le rendre exécutable (ça va mieux en le disant)
3bis/ Si vous avez configuré sudo pour que votre user non root puisse utiliser dpkg et apt-get, vous éditez le script placez sudo devant toutes les invocations des-dits programmes.
4/ Vous le lancez sans craintes, ( ./verslàoùilest/lenomduscript.sh) l’instruction fatale est dotée de l’option -s (pour simulation : apt-get -s install …)
5/ Ben aprés on vois si ya des succés ou pas, et si ça casse pas tout, avant de rééditer le script pour enlever l’option -s …
voilà :
[code]#!/bin/bash
rech=“sarge”
rech1=“stable”
vide=" "
declare -i nbrech=0
declare -i total=0
prim_pkg=""
setterm -cursor off
/tmp/rapportpkgs
/tmp/traitepkgs
echo “Recherche des paquets non $rech **************”
dpkg -l | grep ‘ii’ >> /tmp/rapportpkgs
while read line; do
nom=$(echo “$line” | awk ‘{print $2}’)
if [ “$prim_pkg” != “” ] && [ “$prim_pkg” == “$nom” ]; then
echo
echo “erreur, relancez le script svp”
exit
fi
[ “$prim_pkg” == “” ] && prim_pkg="$nom"
version=$(echo “$line” | awk ‘{print $3}’)
contexte="$(apt-cache policy $nom | tr -d ‘’ |
grep -B1 $rech | awk ‘{print $1}’)"
contexte="$(echo $contexte | sed s/\n//g | awk ‘{print $1}’)"
if [ “$contexte” == “” ]; then
contexte="$(apt-cache policy $nom | tr -d '’ |
grep -B1 $rech1 | awk ‘{print $1}’)"
contexte="$(echo $contexte | sed s/\n//g | awk ‘{print $1}’)"
fi
if [ “$contexte” != “$version” ]; then
echo -ne “\rListing en cours: $vide”
echo -ne “\rListing en cours: $nom”
echo “$nom” >> /tmp/traitepkgs
nbrech+=1
fi
total+=1
done < /tmp/rapportpkgs
echo
setterm -cursor on
echo "
nombre total de paquets : $total
nombre de paquets correspondants : $nbrech"
if [ $(cat /tmp/traitepkgs | wc -l) -ge 1 ]; then
echo -n "Pour ramener ces paquets vers sarge, saisissez ‘downgrade’ puis entrez: "
read reponse
if [ “$reponse” == “downgrade” ]; then
while read pkg; do
echo -ne "\rinstallation de $pkg/$rech: "
apt-get -s install -t “$rech” “$pkg/$rech” 2> /dev/null 1> /dev/null
[ $? -ne 0 ] && echo “echec …” || echo “succès …”
done < /tmp/traitepkgs
else
echo “annulation …”
echo “la liste des paquets est disponible dans /tmp/traitepkgs”
fi
fi
[/code]