Como listar todos os pacotes instalados de uma categoria específica (componente)

4

É possível listar todos os pacotes instalados de um componente de repositório oficial específico (Principal, Restrito, Universo ou Multiverso) usando utilitários como apt, apt-cache, aptitude?

Eu escrevi um script simples para essa finalidade:

dpkg -l | grep ^ii | cut -f3 -d ' ' | while read -r pkg;
do
 status='apt-cache show $pkg | grep -m1 "Section: multiverse"'
 if [ ! -z "$status" ] 
 then
  echo $pkg
 fi
done;

Funciona, mas é muito lento porque está verificando todos os pacotes um por um. A execução do comando time para este script produzirá:

real    1m16.797s
user    0m57.008s
sys     0m8.260s

Eu já tentei padrões de pesquisa do aptitude e dpkg-query formata, mas parece que eles não têm a coluna / esquema apropriada para criar uma consulta para esse propósito.

Eu também dei uma olhada no script vrms para descobrir como ele funciona, porque é muito rápido encontrar respostas / pacotes não-livres, parece que o script vrms varre todo o arquivo /var/lib/dpkg/status , procurando coisas como 'Seção: (contrib | não-livre | restrito | multiverso | parceiro)', então também não foi útil, porque não todos os pacotes têm esta seção.

    
por Ravexina 31.03.2017 / 23:25

1 resposta

1

Ok, não encontrei nenhuma solução para fazer isso com utilitários padrão, mas depois de dar uma olhada em vrms Eu criei um script muito melhor para procurar pacotes instalados a partir de um componente específico.

O outro script que mencionei na minha pergunta foi muito demorado.
No entanto, o novo script está disponível aqui: pkgs-from.sh

O uso é:

./pkgs-from.sh universe # or main, multiverse, backports

E o resultado do comando time para este é:

real    0m4.367s
user    0m0.980s
sys     0m0.408s

O que é muito bom.

Como funciona?
O script criará uma lista de todos os pacotes relacionados ao componente solicitado dos arquivos relacionados dentro do diretório /var/lib/apt/lists/ e, em seguida, começará a pesquisar por eles, em vez de usar apt-cache .

    
por Ravexina 04.04.2017 / 15:22