Pages : 1
#1 Le 12/11/2011, à 03:46
- Tomzz
Vérifier le lock de dpkg
Bonjour,
Dans un script, je besoin d'installer un paquet, jusque là pas très compliqué.
Mais je voudrai vérifier avant que dpkg ne soit pas occupé (pas de synaptic ouvert par exemple).
Je pensais avoir juste a vérifier la présence du fichier /var/lib/dpkg/lock pour faire ça.
Mais ce fichier reste présent même après la fermeture de synaptic.
Quelle est la bonne méthode pour vérifier qu'aucun gestionnaire de paquets n'est ouvert ?
Dernière modification par Tomzz (Le 12/11/2011, à 03:47)
Hors ligne
#2 Le 12/11/2011, à 13:11
- demonipuch
Re : Vérifier le lock de dpkg
Bonjour
Vous pouvez faire un test sur le fichier /proc/locks du genre :
grep $(ls -i /var/lib/dpkg/lock | awk '{print $1}') /proc/locks >> /dev/null
if [[ $? == 0 ]]; then
echo "le fichier /var/lib/dpkg/lock est vérouillé"
fi
Infos : http://www.toilefrancophone.fr/index.ph … verrouille
Dernière modification par demonipuch (Le 12/11/2011, à 13:28)
Hors ligne
#3 Le 12/11/2011, à 20:45
- Tomzz
Re : Vérifier le lock de dpkg
Bonjour,
et merci...
Je ne connaissait pas le principe de /proc/locks
Pour mon cas précis, j'ai fais ça:
## Verification de la presence du paquet timeout
timeout 2 echo "a"
if [ $? != "0" ]; then
{
zenity --question --ok-label="Installer" --text="Le paquet Timeout n'est pas installé sur votre système\nVoulez-vous l'installer maintenant?." && tmo="oui"
if [ "${tmo}" == "oui" ]; then
{
grep $(ls -i /var/lib/dpkg/lock | awk '{print $1}') /proc/locks >> /dev/null
if [[ $? == 0 ]]; then
{
while true
do
zenity --question --text="Un autre gestionnaire de paquet est ouvert.\nVeuillez le fermer avant de cliquer sur OK." || break
grep $(ls -i /var/lib/dpkg/lock | awk '{print $1}') /proc/locks >> /dev/null
if [[ $? != 0 ]]; then
{
xterm -title 'label' -e "\
echo -e \"\E[37;44m\033[1m $(echo 'Veuillez saisir votre mot de passe d\047administrateur') \033[0m\"
eval $(echo 'sudo apt-get install timeout')"
break
}
fi
done
}
else
{
xterm -title 'label' -e "\
echo -e \"\E[37;44m\033[1m $(echo 'Veuillez saisir votre mot de passe d\047administrateur') \033[0m\"
eval $(echo 'sudo apt-get install timeout')"
}
fi
}
fi
}
fi
Ce qui m'a mené à cette gymnastique est ici.
Dernière modification par Tomzz (Le 12/11/2011, à 22:42)
Hors ligne