这个问题很简单:是否有一些 shell 命令(或 GUI 方法)可供我使用,只要给出我系统上文件的路径,它就能告诉我哪个包将它放在那里?假设该文件确实来自某个包,就是这样。
附加问题:如果该文件未安装在我的系统上怎么办?比如说,有没有一个网站可以让我查找文件并查看哪些软件包(如果有)提供了该文件?
答案1
您可以使用dpkg
命令来找出哪个已安装的包拥有某个文件:
从man dpkg
:
-S,--搜索文件名搜索模式... 从已安装的包中搜索文件名。
例子:
$ dpkg -S /bin/ls
coreutils: /bin/ls
您可以使用完整路径或仅使用文件名进行搜索。
如果您希望搜索计算机上尚未安装的文件,可以使用Ubuntu 软件包搜索或apt-file
如不同的答案。
答案2
这apt-file
命令可以从命令行为您执行此操作。我经常在从源代码构建软件包时使用它。对于已安装在系统上的软件包提供的文件,apt-cache
是另一种选择。
要安装apt-file
,请执行以下操作:
sudo apt-get install apt-file
然后,您需要更新它的数据库:
sudo apt-file update
最后,搜索文件:
$ apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h
然而,更友好的方法是使用Ubuntu 软件包搜索网站。他们有一个选项可以“搜索包的内容”以查找特定的文件名。
答案3
还有 apt-file 用于查找未安装的软件包中的文件。例如:
apt-file list packagename
答案4
您的意思是哪个包,而不是哪个应用程序。应用程序是您的包管理器,例如Software Center
。
使用dpkg
:
dpkg -S /usr/lib/tracker/tracker-store
dpkg -S tracker-extract
dpkg -S tracker-miner-fs
例子
% dpkg -S /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store
使用apt-file
:
apt-file search /usr/lib/tracker/tracker-store
或者也可能:
apt-file search --regex /tracker-extract$
apt-file search --regex /tracker-miner-fs$
例子
% apt-file search /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store
或在线这里,在 部分中Search the contents of packages
。
例子