检查安装的软件包,如果没有找到安装(Checking for installed packages

2019-08-01 06:53发布

我需要检查安装的软件包,如果没有安装安装它们。

例如用于RHEL,CentOS的,Fedora的:

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

我该怎么做在BASH支票?

难道我这样做?

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

什么,我需要使用其他分布? apt-get的?

Answer 1:

试试下面的代码:

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

或者更短:

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

对于Debian喜欢:

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

对于ArchLinux的:

pacman -Qq | grep -qw package || pacman -S package


Answer 2:

基于@GillesQuenot和@Kidbulra答案,这里是一个例子如何循环多个包 ,并安装如果它丢失了:

packageList="git gcc python-devel"

for packageName in $packageList; do
  rpm --quiet --query $packageName || sudo yum install -y $packageName
done


Answer 3:

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

我用这个,因为它返回安装/缺失,而不依赖于错误状态(这可能会导致在通过采取“零容忍”的方式脚本错误的问题

set -o errexit

例如)



Answer 4:

如果您对下载的RPM这样做。 你可以做到这一点。

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


文章来源: Checking for installed packages and if not found install