很简单的问题:是否有一些 shell 命令(或 GUI 方法)我可以使用它,给定系统上文件的路径,告诉我将它放在那里的包是什么?假设该文件确实来自一个包,即。
额外的问题:如果它是一个未安装在我的系统上的文件怎么办?例如,是否有一个网站可以让我查找文件并查看哪些软件包(如果有)提供它?
很简单的问题:是否有一些 shell 命令(或 GUI 方法)我可以使用它,给定系统上文件的路径,告诉我将它放在那里的包是什么?假设该文件确实来自一个包,即。
额外的问题:如果它是一个未安装在我的系统上的文件怎么办?例如,是否有一个网站可以让我查找文件并查看哪些软件包(如果有)提供它?
您可以使用
dpkg
命令找出哪个已安装的包拥有一个文件:来自
man dpkg
:例子:
您可以使用完整路径或仅使用文件名进行搜索。
如果您希望搜索计算机上尚未安装的文件,您可以使用Ubuntu Packages Search,或者
apt-file
按照其他答案中的描述。该
apt-file
命令可以从命令行为您执行此操作。从源代码构建软件包时,我经常使用它。对于系统上已经安装的软件包提供的文件,apt-cache
是另一种选择。要安装
apt-file
,请执行以下操作:然后,您需要更新它的数据库:
最后,搜索文件:
然而,更友好的方法是使用Ubuntu Packages Search网站。他们可以选择“搜索包的内容”来查找特定的文件名。
还有 apt-file 用于在未安装的包中查找文件。例如:
您可以在Ubuntu 软件包网站上搜索各种 Ubuntu 版本中包含的软件包的内容。在“搜索包的内容”标题下查看。
例如,以下是焦点 (20.04) 中 libnss3.so 的搜索结果:
http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=focal&arch=any
你的意思是,哪个包而不是哪个应用程序。该应用程序是您的包管理器,例如
Software Center
.使用
dpkg
:例子
使用
apt-file
:或者也可能:
例子
或在线在这里,在该部分
Search the contents of packages
。例子
这是对Alexx Roche 出色答案的扩展。我试图对该答案进行编辑,但被拒绝了(尽管不是被 Alexx 拒绝)
我试图追踪
which
我系统上安装的内容。经过一些工作,我创建了/usr/local/bin/apt-whatprovides
虽然对于大多数已安装的东西,您可以使用:
对于未安装的 THING,您可以使用:
该
apt-whatprovides
脚本适用于系统上和不在系统上的文件。例如,我的系统缺少dig
但有ping
这样的结果:请注意,这
Searching for
是ping
(已安装)的完整路径,而只是dig
未安装的二进制名称。这帮助我发现我需要安装dnsutils
而不需要去搜索https://packages.ubuntu.com/#search_contents我试图追踪
which
我系统上安装的内容。经过一些工作,我创建了 apt-whatprovides虽然对于大多数事情,你可以只使用
你可以用
apt
它来做。输出与以下内容相同:
您可能必须这样做的一个原因是,如果您正在编译已经有 ubuntu 包的软件,您可以运行
apt-get build-dep $PACKAGENAME
. 这将安装您需要编译的所有软件包$PACKAGENAME
。为什么:
不同的发行版有自己的方式,命令太多记不住o(╥﹏╥)o
如何:
通用解决方案:
pacapt -Qo file_path
结果:
在 ubuntu 上:
在centos上:
甚至可以找到路径本身:
什么是pacapt:
安装:
只需下载可移植脚本:
wget -O $HOME/bin/pacapt https://github.com/icy/pacapt/raw/ng/pacapt