script de test de paquet installé

Le
Guy Roussin
Bonjour,

Je cherche à ecrire en bash une fonction simple qui teste si un paquet
est installé avec des commandes de base présentes dans toute
debian/ubuntu.
J'ai essayé avec dpkg -s "paquet" mais elle renvoie vrai même si le
paquet n'est pas installé

Merci.
--
Guy Roussin

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Xadawa
Le #9663551
#!/bin/bash

# $1 (1er arcument) est égal au nom du paquet
if [ `aptitude search $1 | tr -s " " | cut -d " " -f 1,2 | grep "^i" |
wc -l` -ne 0 ]; then echo "$1 INSTALLE"; else echo "$1 NON INSTALLE"; fi

Guy Roussin wrote:
Bonjour,

Je cherche à ecrire en bash une fonction simple qui teste si un paquet
est installé avec des commandes de base présentes dans toute
debian/ubuntu.
J'ai essayé avec dpkg -s "paquet" mais elle renvoie vrai même si le
paquet n'est pas installé ...

Merci.



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Bruno Muller
Le #9663501
--=-7UOIAwE9vfBm/aE+iRRp
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable

Hello,

Le mardi 03 juin 2008 à 12:34 +0200, Guy Roussin a écrit :
Je cherche à ecrire en bash une fonction simple qui teste si un paquet
est installé avec des commandes de base présentes dans toute
debian/ubuntu.



Proposition :

is_installed()
{
LANG=C apt-cache policy "$1" 2> /dev/null | grep -qv "Installed:
(none)"
}

$ is_installed plop ; echo $?
1
$ is_installed libssl0.9.8 ; echo $?

0

Bruno

--
OBSÉDÉ
M : Non... je ne me vois pas faire chien d'aveugle... C'est pas un
boulot pour moi... Chien d'impuissant, ça, ça doit être un bon plan.. .

--=-7UOIAwE9vfBm/aE+iRRp
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: Ceci est une partie de message
=?ISO-8859-1?Q?numériquement?= =?ISO-8859-1?Q?_signée?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQBIRTZ4uJD2bkb8m5sRAsGFAJ4zHnGaUQZde/2U0PSgdG6nY7bP7gCfSVRY
WQN053PxmbjkE7SKPJ5Zhp8 =1LAA
-----END PGP SIGNATURE-----

--=-7UOIAwE9vfBm/aE+iRRp--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Guy Roussin
Le #9663491
Bonjour,

Merci Bruno, mais y a encore ce petit bug que je trouve avec dpkg -s

$ aptitude search libmysqlclient
p libmysqlclient-dev - MySQL database development ...
p libmysqlclient15-dev - MySQL database development ...
i A libmysqlclient15off - MySQL database client library
p libmysqlclient16 - MySQL database client library

$ is_installed libmysqlclient15off ; echo $?

0

$ is_installed libmysqlclient15-dev ; echo $?

0

$ is_installed libmysqlclient17 ; echo $?
1


libmysqlclient15-dev qui n'est pas installé répond 0 au lieu de 1


Guy


Bruno Muller a écrit :
Hello,

Le mardi 03 juin 2008 à 12:34 +0200, Guy Roussin a écrit :
Je cherche à ecrire en bash une fonction simple qui teste si un paqu et
est installé avec des commandes de base présentes dans toute
debian/ubuntu.



Proposition :

is_installed()
{
LANG=C apt-cache policy "$1" 2> /dev/null | grep -qv "Installed:
(none)"
}

$ is_installed plop ; echo $?
1
$ is_installed libssl0.9.8 ; echo $?
0

Bruno



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Yannick Fouquet
Le #9663481
Bonjour,

> Guy Roussin wrote:
>> Je cherche à ecrire en bash une fonction simple qui teste si 1 paquet
>> est installé avec des commandes de base présentes dans toute
>> debian/ubuntu.
>> J'ai essayé avec dpkg -s "paquet" mais elle renvoie vrai même si le
>> paquet n'est pas installé ...

Xadawa a écrit :
#!/bin/bash

# $1 (1er arcument) est égal au nom du paquet
if [ `aptitude search $1 | tr -s " " | cut -d " " -f 1,2 | grep "^i" |
wc -l` -ne 0 ]; then echo "$1 INSTALLE"; else echo "$1 NON INSTALLE"; fi



ce n'est pas plus simple de passer par dpkg -l ?

#!/bin/sh
if [ "`dpkg -l $1 2>/dev/null | grep '^ii' `" != "" ]; then echo "$1
INSTALLE"; else echo "$1 NON INSTALLE"; fi

en tous cas, ça me semble plus simple...

Et si on veut rester dans les codes : 1 pour installé, 0 sinon

[ "`dpkg -l $1 2>/dev/null | grep '^ii' `" == "" ];echo $?

Bon courage.
Yannick.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Guy Roussin
Le #9663391
Merci à tous et notamment à Yannick.

En effet, j'ai finalement retenu la solution de Yannick qui me plait bien
et qui utilise "dpkg -l " et grep. J'avais pourtant cherché ...

test_reqpkg()
{
dpkg -l "$1" 2> /dev/null | grep '^ii' &> /dev/null
}


Guy

Je cherche à ecrire en bash une fonction simple qui teste si un paque t
est installé avec des commandes de base présentes dans toute
debian/ubuntu.
J'ai essayé avec dpkg -s "paquet" mais elle renvoie vrai même si le
paquet n'est pas installé ...

Merci.



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
mailingdebian
Le #9663341
Bonjour,

Tu peux toujours faire simple :
dpkg -l postfix || apt-get install postfix



A plus Christophe
=================



Guy Roussin a écrit :
Merci à tous et notamment à Yannick.

En effet, j'ai finalement retenu la solution de Yannick qui me plait bien
et qui utilise "dpkg -l " et grep. J'avais pourtant cherché ...

test_reqpkg()
{
dpkg -l "$1" 2> /dev/null | grep '^ii' &> /dev/null
}


Guy

Je cherche à ecrire en bash une fonction simple qui teste si un paquet
est installé avec des commandes de base présentes dans toute
debian/ubuntu.
J'ai essayé avec dpkg -s "paquet" mais elle renvoie vrai même si le
paquet n'est pas installé ...

Merci.






--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Publicité
Poster une réponse
Anonyme