咱们近期发布了一篇关于批量程序包安装的文章。在此同时,关于如何获取系统上已安装了的程序包信息,我也作了些调查而后找到了些方法。我会把这些方法分享在咱们的网站上,但愿能帮助到其余人。linux
有不少种方法能够检查程序包是否已安装,我找到了 7 种命令,你能够从中选择你喜欢的使用。git
以下:github
apt-cache
:可用于查询 APT 缓存或程序包的元数据。apt
:是基于 Debian 的系统中的安装、下载、删除、搜索和管理包的强有力的工具。dpkg-query
:一个查询 dpkg 数据库的工具。dpkg
:基于 Debian 的系统的包管理工具。which
:返回在终端中输入命令时执行的可执行文件的全路径。whereis
:可用于搜索指定命令的二进制文件、源码文件和帮助文件。locate
:比 find
命令快,由于其使用 updatedb
数据库搜索,而 find
命令在实际系统中搜索。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
复制代码
apt
是一个功能强大的命令行工具,可用于安装、下载、删除、搜索、管理程序包以及查询关于程序包的信息,相似对于 libapt-pkg
库的全部功能的底层访问。其包含一些与包管理相关的但不多用到的命令行功能。缓存
# apt -qq list nano
nano/bionic,now 2.9.3-2 amd64 [installed]
复制代码
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
复制代码
dpkg
(debian package)是一个安装、构建、删除和管理 Debian 包的工具,但和其余包管理系统不一样的是,其不能自动下载和安装包或包依赖。工具
下面示例中的输出的第一列 ii
,表示查询的包已安装了。网站
# dpkg -l | grep -i nano
ii nano 2.9.3-2 amd64 small, friendly text editor inspired by Pico
复制代码
which
命令返回在终端中输入命令时执行的可执行文件的全路径。这对于你想要给可执行文件建立桌面快捷方式或符号连接时很是有用。
which
命令仅在当前用户 PATH
环境变量配置的目录列表中搜索,而不是在全部用户的目录中搜索。这意思是当你登入你本身帐号时,其不会在 root
用户文件或目录中搜索。
若是对于指定的程序包或可执行文件路径有以下输出,则表示已安装了,不然没有。
# which nano
/bin/nano
复制代码
whereis
命令用于针对指定命令搜索对应的程序二进制文件、源码文件以及帮助文件等。
若是对于指定的程序包或可执行文件路径有以下输出,则表示已安装了,不然没有。
# whereis nano
nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
复制代码
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