Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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