J'ai une simple exigence. Je veux définir plusieurs variables qui correspondront à n'importe quel nombre de packages donnés que je veux installer via un script shell.
Exemple de code ci-dessous:
MISC="shutter pidgin"
WEB="apache2 mongodb"
for pkg in $MISC $WEB; do
if [ "dpkg-query -W $pkg | awk {'print $1'} = """ ]; then
echo -e "$pkg is already installed"
else
apt-get -qq install $pkg
echo "Successfully installed $pkg"
fi
done
Tout fonctionne un peu, mais la logique semble imparfaite car elle n'installe pas de manière fiable les packages que je veux. Il indique soit qu'ils ont déjà été installés, soit qu'il essaie d'installer des packages qui ont déjà été installés précédemment.
J'ai également essayé avec command -v
ou ce qui suit:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
Et même avec les drapeaux -n
et -z
pour vérifier si la chaîne retournée était vide. Je suis sûr que je manque de bon sens ici.
Avez-vous une idée de ce que je pourrais faire pour m'assurer qu'un package est réellement installé ou non?
Merci!
apt-get install
des packages installés? Vous pourriez simplement appelerapt-get install $MISC $WEB
.