how to ensure yum install was successful in a shell script?

jedierikb picture jedierikb · Dec 9, 2011 · Viewed 23.1k times · Source

I have a shell script which checks if there is an internet connection (by pinging google), and then calls

yum install packageA packageB --assumeyes

How would I confirm that the packages were installed (or were already installed)? Do I make another yum call and parse the output (I presume this gets very complicated if the system is in another language)?

Answer

doshea picture doshea · Mar 14, 2014

I've used the following method, which might not be foolproof, but seems to work:

Assuming the variable PACKAGES contains the list of packages you want to install, then:

  1. Run yum -y install $PACKAGES (I assume if this is a script, you really want to pass -y to avoid prompting).
  2. Check its exit status in order to detect some failure conditions.
  3. Run rpm --query --queryformat "" $PACKAGES, which will output nothing for each package that was installed successfully, and will output package <name> is not installed for each failure.
  4. Check its exit status, which appears to be the number of packages that were not successfully installed, i.e. will be 0 on success as usual.

This will only work if PACKAGES contains plain package names that yum is expected to find in a repository, not if it contains other things that yum accepts like URLs, file names or Provides: names.