在使用 Ubuntu 8.04 系统时,我经常会发现缺少某个程序、手册页或其他文件。有没有简单的方法可以查找哪个包包含给定文件(无论该文件是否已安装)?也许是 apt 或 dpkg 的一些晦涩选项?
答案1
apt-file search filename
或者
apt-file search /path/to/file
安装apt-file
, 使用:
sudo apt-get install apt-file
您需要先更新其数据库才能使用它:
sudo apt-file update
答案2
dpkg -S /usr/bin/ls
“dpkg -S” 只匹配您提供的字符串,因此只需使用“ls”作为参数,即可匹配任何软件包中文件名中含有“ls”的文件。因此,通常使用绝对路径是个好主意。您可以在第二个示例中看到,dpkg 已知的 12,000 个文件与纯字符串“ls”匹配。
答案3
软件包信息网是我经常用来完成这项任务的工具。它比 apt-file 更优秀,因为它也能找到文件名的一部分。它还链接到主软件包列表,其中会列出描述、错误等。总而言之,这是一个不错的网站。虽然不如命令行有用,但仍然非常有用。
为了速度,我收藏了以下网址:
http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any
在 Firefox 中,并添加了“debfind”作为关键字(单击书签管理器中的“更多”并将其突出显示),这样我只需输入“debfind”即可。如果您愿意,可以将其“套件”从不稳定更改为稳定或测试,以用于其他版本的发行版。
答案4
我找到了 Wajig……
wajig whichpackage /path/to/file
例如。
wajig whichpackage /etc/apt/sources.list
Wajig 是一个方便的命令行或控制台工具,它包含了您从未想过要了解的所有 apt-get、dpkg 优点。
要安装 wajig,请使用:
apt-get install wajig
该命令 'whichpackage' 本身依赖于 apt-file
您仍然需要先更新其数据库,然后才能使用它: - 我还不知道 wajig update whixh 是否会执行 apt-get update 来更新文件缓存,但我希望它可以。
sudo wajig update
sudo apt-file update
(还有超级牛、复活节彩蛋?!)