Debian/Ubuntu Linux:找出提供文件的软件包

时间:2020-01-09 10:38:16  来源:igfitidea点击:

如何找出哪个软件包提供了一个名为/bin/ls的文件?
我在Red Hat Enterprise Linux下使用rpm -qf/bin/ls命令找出软件包名称。
您能告诉我Debian或Ubuntu Linux下相同命令的等效命令吗?
如何找到提供文件的软件包?
您可以使用各种命令。

dpkg是一个命令行工具,可用于安装,构建,删除和管理Debian软件包。

dpkg维护有关可用软件包的一些可用信息。

dpkg-query是用于查看dpkg数据库中列出的软件包的信息的命令行工具。

apt-file是用于在APT软件包管理系统的软件包中搜索文件的命令行工具。

Debian或Ubuntu Linux命令找出哪个软件包拥有文件:

  • 打开终端应用程序
  • 输入以下命令,找出哪个软件包提供了/usr/bin/passwd文件:dpkg -S/usr/bin/passwd
  • 使用apt-file软件包搜索实用程序:apt-file search vim

让我们看看如何使用这三个命令和示例来找出软件包提供的文件格式。

如何查找提供文件的软件包

您可以使用dpkg -S命令从已安装的软件包中搜索文件名。
例如,找出/bin/ls的软件包名称,执行:

$ dpkg -S /bin/ls

输出示例:

coreutils: /bin/ls

-S或--search选项从已安装的软件包中搜索文件名。
您还可以获取有关coreutils软件包的详细状态信息,执行:

$ dpkg -s coreutils

输出示例:

Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 9040
Maintainer: Ubuntu Core Developers <[email protected]>
Architecture: i386
Version: 5.97-5.3ubuntu3
Replaces: textutils, shellutils, fileutils, stat, debianutils (<= 2.3.1), dpkg (<< 1.13.2)

dpkg-query命令

您还可以使用dpkg-query命令,该命令是显示有关dpkg数据库中列出的软件包的信息的工具。

-S选项从已安装的软件包中搜索文件名。
模式中可以使用所有标准的shell通配符。
此命令将不会列出维护者脚本创建的其他文件,也不会列出替代项。

$ dpkg-query -S '/bin/ls'
$ dpkg-query -S 'passwd*'
$ dpkg-query --search '/path/to/file'
$ dpkg-query --search '/usr/bin/passwd'
$ dpkg-query --search '/etc/passwd'

如何使用apt-file在Debian/Ubuntu上进行软件包搜索

您需要安装apt-file命令,这是用于在APT软件包管理系统的软件包中搜索文件的命令行工具:

$ sudo apt-get install apt-file
$ sudo apt-file update

要搜索文件包含在哪个包中,请执行:

$ apt-file search date
$ apt-file search kvm-ok

输出示例:

cpu-checker: /usr/sbin/kvm-ok
cpu-checker: /usr/share/man/man1/kvm-ok.1.gz