Bonjour,
Je programme un peu, et je souhaite savoir comment savoir si le paquet est présent, pour que mon programme ne l’installe pas.
Bonjour,
Je programme un peu, et je souhaite savoir comment savoir si le paquet est présent, pour que mon programme ne l’installe pas.
Salut,
Edit : Complété par le grep
Avec [mono]apt-cache policy paquet | grep *[/mono] tu peux peut-être arriver à ce que tu cherches.
paquet installé :
dave@HAL9000:~$ apt-cache policy dpkg | grep \*
*** 1.17.9 0
paquet non-installé :
(pas de retour)
Voila ce qui me paraît être une base exploitable :
[code]dave@HAL9000:~$ export PAQUET=dpkg
dave@HAL9000:~$ if [ -n “$(apt-cache policy $PAQUET | grep *)” ]
then echo "paquet installé"
else echo "paquet à installer"
fi
paquet installé
dave@HAL9000:~$ export PAQUET=gnome
dave@HAL9000:~$ if [ -n “$(apt-cache policy $PAQUET | grep *)” ]
then echo "paquet installé"
else echo "paquet à installer"
fi
paquet à installer[/code]
Même simplement [mono]apt-cache policy le_paquet[/mono] suffit à renseigner sur l’état et les possibilités :
[code]ricardo@ordibureau:~$ apt-cache policy baobab
baobab:
Installé : (aucun)
Candidat : 3.12.1-1
Table de version :
3.12.1-1 0
985 http://ftp.debian.org/debian/ testing/main amd64 Packages
990 http://ftp.debian.org/debian/ sid/main amd64 Packages
3.4.1-1 0
980 http://ftp.fr.debian.org/debian/ wheezy/main amd64 Packages
[/code]
ricardo :
Tout à fait.
Si j’ai rajouté un [mono]grep[/mono] derrière c’est parce que je suppose que Creaprog va vouloir intégrer tout ça à un script sans intervention de la part de l’utilisateur.
Pour donner une solution disons plus bas niveau il y a :
Plus propre à implémenter en autre chose que tu shell.
Merci pour vos réponses.
system("apt-cache policy le_paquet");
if le_paquet non présent
{
system("apt-get install le_paquet");
}
else
{
suite ;
}
return (0);
Comment faire pour que mon programme sache que le_paquet est présent oui ou non ?
Quel langage ? PHP ?
C,Python. Mon exemple était pour le C. Si j’arrive à comprendre avec le C je pourrai faire de même pour le Python.
Tu as des bibliothèques toutes faites pour ça en C++ et en python.
Ce que l’on a montré au dessus :
[ul]
[li][mono]grep -A1 -e “Package: ${pkg}” /var/lib/dpkg/status | grep -Fq ‘Status: install’[/mono]
Tu ouvre le fichier /var/lib/dpkg/status tu le lis, ligne par ligne et tu recherche la ligne qui représente ton paquet, tu regarde dans la ligne qui suit si le paquet est bien installé ;[/li]
[li][mono]apt-cache policy paquet | grep *[/mono]
Tu lance la commande [mono]apt-cache policy paquet[/mono] et te regarde dans le résultat de la commande s’il contient une ligne contenant « * ».[/li][/ul]
Je me faderais pas de réécrire ce qui a déjà était écris en shell.