O código a seguir imprime a lista de pacotes dos quais alguns pacotes na lista $package_name
dependem. Você pode passar a entrada de dpkg -s
para usar dados da lista de pacotes instalados ou de apt-cache show
para usar os dados da lista de pacotes disponíveis. Este código pula todas as dependências-ou ( PACKAGE1 | PACKAGE2
), porque determinar qual delas será mais complicado e provavelmente não faz muita diferença na prática.
dpkg -s $package_names | awk -F '[:,] *' '
$1=="Depends" || $1=="Recommends" {
for (i=2; i<=NF; i++) {
if ($i ~ /\|/) continue;
sub(/ .*/, "", $i);
print $i
}
}'
Se você quiser filtrar um arquivo Packages
, poderá usar o seguinte snippet do awk:
<Packages awk -v RS= -v packages="$package_names" '
BEGIN {split(packages, pa)}
$2 in pa
' | awk -F '[:,] *' '…'
Agora, supondo que você tenha um arquivo de texto contendo uma lista de pacotes, você pode remover pacotes que são uma dependência de outro pacote como este:
comm -23 <(sort packages.txt) <(apt-cache show $(cat packages.txt) |
awk -F '[:,] *' ' '…' |
sort)
Isso gera os pacotes que estão na lista de entrada, mas não são encontrados como dependências.