Checking for installed packages and if not found install
42,580
Solution 1
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
Solution 2
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
Related videos on Youtube
Author by
amanada.williams
Updated on September 26, 2020Comments
-
amanada.williams over 3 years
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.12-1.80.el6_3.5.i686
How do I do a check in BASH?
Do I do something like?
if [ "$(rpm -qa | grep glibc-static)" != "" ] ; then
And what do I need to use for other distributions? apt-get?
-
Ignacio Vazquez-Abrams over 11 yearsWhy not just make them required by your packages and have the package manager deal with all that?
-
amanada.williams over 11 yearsIt's just a simple bash install script to automate some things. :)
-
-
Gilles Quenot about 9 yearsSilent + only whole words, not just part of words
-
Adam Burley over 6 yearsHi all, I was using this code in something else and found that this does not differentiate partial matches. in my case (RedHat) I had a package
file-libs
installed but notfile
which was what I wanted; when I putrpm -qa | grep -qw file || yum install -y file
, thenfile
didn't install. The best solution is not to usegrep
at all. Just use something like this:rpm --quiet --query file || yum install -y file