O Dpkg não acompanha esta informação. Onde você obteve cada arquivo .deb
não é sua preocupação.
O Apt também não rastreia essas informações, mas sabe onde você pode agora pegar o pacote, o que é bom o suficiente.
Como 9000 escreveu em um comentário, apt-cache policy '^libav'
mostra quais versões de pacotes com nomes correspondentes ao regexp ^libav
estão instalados ou disponíveis. A saída não é particularmente conveniente para analisar, mas aqui está um script minimamente testado que fornece aproximadamente o formato desejado:
{ LC_CTYPE=C apt-cache policy '^libav'; echo .; } | perl -l -ne '
if (!/^ /) {
if (defined $version) {print "$package: $version unknown"}
s/: *$//; $package=$_; $installed=1; $version=undef;
}
if (/^ *Installed: *\(none\)$/) {$installed=0}
if ($installed && /^ \*+ +([^ ]+)/) {$version=$1}
if (/^ [^ ]/) {$version=undef}
if ($installed && defined $version && /^ +[0-9]+ +[^ ]+ +([^ \/]+)/) {
print "$package: $version $1";
$version=undef;
}
'
Outra maneira de obter as informações solicitadas é com aptitude versions
. Novamente, o fragmento minimamente testado abaixo fornece aproximadamente o formato desejado. O padrão "^libav" ~i
corresponde a pacotes instalados e cujo nome corresponde ao regexp fornecido.
aptitude versions '"^libav" ~i' |
awk -vRS= '{if ($6 !~ /[^0-9]/) {$6="unknown"}
print $3, $2, $5, $6}'
Há também um utilitário de pacotes separados apt-show-versions
que, mais uma vez, fornece as informações que você deseja em aproximadamente o formato que você está perguntando.
apt-show-versions | grep '^libav'