如何找到 Debian 存档中的所有和任何“C”文件(源代码或二进制文件)

如何找到 Debian 存档中的所有和任何“C”文件(源代码或二进制文件)

如何在 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 上使用时,这基本上就是我使用的工作流程。

相关内容