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?
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
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
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)
Si vous le faites contre des RPM téléchargés. vous pouvez le faire par.
rpm -Uvh package-name-version-tag.rpm