如何在 Debian/Ubuntu 系统中检查程序包是否安装?

咱们近期发布了一篇关于批量程序包安装的文章。在此同时,关于如何获取系统上已安装了的程序包信息,我也作了些调查而后找到了些方法。我会把这些方法分享在咱们的网站上,但愿能帮助到其余人。linux

有不少种方法能够检查程序包是否已安装,我找到了 7 种命令,你能够从中选择你喜欢的使用。git

以下:github

  • apt-cache:可用于查询 APT 缓存或程序包的元数据。
  • apt:是基于 Debian 的系统中的安装、下载、删除、搜索和管理包的强有力的工具。
  • dpkg-query:一个查询 dpkg 数据库的工具。
  • dpkg:基于 Debian 的系统的包管理工具。
  • which:返回在终端中输入命令时执行的可执行文件的全路径。
  • whereis:可用于搜索指定命令的二进制文件、源码文件和帮助文件。
  • locate:比 find 命令快,由于其使用 updatedb 数据库搜索,而 find命令在实际系统中搜索。

方法1、使用 apt-cache 命令

apt-cache 命令用于从 APT 内部数据库中查询APT 缓存包的元数据,将会搜索和显示指定包的信息,包括是否安装、程序包版本、源码仓库信息等。数据库

下面的示例清楚的显示 nano 包已经在系统中安装了以及对应安装的版本号。ubuntu

# apt-cache policy nano
nano:
  Installed: 2.9.3-2
  Candidate: 2.9.3-2
  Version table:
 *** 2.9.3-2 500
        500 http://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status
复制代码

方法2、使用 apt 命令

apt 是一个功能强大的命令行工具,可用于安装、下载、删除、搜索、管理程序包以及查询关于程序包的信息,相似对于 libapt-pkg 库的全部功能的底层访问。其包含一些与包管理相关的但不多用到的命令行功能。缓存

# apt -qq list nano
nano/bionic,now 2.9.3-2 amd64 [installed]
复制代码

方法3、使用 dpkg-query 命令

dpkg-query 是显示 dpkg 数据库中程序包信息列表的一个工具。bash

下面示例中的输出的第一列 ii,表示查询的程序包已安装了。ionic

# dpkg-query --list | grep -i nano
ii  nano    2.9.3-2    amd64    small, friendly text editor inspired by Pico
复制代码

方法4、使用 dpkg 命令

dpkgdebian package)是一个安装、构建、删除和管理 Debian 包的工具,但和其余包管理系统不一样的是,其不能自动下载和安装包或包依赖。工具

下面示例中的输出的第一列 ii,表示查询的包已安装了。网站

# dpkg -l | grep -i nano
ii  nano     2.9.3-2    amd64   small, friendly text editor inspired by Pico
复制代码

方法5、使用 which 命令

which 命令返回在终端中输入命令时执行的可执行文件的全路径。这对于你想要给可执行文件建立桌面快捷方式或符号连接时很是有用。

which 命令仅在当前用户 PATH 环境变量配置的目录列表中搜索,而不是在全部用户的目录中搜索。这意思是当你登入你本身帐号时,其不会在 root 用户文件或目录中搜索。

若是对于指定的程序包或可执行文件路径有以下输出,则表示已安装了,不然没有。

# which nano
/bin/nano
复制代码

方法6、使用 whereis 命令

whereis 命令用于针对指定命令搜索对应的程序二进制文件、源码文件以及帮助文件等。

若是对于指定的程序包或可执行文件路径有以下输出,则表示已安装了,不然没有。

# whereis nano
nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
复制代码

方法7、使用 locate 命令

locate 命令比 find 命令快,由于其在 updatedb 数据库中搜索,而 find 命令在实际系统中进行搜索。

对于获取指定文件,其使用数据库而不是在特定目录路径中搜索。

locate 命令不会预安装在大多数系统中,须要手动安装。

locate 使用的数据库会根据定时任务按期更新。固然,咱们也能够手动更新。

若是对于指定的程序包或可执行文件路径有以下输出,则表示已安装了,不然没有。

# locate --basename '\nano'
/usr/bin/nano
/usr/share/nano
/usr/share/doc/nano
复制代码

via: www.2daygeek.com/how-to-chec…

做者:Magesh Maruthamuthu 选题:lujun9972 译者:yizhuoyan 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关文章
相关标签/搜索