#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. Круто, спасибо. У меня был (более медленный) цикл для достижения того же самого. Был бы мой принятый (и поддержанный) ответ :-).