Gerando uma lista de pacotes instalados no Ubuntu

4

Eu quero fazer backup da minha lista de pacotes selecionados manualmente no Ubuntu, sem listar os pacotes instalados como dependências. Por exemplo,

dpkg --get-selections

retorna uma lista completa de todos os pacotes instalados, selecionados manualmente, bem como dependências. Como posso filtrar dependências?

    
por Johan 19.04.2010 / 09:38

4 respostas

3

Eu criei uma solução para mim mesmo:)

dpkg --get-selections | cut -f 1 > /tmp/all
apt-mark showauto > /tmp/auto
diff /tmp/all /tmp/auto | grep '<' | sed 's/.* //'

Isso primeiro gerará uma lista completa "todos" dos pacotes instalados, depois uma lista "auto" dos automaticamente instalados e, finalmente, criará uma lista de diferenças de todos e auto, que é a lista de que preciso.

Alguma sugestão melhor?

    
por 19.04.2010 / 16:59
0

Você pode filtrar os pacotes de lib e filtrar manualmente os restantes. Eu não acho que haja uma maneira padrão de fazer isso.

dpkg --get-selections |wc -l
1831
dpkg --get-selections |grep -v ^lib | wc -l
1060
    
por 19.04.2010 / 11:39
0

# ASSUMINDO seus logs do dpkg voltam para a instalação inicial da máquina

### (Maio / provavelmente NÃO funciona em dist-upgrades)

apt-mark showauto >/tmp/auto.pkgs

Criar um log de linha de tempo do dpkg completo
cp /dev/null /tmp/dpkg.full
for LOG in $(ls -rt /var/log/dpkg.log.[0-9].gz  /var/log/dpkg.log.1[0-9].gz)
do
    test -e $LOG && gunzip -c  $LOG>> /tmp/dpkg.full
done
for LOG in $(ls -rt /var/log/dpkg.log /var/log/dpkg.log.[0-9]  /var/log/dpkg.log.1[0-9]) 
do
    test -e $LOG && cat $LOG >>/tmp/dpkg.full
done
Agora arquive os pacotes inicialmente instalados pelo sistema operacional
awk -v initialinstall=1 '
   / install grub-pc / {initialinstall = 0; next;}                     
   / install / {if ( initialinstall == 0) print $4;}
' /tmp/dpkg.full | grep -vf /tmp/auto.pkgs >~/iInstalled.pkgs
    
por 19.11.2010 / 03:40
0

Se você quiser uma lista de pacotes que não estão marcados como instalados automaticamente (o que não é sempre o mesmo que não ser uma dependência), você pode fazer isso de uma forma mais simples usando aptitude da seguinte forma:

aptitude search ~i | grep "^i   " | awk '{ print $2 }'

Se você estiver realmente preocupado em eliminar todas as dependências, pode pesquisar os padrões de pesquisa ~R e ~D . Eu acho que aptitude é o front-end atualmente recomendado para o dpkg e o apt. Você descobrirá que possui várias opções de linha de comando realmente úteis, além da interface ncurses.

    
por 21.02.2011 / 16:48