Как найти все и любые файлы «C», которые находятся в архиве Debian (либо в исходном, либо в двоичном виде)

Как найти все файлы в исходной или двоичной форме в архиве пакетов Debian?

Я попробовал следующее, но результаты не были полезны вообще:

apt-file search *.c 

а также

 apt-file search *.cc 

Таким образом, это означает, что в архиве Debian нет файлов c или cc (очень маловероятно), или мой метод поиска не был хорошим (скорее). Индекс apt-файла уже обновлен.

Как вы узнали, apt-file ищет 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 содержит около 170 ГБ исходного кода ; сжатый, который занимает около 40 ГБ ( 10 DVD ). 40,3% из них – код C (это, вероятно, более точное значение, чем то, что вы могли бы определить с помощью debtags ); Код C ++ представляет собой еще 23,1%, поэтому вы просматриваете почти две трети исходного кода (по количеству строк) … Вы можете получить пакет исходного кода по пакету, используя apt-get source (как вы указываете вне себя). Вы также можете запустить свой собственный экземпляр Codesearch, используя источник, доступный в GitHub .

Это, вероятно, не официальный способ 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 в gzipped tar. Затем мы передаем tar.gz-файл через tar и перечисляем файлы, содержащиеся в tarball ( t списки, z unzips и v ).

Там может быть более простой способ, но когда я перерабатываю архивы .deb для использования на Slackware, это в основном рабочий процесс, который я использую.