web-dev-qa-db-fra.com

Vérifier les paquets installés et si non trouvé installer

J'ai besoin de vérifier les paquets installés et si non installé, installez-les 

Exemple pour RHEL, CentOS, Fedora:

rpm -qa | grep glibc-static
glibc-static-2.12-1.80.el6_3.5.i686

Comment puis-je vérifier dans BASH?

Est-ce que je fais quelque chose comme?

if [ "$(rpm -qa | grep glibc-static)" != "" ] ; then

Et que dois-je utiliser pour les autres distributions? apt-get?

15
amanada.williams

Essayez le code suivant:

if ! rpm -qa | grep -qw glibc-static; then
    yum install glibc-static
fi

ou plus court:

rpm -qa | grep -qw glibc-static || yum install glibc-static

Pour les goûts de Debian: 

dpkg -l | grep -qw package || apt-get install package

Pour archlinux:

pacman -Qq | grep -qw package || pacman -S package
42
Gilles Quenot

Sur la base des réponses @GillesQuenot et @Kidbulra, voici un exemple comment boucler sur plusieurs paquets , et installer si manquant:

packageList="git gcc python-devel"

for packageName in $packageList; do
  rpm --quiet --query $packageName || Sudo yum install -y $packageName
done
1
Noam Manos
if [ $(yum list installed | cut -f1 -d" " | grep --extended '^full name of package being checked$' | wc -l) -eq 1 ]; then
  echo "installed";
else
  echo "missing"
fi

J'utilise ceci car il retourne les éléments installés/manquants sans s'appuyer sur un état d'erreur (ce qui peut poser problème dans les scripts utilisant une approche "aucune tolérance" des erreurs via 

set -o errexit

par exemple)

0
Pancho

Si vous le faites contre des RPM téléchargés. vous pouvez le faire par.

rpm -Uvh package-name-version-tag.rpm
0
diyoda_