Listar dependências (recursivas) dos pacotes instalados no APT

16

Para cada pacote que eu instalei, gostaria de saber quais pacotes seriam instalados se eu o desinstalasse. Um exemplo da saída que preciso é ( package: list of deps ):

abc: foo bar
bcd: baz abc
bdd: baz fuubar

Anexar

Se eu verificar o que realmente seria removido, se eu removesse o pacote ppp usando apt-get :

$ echo $(apt-get --dry-run remove ppp | grep '^Remv ' | cut -d' ' -f2)
gnome-ppp mint-meta-xfce network-manager-pptp-gnome network-manager-pptp wvdial pppoeconf pppoe pptp-linux pppconfig ppp

Eu vejo que é diferente do que o apt-cache show me dá (que eu não acho que inclua dependências recursivas):

$ apt-cache show ppp | grep '^Breaks: '
Breaks: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1)

Anexar 2

O dpkg --get-selections | cut -f1 é uma maneira confiável de obter uma lista de pacotes instalados para iterar?

    
por Deleted 21.01.2012 / 21:54

3 respostas

11

Você fez algumas perguntas diferentes aqui, espero poder pelo menos ajudar em uma ou duas.

Para listar todos os pacotes instalados, use dpkg para produzir em uma lista separada por campos

dpkg -l 

Para obter apenas a lista de pacotes, sem campos extras, você pode enviá-la para outro lugar.

dpkg -l | awk '{print $2 }' # Pipe to grep after the awk, or glob from dpkg

Por exemplo, se eu quiser remover um kernel antigo,

apt-get purge 'dpkg -l linux* | awk '{print $2}' | grep 3.0.0-12'

A maneira mais fácil de passar por todas as dependências desnecessárias é com debfoster . Ele é executado de forma interativa e passa pelo que você quer, por suas dependências e pode remover ou listar o que não é uma dependência recursiva.

Para listar todas as dependências recursivas de um pacote específico,

debfoster -d $PACKAGE ## PACKAGE is the specific package.

Depois de executar debfoster , você pode verificar qualquer dependência que um pacote tenha também

debfoster -e $PACKAGE ## PACKAGE is the specific package.

Uma ótima maneira de listar os pacotes "órfãos" é com deborphan . Execute deborphan sem opções e listará todos os pacotes "órfãos". Um 'órfão' é um pacote do qual nada depende e você não instalou explicitamente.

Eu também gosto de limpar qualquer pacote 'órfão', após uma nova instalação. Depois de ter removido pacotes específicos, você pode obter qualquer coisa perdida por apt-get autoremove --purge com

apt-get purge 'deborphan'

Finalmente, às vezes você não usa --purge e acaba com o pacote 'sobras', as versões mais recentes do apt-get podem removê-las automaticamente. Para remover todas as "sobras" dos pacotes desinstalados,

apt-get autoclean

Se você não tiver a nova versão de apt-get , poderá removê-los com esses comandos. Eles cometerão erros se nenhum arquivo de "sobras" existir, parece que o autoclean pode perder alguns ocasionalmente, independentemente disso.

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs dpkg --purge
    
por 22.01.2012 / 02:46
4
apt-cache show pkgname1 pkgname2...

irá (entre outras coisas) listar estas dependências (tempo de execução). Isso geralmente é adequado, a menos que você o esteja alimentando em uma máquina para processamento posterior. Se você quiser exatamente no formato que você declarou, você provavelmente terá que escrever um script.

    
por 21.01.2012 / 22:07
1

Eu acho que você tem que continuar e criar um loop para a mesma coisa:

apt-cache depends libtext-wrapi18n-perl |xargs apt-cache depends

Claro, remova os cabeçalhos.

    
por 09.03.2015 / 03:07

Tags