I need to check for installed packages and if not installed install them.
Example for RHEL, CentOS, Fedora:
rpm -qa | grep glibc-static
glibc-static-2.1
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
I use this because it returns installed / missing without relying on an error state (which can cause problems in scripts taking a "no tolerance" approach to errors via
set -o errexit
for example)
Try the following code :
if ! rpm -qa | grep -qw glibc-static; then
yum install glibc-static
fi
or shorter :
rpm -qa | grep -qw glibc-static || yum install glibc-static
For debian likes :
dpkg -l | grep -qw package || apt-get install package
For archlinux :
pacman -Qq | grep -qw package || pacman -S package
If you are doing this against downloaded RPMs. you can do it by.
rpm -Uvh package-name-version-tag.rpm
Based on @GillesQuenot and @Kidbulra answers, here's an example how to loop over multiple packages, and install if missing:
packageList="git gcc python-devel"
for packageName in $packageList; do
rpm --quiet --query $packageName || sudo yum install -y $packageName
done