如何确定Linux中是否安装了软件包

时间:2020-01-09 14:16:30  来源:igfitidea点击:

如何使用命令行选项确定是否在基于Linux的系统上安装了软件包?

Linux软件包不过是文件的集合以及有关这些文件的信息。

Linux上使用软件包安装了几乎所有软件(Web /数据库服务器或Office应用程序或Web浏览器)。
确定Linux中是否安装了软件包的命令取决于您的Linux发行版。
以下是用于不同发行版的命令。

  • Debian/Ubuntu Linux
  • 红帽(RHEL)/Fedora/Cent OS/Suse Linux

Debian/Ubuntu Linux

使用dpkg命令。
它是Debian/Ubuntu Linux的软件包管理器。
假设您要查找软件包apache-perl或sudo是否已安装,请执行命令:

$ dpkg -s apache-perl

输出示例:

dpkg-query: package 'apache-perl' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.

另一个例子:

$ dpkg -s sudo

输出示例:

Package: sudo
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 1692
Maintainer: Ubuntu Developers 
Architecture: amd64
Version: 1.8.20p2-1ubuntu1
Replaces: sudo-ldap
Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.17), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32), libpam-modules, lsb-base
Conflicts: sudo-ldap
Conffiles:
/etc/pam.d/sudo aa40f755f85bb33c9e79bd537e2979be
/etc/sudoers edcf6528783ecffd3f248c8089dc298e
/etc/sudoers.d/README 8d3cf36d1713f40a0ddc38e1b21a51b6
/etc/sudoers.dist b679ac5d1611aa9ca815224b457b2341
Description: Provide limited super user privileges to specific users
Sudo is a program designed to allow a sysadmin to give limited root
privileges to users and log root activity.  The basic philosophy is to give
as few privileges as possible but still allow people to get their work done.
.
This version is built with minimal shared library dependencies, use the
sudo-ldap package instead if you need LDAP support for sudoers.
Homepage: http://www.sudo.ws/
Original-Maintainer: Bdale Garbee [email protected]

使用文件/var/lib/dpkg/available查找所有可用的软件包名称。
或者,您可以使用以下命令(在/var/lib/dpkg/status中列出所有软件包):

$ dpkg-query -l

您也可以尝试使用通配符匹配软件包名称:

$ dpkg-query -l 'libc6*'

找到软件包名称后,请使用以下命令获取确切的状态(是否已安装):

$ dpkg-query -W -f='${Status} ${Version}\n' apache-perl

输出示例:

install ok installed 1.3.34-2

红帽企业版/Fedora Linux/Suse Linux/Cent OS

在Red Hat/Fedora/CentOS/Suse Linux下,使用rpm命令:

$ rpm -qa | grep {package-name}

例如,找出是否已安装mutt软件包:

$ rpm -qa | grep mutt

输出:

mutt-1.4.1-10

如果看不到任何输出(软件包名称以及版本),则表示该软件包根本没有安装。
您可以使用以下命令显示或列出所有已安装的软件包:

$ rpm -qa
$ rpm -qa | less

如果rpm命令使用bash shell成功执行或失败查找软件包,则可以有条件地执行以下操作:

#!/bin/bash
pkg="htop"
if rpm -q $pkg
then
    echo "$pkg installed"
else
    echo "$pkg NOT installed"
fi

在CentOS/RHEL 6.x/7.x及更高版本上,使用以下yum命令来判断是否安装了名为htop的软件包:

$ yum list installed {PACKAGE_NAME_HERE}
$ yum list installed htop

输出示例:

Loading mirror speeds from cached hostfile
* base: ftp.iitm.ac.in
* epel: mirror1.ku.ac.th
* extras: ftp.iitm.ac.in
* updates: ftp.iitm.ac.in
Package htop-2.0.2-1.el7.x86_64 already installed and latest version
Nothing to do

如果您使用的是Fedora Linux,请尝试以下dnf命令:

$ dnf list installed {PACKAGE_NAME_HERE}
$ dnf list installed htop