如何在 Debian 软件包存档中找到源文件或二进制形式的所有文件?
我尝试了以下方法,但结果根本没有帮助:
apt-file search *.c
和
apt-file search *.cc
因此,这要么意味着 Debian 存档中没有 c 或 cc 文件(极不可能),要么是我的搜索方法不好(更有可能)。 apt-file 索引已更新。
答案1
正如您所发现的,apt-file
仅搜索二进制包中的文件名。这是可能的,因为 Debian 为其档案中的所有二进制包提供了内容索引;例如http://ftp.fr.debian.org/debian/dists/jessie/main/Contents-amd64.gz。
在 Debian 中搜索源代码的最简单方法是使用http://sources.debian.net/或直接https://codesearch.debian.net/(前者是后者的前端)。
如果您想在本地搜索源代码,则需要下载;这需要大量的带宽和存储。 Debian 8 包含大约170GB 源代码;压缩后大约需要 40GB (10 张 DVD)。其中 40.3% 是 C 代码(这可能比您使用 确定的值更准确debtags
);除此之外,C++ 代码还占 23.1%,因此您正在查看近三分之二的源代码(按行数)...您可以使用按包检索源代码包apt-get source
(正如您自己指出的那样)。您还可以使用以下资源运行您自己的 Codesearch 实例:GitHub。
答案2
这可能不是 Debian 的官方做法,但我就是这样做的。
ar -p foo.deb tmp.tar.gz | tar tzv
当然,您可以通过 grep 管道输出。
ar -p foo.deb tmp.tar.gz | tar tzv | grep -i bar
解释一下:
ar -p foo.deb tmp.tar.gz
将 .deb 存档转换为 gzip 压缩的 tar。然后我们通过管道传输 tar.gz 文件tar
并列出 tarball 中包含的文件(t
列出、z
解压缩并v
详细执行此操作)
可能有更简单的方法,但是当我回收 .deb 档案以在 Slackware 上使用时,这基本上就是我使用的工作流程。