如何查找是否在Linux和Unix中安装了软件包

时间:2020-03-21 11:44:25  来源:igfitidea点击:

不久前,我们学习了如何在Linux中查找软件包版本。

今天,我们将看到如何查找Linux和Unix操作系统中是否已安装软件包。
以GUI模式查找已安装的软件包很容易。
我们要做的就是打开“菜单”或者“破折号”,然后在搜索框中输入包名称。
如果安装了软件包,则将显示菜单项。
就这么简单。
但是,在没有GUI模式的系统中很难找到它。
因此,与在GUI模式下一样,知道如何找出是否在CLI模式下安装了软件包同样重要。
现在,让我们找出如何找到是否安装了软件包的方法,对吧?

查找Linux中是否安装了软件包

查找软件包是否已安装的最常见方法是使用“ that”命令,如下所示:

$which <package-name>

例子:

$which nano

如果安装了nano软件包,它将显示安装路径,如下所示。

/usr/bin/nano

如我们所见,nano软件包安装在/usr/bin /路径中。

让我们检查另一个软件包,例如Emacs:

$which emacs
/usr/bin/which: no emacs in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

看到了吗?
未安装Emacs。

默认情况下,在大多数类似Unix的操作系统上,“ which”命令可用。

另外,几乎没有其他特定于发行版的方式来查找是否安装了软件包。
继续阅读。

在Arch Linux上:

在Arch Linux及其衍生版本(如Antergos和Manjaro LInux)中,我们可以使用“ pacman”命令执行此操作,如下所示:

$pacman -Qs nano

输出示例:

local/nano 2.9.3-1 (base)
 Pico editor clone with enhancements

我们是否注意到软件包“ nano”前面的前缀“ local”?
这意味着系统上已安装了Nano。

如果以上命令未返回任何内容,则表示未安装给定的软件包。

在Fedora/RHEL/CentOS/Scientific Linux上:

在基于RPM的Linux发行版(如Fedora,RHEL和RHEL克隆,如CentOS,Scientific Linux)中,我们可以使用“ rpm”命令来确定是否安装了软件包,如下所示。

$rpm -qa | grep nano

或者,

$rpm -qa | grep -i nano

输出示例:

nano-2.3.1-10.el7.x86_64

另外,我们可以使用如下的Yum命令。

$yum list installed|grep 'nano'

要列出所有已安装的软件包,请运行:

$rpm -qa

作为下面的注释部分提到的读者“ Gregory Pittman”之一,我们可以在Fedora中使用dnf命令来找到已安装的软件包。

$dnf list packagename

甚至

$dnf list package*

从这些中得到的是已安装内容以及存储库中可用内容的列表。
dnf允许使用通配符,并且在搜索中也不区分大小写。
有时我们不太清楚自己要查找的内容或者正确的拼写。

在Debian/Ubuntu/Linux Mint上:

在Debian,Ubuntu及其衍生版本(如Linux Mint)和Elementary OS等基于DEB的系统中,我们可以使用“ dpkg”命令执行此操作。

$dpkg -s nano

输出示例:

如我们在上面的输出中所见,nano软件包已安装在我们的Ubuntu系统中。
该命令不仅显示指定软件包的安装,还显示软件包的优先级,版本号,维护者名称,依赖关系及其描述等。

这不是查找已安装软件包的唯一方法。
这是更多命令。

$dpkg-query -l nano

输出示例:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/Name Version Architecture Description
+++-==============-============-============-=================================
ii nano 2.5.3-2 amd64 small, friendly text editor inspired by Pico

这是另一个。

$dpkg --get-selections | grep nano

输出示例:

nano install

还有一个命令。

$dpkg --list | grep nano

输出示例:

ii nano 2.5.3-2 amd64 small, friendly text editor inspired by Pico

或者,使用以下命令:

$dpkg --list | grep -i nano

要查看所有已安装软件包的列表,请运行:

$dpkg --list

在SUSE/openSUSE上:

要检查是否在SUSE和openSUSE中安装了软件包,请运行:

$zypper search nano

或者,不久:

$zypper se nano

我们也可以使用“ rpm”命令,如下所示。

$rpm -q nano

使用“有”实用程序查找是否已安装软件包

相信我,这非常简单! “具有”实用程序将检查路径上是否存在各种命令行工具,并报告其安装版本。

要安装它,请运行以下命令:

$git clone https://github.com/kdabir/has.git 
$cd has 
$sudo make install

现在检查软件包是否可用,如下所示。

$has nano
✔ nano 2.5.3

如果看到勾号(✔),则说明软件包已安装。
如我们在上面的输出中看到的,安装了nano软件包,其版本为2.5.3.

如果未安装软件包,我们将看到叉号。
检查以下示例。

$has emacs
✘ emacs

我们也可以检查多个包。

$has nano emacs vim
✔ nano 2.5.3
✘ emacs
✔ vim 7.4

如果我们不想安装它,可以直接使用,如下所示。
但是,系统必须与Internet连接。

$curl -sL https://git.io/_has | bash -s nano

要检查多个软件包:

$curl -sL https://git.io/_has | bash -s nano emacs vim

如果我们懒于输入整个命令,请创建一个别名:

$alias has="curl -sL https://git.io/_has | bash -s"

现在,只需使用如下所示的实用程序:

$has nano

查找是否在Unix中安装了软件包

以下步骤已在FreeBSD 10.3中进行了测试。
除了FreeBSD之外,我从未尝试过任何其他BSD操作系统。
因此,可能会有不同的命令来确定某个软件包是否安装在其他BSD操作系统中。

在FreeBSD中,我们可以使用“ pkg”命令来做到这一点:

$pkg_info -Ix <package-name>

例子:

$pkg info -Ix nano

输出示例:

要查看所有已安装的软件包,可以使用以下命令:

$pkg info

或者,

$pkg version -v

这将需要几秒钟到几分钟的时间,具体取决于我们FreeBSD系统中的软件包数量。