Como obter a lista de pacotes instalados sem dependências?

5

O Centro de Software de alguma forma mostra uma lista bem pequena de pacotes instalados. Como obtê-lo no arquivo de texto?

Eu tentei:

> dpkg --get-selections|wc -l
3265

> aptitude search '~i!~M'|wc -l
1181

> dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2|wc -l
3076

> dpkg --get-selections | grep -v deinstall|wc -l
3076

> apt-mark showmanual|wc -l
1181

Eu sei que instalei algumas dezenas de pacotes, não milhares. Eu preciso da lista exatamente os pacotes que eu escolhi sem dependências para revisá-la.

UPDATE

Muito obrigado ao @kos, finalmente consegui a lista com esse comando:

> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103
    
por zuba 01.10.2015 / 12:25

3 respostas

8

Isso não responde exatamente à pergunta: em vez disso, ele fornece um comando para listar todos os comandos apt-get install que já foram executados, além de alguns conselhos sobre como analisar mais a lista a fim de obter uma lista de todos os O comando apt-get install já foi executado excluindo aqueles executados pela Ubiquity, já que a solução perfeita para essa tarefa parece não existir.

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
  • zcat /var/log/apt/history.log.*.gz : descompacta todos os apt compactados em /var/log/apt , concatena-os e imprime em stdout ;
  • cat - /var/log/apt/history.log : acrescenta /var/log/apt/history.log e imprime em stdout ;
  • grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' : seleciona apenas as linhas que começam com Commandline: apt-get contendo install com espaço à esquerda e à direita e imprime o restante de cada linha selecionada para stdout ;

Isso mostrará a lista de todos os comandos apt-get install já executados (a única saída indesejada poderia ser um comando apt-get -non- install mencionando um pacote install , mas esse pacote não existe ( ainda?), pelo menos nos repositórios padrão);

Nota: Na minha instalação (Ubuntu 15.04 64-bit), os primeiros quatro comandos listados são aqueles executados pela Ubiquity durante a instalação; para excluir estes, você pode enviar a saída para sed :

sed '1,4d'

Para que o comando aproximado final do Ubuntu 15.04 64-bit seja:

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'
    
por kos 01.10.2015 / 13:22
5
apt-mark showmanual

lhe dará uma lista de todos os pacotes instalados manualmente sem as dependências - o importante é que ele também mostrará qual pacote foi instalado durante a configuração do Ubuntu.

Para gravar a saída em um arquivo:

apt-mark showmanual > somefile

Na verdade, existem muitas outras maneiras, como usar este comando

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) 

Embora eu não tenha absolutamente nenhuma ideia de como o acima funciona;)

Para ver os pacotes instalados por data:

Pacotes instalados por data use cat /var/log/dpkg.log | grep "\ install\ > somefile"
Pacotes instalados usando dpkg use ls -l /var/log/dpkg* > somefile - este é provavelmente o que você está procurando.

Para ver os pacotes instalados usando o dpkg:

Este arquivo contém as informações acima: /var/log/dpkg.log

    
por DevRobot 01.10.2015 / 12:57
1

Isso é realmente mais complicado do que parece, e há algumas perguntas semelhantes no Ask Ubuntu.

Descobri que, ao procurar em /var/log/apt/history.log e nas versões gzipped mais antigas desse log, qualquer coisa instalada por um comando apt-get install é listada como instalada por esse comando.

Então:

grep "apt-get install" /var/log/apt/history.log

Mostrará todos eles pelo período que o log atual do histórico de aptos abrange. Você precisará gunzip dos seus registros mais antigos e os usará para reunir todas as informações. Todos os comandos do grep podem ser redirecionados para um arquivo de texto para fornecer uma boa lista.

Isso provavelmente é útil apenas para o seu caso, se o Centro de Software usar apt-get install ao instalar. Eu sei que o Centro de Software é um front-end para apt , mas não tenho certeza se ele usa esse comando explicitamente.

    
por Arronical 01.10.2015 / 13:27