检查已安装的软件包,如果未找到则安装

时间:2012-10-09 18:29:37

标签: linux bash shell yum apt

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

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的?

4 个答案:

答案 0 :(得分:45)

请尝试以下代码:

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

答案 1 :(得分:1)

基于@GillesQuenot和@Kidbulra答案,这是一个如何循环多个包的示例,如果缺少则安装:

packageList="git gcc python-devel"

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

答案 2 :(得分:0)

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

例如)

答案 3 :(得分:0)

如果针对下载的RPM执行此操作。你可以做到的。

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