# Comment savoir si le paquet est déjà présent ?

**URL:** <https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467 "2016-02-21T20:25:05Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Creaprog](https://www.debian-fr.org/user_avatar/www.debian-fr.org/creaprog/32/3051_2.png) [@Creaprog](https://www.debian-fr.org/u/Creaprog)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/1 "2016-02-21T20:25:05Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/2 "2016-02-21T20:25:05Z")

</div>

Salut,

# aptitude search \<le\_paquet\> | grep ^i même si le nom du paquet est incomplet 🙂

Edit : Complété par le grep 🙂

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/3 "2016-02-21T20:25:05Z")

</div>

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é :

```auto
dave@HAL9000:~$ apt-cache policy gnome | grep \*
```

(pas de retour)

* * *

Voila ce qui me paraît être une base exploitable :

[code]dave@HAL9000:~$ export PAQUET=dpkg  
dave@HAL9000:~$ if [-n «&nbsp;$(apt-cache policy $PAQUET | grep \*)&nbsp;»]

> then echo «&nbsp;paquet installé&nbsp;»  
> else echo «&nbsp;paquet à installer&nbsp;»  
> fi  
> paquet installé  
> dave@HAL9000:~$ export PAQUET=gnome  
> dave@HAL9000:~$ if [-n «&nbsp;$(apt-cache policy $PAQUET | grep \*)&nbsp;»]  
> then echo «&nbsp;paquet installé&nbsp;»  
> else echo «&nbsp;paquet à installer&nbsp;»  
> fi  
> paquet à installer[/code]

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/4 "2016-02-21T20:25:06Z")

</div>

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/](http://ftp.debian.org/debian/) testing/main amd64 Packages  
990 [http://ftp.debian.org/debian/](http://ftp.debian.org/debian/) sid/main amd64 Packages  
3.4.1-1 0  
980 [http://ftp.fr.debian.org/debian/](http://ftp.fr.debian.org/debian/) wheezy/main amd64 Packages  
[/code]

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/5 "2016-02-21T20:25:06Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/6 "2016-02-21T20:25:08Z")

</div>

Pour donner une solution disons plus bas niveau il y a :

```auto

```

Plus propre à implémenter en autre chose que tu shell.

---

<div class="post-metadata">

**Author:** ![Creaprog](https://www.debian-fr.org/user_avatar/www.debian-fr.org/creaprog/32/3051_2.png) [@Creaprog](https://www.debian-fr.org/u/Creaprog)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/7 "2016-02-21T20:25:24Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/8 "2016-02-21T20:25:25Z")

</div>

Quel langage ? PHP ?

---

<div class="post-metadata">

**Author:** ![Creaprog](https://www.debian-fr.org/user_avatar/www.debian-fr.org/creaprog/32/3051_2.png) [@Creaprog](https://www.debian-fr.org/u/Creaprog)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/9 "2016-02-21T20:25:25Z")

</div>

C,Python. Mon exemple était pour le C. Si j’arrive à comprendre avec le C je pourrai faire de même pour le Python.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/comment-savoir-si-le-paquet-est-deja-present/62467/10 "2016-02-21T20:25:25Z")

</div>

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.
