Estou no processo de construção de um live CD e para reduzir o tamanho da imagem do CD preciso dispensar alguns pacotes. Por padrão, os pacotes recomendados são instalados e desligar esse botão faz com que o CD fique cheio de lixo que eu não preciso (por que eu precisaria do designer QT4 porque estou agrupando um programa Python QT?) para pouco utilizável.
O ideal seria alguma ferramenta que pegasse uma lista de pacotes como entrada e rastreasse seu gráfico de dependências, seguindoapenaslinks "depende", mas imprimindo os links "recomenda" que encontrar, mostrando-me efetivamente o "nível superior" dos pacotes recomendados que seriam instalados com base nos pacotes que inseri na ferramenta. Isso me ajudaria a decidir quais desses pacotes precisam ser incluídos e, então, posso executar novamente a ferramenta nesse conjunto de pacotes até que não haja mais nada necessário.
Outras ferramentas como apt-cache depends
irão despejar tudo, e se eu usar o comando "Recomenda", isso me mostrará pacotes que os pacotes recomendados também recomendam, o que eu não quero.
Por exemplo, se:
- A depende de B,
- B recomenda C,
- C depende de D, e
- D recomenda E.
Se eu perguntar a essa ferramenta hipotética sobre o pacote A, eu gostaria que ela me fornecesse apenas o pacote C como saída - eu não gostaria que E fosse incluído, pois nem sei se quero C ainda.
Existe tal ferramenta por aí ou existe uma maneira simples de fazer isso com as ferramentas existentes?
Responder1
Acho que a apt-rdepends
ferramenta é exatamente o que você deseja. Instale o pacote via apt-get e execute-o (substituindo seu pacote "A" pelo pacote "apt" que estou usando no exemplo):
apt-rdepends --follow=Depends --show=Recommends apt 2>/dev/null | grep Recommends
Recommends: gnupg
Recommends: libc6-i686
Recommends: gnupg-curl
Recommends: libldap-2.4-2 (>= 2.4.7)
Se você deixar de fora grep
também verá os pacotes que possuem o link "Recomenda". É bastante simples e atende exatamente aos seus requisitos, com uma possível pegadinha: você não pode dizer apt-rdepends
quando parar, ou seja, ele seguirá links "depende" para um nível de recursão arbitrário.
Leia a página do manual para saber mais sobre as opções de linha de comando. É uma ferramenta muito legal, você pode até fazer pesquisas reversas!