Encontre todos os pacotes instalados pelo usuário

37

Existe alguma maneira de obter uma lista de todos os pacotes instalados pelo usuário em um sistema Ubuntu, ou seja, os pacotes que foram instalados sobre os pacotes instalados padrão?

(A idéia é obter uma lista abrangente que possa ser usada para instalar os mesmos pacotes em uma instalação limpa do Ubuntu)

    
por Rabarberski 29.09.2009 / 10:48

8 respostas

15

Veja esses arquivos

  1. ' /var/log/installer/initial-status.gz ' - sua instalação principal
    • essa data do arquivo seria sua data de instalação (acho)
    • ' /var/log/dpkg.log ' atualiza a linha do tempo (é isso que você quer)
    • ' /var/log/apt/term.log ' - coisas apt atualizadas no seu sistema
    • ' /var/cache/apt/archives/' conterá os pacotes deb baixados para instalação

Atualização: use as duas etapas a seguir para obter uma lista exata de novas instalações:

  1. executar: grep -w install /var/log/dpkg.log > full-list.log
  2. Veja as linhas além do /var/log/installer/initial-status.gz timestamp

Como você deseja obter uma instalação limpa em outro sistema com esses pacotes, você pode até copiar os arquivos 'deb' do caminho 'cache / apt / archives' para o da nova instalação e instalá-los de uma só vez (sem baixá-los novamente).

    
por 29.09.2009 / 12:16
8

Apenas para sorrisos, eu juntei um one-liner (aqui dividido por clareza) que descobre pacotes manualmente instalados, excluindo aqueles instalados inicialmente e quaisquer pacotes instalados automaticamente:

comm -13 \
  <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
  <(comm -23 \
    <(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
    <(apt-mark showauto | sort) \
  )

Isso funciona em bash e em zsh .

    
por 05.03.2011 / 05:59
3

Com base nas informações acima, eu escrevi um pequeno script Python para listar os pacotes que foram instalados manualmente. Consulte este link .

Sinta-se à vontade para usá-lo, embora eu não assuma a responsabilidade por isso. No entanto, feedback e sugestões são sempre bem-vindos.

    
por 05.02.2010 / 02:42
2

Verifique minha resposta aqui para uma questão relacionada: Como posso exibir a lista de todos os pacotes instalados no meu sistema Debian? . Algumas das outras respostas sobre a questão também contêm boas sugestões para obter essa lista.

Essa pergunta deve ser marcada como duplicata, já que a pergunta anterior também aborda essa questão, mas pode ser útil ter essa questão por si só, para facilitar a localização.

    
por 29.09.2009 / 15:06
1

assumindo que você tenha um histórico consistente e use o aptitude:

history | grep -e "^..... aptitude install"

lista apenas os pacotes que você instalou com o aptitude install ... duh

    
por 13.06.2012 / 17:24
1

Este é um trabalho de hacker, mas funciona completamente.

Primeiro, vá para link (ou qualquer versão do Ubuntu que você esteja usando) e pegue o *.manifest file que é associado à versão do Ubuntu que você está usando.

Em seguida, execute o seguinte script (substituindo <manifest file> , colchetes angulares e todos, pelo caminho até o arquivo que você baixou. Você sempre pode anexar > output ao final para fazer um despejo de arquivo.

diff --suppress-common-lines <(sed 's/ .*//' <manifest file>) <(dpkg --get-selections | sed 's/[ \t].*//') | grep '>' | sed 's/[>] //'
    
por 05.03.2011 / 05:29
1

Obrigado geekosaur, código legal. Eu usei, mas demorou um pouco para descobrir como fazê-lo funcionar. Aqui está como eu fiz no Ubuntu 11.10 - funciona no terminal do bash:

comm -13 \
  <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) \
  <(comm -23 \
    <(dpkg-query -W -f='${Package}\n' | sed 1d | sort) \
    <(apt-mark showauto | sort) \
  ) > user-installed-packages

Em seguida, adicione uma guia - \t - e install em cada linha:

sed 's/$/\tinstall/' user-installed-packages >uip

Em seguida, na nova máquina:

sudo dpkg --set-selections < uip

E para instalar os pacotes:

sudo apt-get dselect-upgrade
    
por 26.12.2011 / 15:59
0

Outra maneira de fazer isso é determinar o que foi instalado com base em suas "tarefas" que determinam os pacotes básicos a serem instalados de acordo com suas necessidades iniciais.

tasksel --list-tasks

No mínimo, você teria server . No entanto, você pode optar por mais. Para cada uma das tarefas que você instalou, você pode obter uma lista de pacotes que estão instalados. O comando a seguir faz tudo em uma linha (detalhada para clareza) para os que eu escolhi em minha instalação:

(tasksel --task-packages server ; \
 tasksel --task-packages openssh-server ; \
 tasksel --task-packages lamp-server) | sort | uniq

Uma abordagem genérica para o acima seria:

(for a in $( tasksel --list-tasks | grep "^i" | awk '{ print $2 }' ) ; \
 do tasksel --task-packages $a; done) | sort | uniq

Agora use apt-cache depends --installed -i --recurse <packagename> | grep -v "^ " para obter uma lista de dependências usadas por todos os pacotes definidos na tarefa. Isso pode ser feito em uma linha como segue

apt-cache depends --installed -i --recurse \
     $(for a in $( tasksel --list-tasks | \
                   grep "^i" | \
                   awk '{ print $2 }' ) ; \
       do tasksel --task-packages $a; done) | grep -v "^ " | sort | uniq

A seguir listamos todos os pacotes que estão instalados em seu sistema (não incluindo dependências).

dpkg --get-selections | grep "[[:space:]]install" | awk '{print $1}'

Agora use o comando comm para encontrar aqueles que estão na segunda lista apenas (ou seja, ignore aqueles que estão nos dois arquivos e apenas no primeiro arquivo)

comm -13 <(apt-cache depends --installed -i --recurse \
              $(for a in $( tasksel --list-tasks | \
                            grep "^i" | \
                            awk '{ print $2 }' ) ; \
                do tasksel --task-packages $a; done) | grep -v "^ " | sort ) \
         <( dpkg --get-selections | grep "[[:space:]]install" | \
            awk '{print $1}' | sort)
    
por 08.04.2014 / 07:02