问题描述
足够简单的问题:是否有一些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的搜索结果:
第五种方法
你的意思是,哪个软件包而不是哪个应用程序应用程序是您的软件包管理器,例如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
部分。
例