2009-07-22 19:06:32 +0000 2009-07-22 19:06:32 +0000
310
310

在Ubuntu/Debian中查找一个文件属于什么包?

当我在Ubuntu 8.04系统上工作时,我经常发现自己丢失了一个程序、手册或其他文件。有没有什么简单的方法可以查到某个文件包含的软件包(不管它是否已经安装)?也许是apt或dpkg的某个不知名的选项?

答案 (8)

416
416
416
2009-07-22 19:13:44 +0000

(Debian/Ubuntu) 发现一个文件属于哪个软件包:

dpkg -S /usr/bin/ls

‘dpkg -S'只是匹配你提供的字符串,所以只要使用'ls'作为参数,就可以匹配任何文件名中带有'ls'的软件包的任何文件。所以通常使用绝对路径是个好主意。在第二个例子中,你可以看到,12000 个已知的 dpkg 文件都匹配了'ls'这个字符串。

255
255
255
2009-07-22 19:08:44 +0000
apt-file search filename

apt-file search /path/to/file

要安装 apt-file ,请使用。

sudo apt-get install apt-file

在使用之前,你需要更新它的数据库:

sudo apt-file update
```。
20
20
20
2009-07-22 20:07:17 +0000

packages.debian.org是我经常用来完成这个任务的。它优于apt-file,因为它也能找到文件名的一部分。它还可以链接到主包列表,其中会列出描述、bug等。总的来说,这是一个不错的网站。虽然没有命令行那么有用,但还是挺有用的。

为了速度,我把网址做成了书签。

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

在火狐浏览器中,添加了 “debfind "这个关键词(在书签管理器中点击 "更多",它就会亮起来),所以我只要输入 "debfind "就可以了。你可以把'suit'从不稳定改成稳定或测试版,如果你愿意的话,可以把它改成其他版本的发行版。

11
11
11
2011-08-08 19:30:27 +0000

你也可以使用dlocate。从手册页面来看;

$ dlocate [PATTERN]
List all records where either the package name or the filename matches PATTERN.
```。
4
4
4
2013-01-14 02:40:06 +0000

我发现Wajig…

wajig whichpackage /path/to/file

eg.

wajig whichpackage /etc/apt/sources.list

Wajig 是一个方便的命令行或控制台工具,它包揽了所有你从未想过要学习的 apt-get, dpkg 的好东西。.

要安装wajig,请使用。

apt-get install wajig

“whichpackage "命令本身依赖于apt-file

你仍然需要在使用它之前更新它的数据库: - 我还不知道wajig update whixh做apt-get更新是否也会更新文件缓存,但我希望它可能会。

sudo wajig update

sudo apt-file update

(和超级牛,复活节 egss ?)

2
2
2
2013-10-28 10:40:51 +0000

类似于 jamuraa 对 Debian 的回答,你也可以去 http://packages.ubuntu.com/ 访问 Ubuntu。你必须向下滚动一下,找到 “Search the contents of packages”_搜索框,在那里你可以输入文件的路径。

0
0
0
2014-11-24 09:59:47 +0000

Command-not-found包给你关于潜在命令的提示和debian包的名称。它的工作原理是在bash shell中键入命令并查看其输出。

例如,如果命令名是已知的:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed. To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

如果命令不已知,则会应用一些猜测。

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found
0
0
0
2012-12-20 00:33:23 +0000

试着用 http://www.kodkast.com/applications/find-which-package-file-belongs-to

这个应用程序可以搜索包含在不同的 rpms/linux 软件包中的文件,当你的机器上没有安装 rpm 时,它非常有用。