Распечатайте список всех доступных пакетов с исходным кодом Debian

#bash #ubuntu #debian #gnu-make

Вопрос:

Для дистрибутивов Debian (подобных) следующая команда выводит список всех двоичных пакетов, доступных через /etc/apt/sources.list и /etc/apt/sources.list.d/* :

 $ apt-cache search .
 

Как я могу получить аналогичный список всех доступных исходных пакетов? Я знаю, что могу найти имя исходного пакета двоичного пакета с:

 $ apt-get source -s <binary-package-name> | sed -ne 's/^Fetch source //p'
 

Поэтому я, конечно, мог бы сгенерировать список всех доступных исходных пакетов с помощью чего-то вроде:

 #!/bin/bash
(
    LANG=C
    IFS=

Но это действительно медленно.


Комментарии:

1. apt-cache show $(apt-cache pkgnames) | sed -n 's/^Source: //p' | sort -u ?

2. Может быть: в любом случае, ваше $(apt-cache pkgnames) лучше, чем мое $(apt-cache search .) . Но во многих (большинстве?) пакетах отсутствует строка, начинающаяся с Source : Может быть, в тех, где двоичное имя и имя исходного пакета идентичны? Может ли кто-нибудь подтвердить это предположение?

3. apt-cache show $(apt-cache pkgnames) | awk '$1~/^Package:/{n=$2} $1~/^Source:/{n=$2} /^$/{print n}' | sort -u ?

4. Круто, спасибо. У меня был (более медленный) цикл для достижения того же самого. Был бы мой принятый (и поддержанный) ответ :-).

n'
for i in $(apt-cache search .); do
apt-get source -s ${i%% *} | sed -ne 's/^Fetch source //p'
done
) | sort -u
Но это действительно медленно.

Комментарии:

1. apt-cache show $(apt-cache pkgnames) | sed -n 's/^Source: //p' | sort -u ?

2. Может быть: в любом случае, ваше $(apt-cache pkgnames) лучше, чем мое $(apt-cache search .) . Но во многих (большинстве?) пакетах отсутствует строка, начинающаяся с Source : Может быть, в тех, где двоичное имя и имя исходного пакета идентичны? Может ли кто-нибудь подтвердить это предположение?

3. apt-cache show $(apt-cache pkgnames) | awk '$1~/^Package:/{n=$2} $1~/^Source:/{n=$2} /^$/{print n}' | sort -u ?

4. Круто, спасибо. У меня был (более медленный) цикл для достижения того же самого. Был бы мой принятый (и поддержанный) ответ :-).