当前位置: 首页>>技术教程>>正文


我如何找到提供文件的软件包?

,

问题描述

足够简单的问题:是否有一些shell命令(或GUI方法),我可以使用它,给定我的系统上的文件的路径,告诉我什么软件包放在那里?假设文件确实来自一个包,那就是。

奖金问题:如果它是我的系统上未安装的文件,该怎么办?是否有,例如,一个网站,可以让我查找一个文件,看看有什么软件包,如果有的话,提供它?

最佳解决方法

您可以使用dpkg命令找出哪个包拥有一个文件:

来自man dpkg


-S, --search filename-search-pattern...
                  Search for a filename from installed packages.

例:

$ dpkg -S /bin/ls
coreutils: /bin/ls

您可以使用完整路径搜索或仅使用文件名。

如果您希望搜索计算机上尚未安装的文件,则可以使用Ubuntu Packages Search

次佳解决方法

apt-file命令可以从命令行为您执行此操作。我经常在从源代码构建软件包时使用它。对于已安装在系统中的软件包提供的文件,apt-cache是另一种选择。

要安装apt-file,请执行以下操作:

sudo apt-get install apt-file

然后,你需要更新它的数据库:

apt-file update

最后,搜索文件:

$ apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

然而,更友好的方式是使用Ubuntu Packages Search网站。他们可以选择“搜索软件包的内容”以获取特定的文件名。

第三种解决方法

还有apt-file用于查找未安装的软件包中的文件。例如:

apt-file list packagename

第四种方法

您可以在Ubuntu Packages网站上搜索各种Ubuntu发行版中包含的软件包的内容。查看标题“Search the contents of packages”。

例如,下面是lucid(10.04)中的libnss3.so的搜索结果:

http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=lucid&arch=any

第五种方法

你的意思是,哪个软件包而不是哪个应用程序应用程序是您的软件包管理器,例如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

或者在线here,位于Search the contents of packages部分。

package-management,ubuntu

package-management,ubuntu

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/77.html,未经允许,请勿转载。