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

ama*_*ams 19 linux bash shell apt yum

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

RHEL,CentOS,Fedora的示例:

rpm -qa | grep glibc-static
glibc-static-2.12-1.80.el6_3.5.i686
Run Code Online (Sandbox Code Playgroud)

如何检查BASH?

我会做点什么吗?

if [ "$(rpm -qa | grep glibc-static)" != "" ] ; then
Run Code Online (Sandbox Code Playgroud)

我还需要为其他发行版使用什么?apt-get的?

Gil*_*not 47

请尝试以下代码:

if ! rpm -qa | grep -qw glibc-static; then
    yum install glibc-static
fi
Run Code Online (Sandbox Code Playgroud)

或更短:

rpm -qa | grep -qw glibc-static || yum install glibc-static
Run Code Online (Sandbox Code Playgroud)

对于debian喜欢:

dpkg -l | grep -qw package || apt-get install package
Run Code Online (Sandbox Code Playgroud)

对于archlinux:

pacman -Qq | grep -qw package || pacman -S package
Run Code Online (Sandbox Code Playgroud)

  • 大家好,我在其他地方使用此代码,发现这不区分部分匹配.在我的情况下(RedHat)我安装了一个包``file-libs`但是没有`file`这是我想要的; 当我把`rpm -qa | grep -qw文件|| yum install -y file`,然后`file`没有安装.最好的解决方案是不要使用`grep`.只需使用这样的东西:`rpm --quiet --query file || yum install -y file` (2认同)