Questão Como listar todos os pacotes instalados


Gostaria de exibir uma lista de todos os pacotes instalados em um arquivo de texto para que eu possa revisá-lo e instalar em massa em outro sistema. Como eu faria isso?


1578
2017-12-17 02:08


origem


Isso já foi respondido Aqui. - Simon Quigley
Uau, passando pelas respostas parece haver tantas maneiras de conseguir isso: / - Madivad
Como faço a instalação em massa em um novo sistema a partir de tal arquivo de texto? - Elysium
@Madivad esses gerenciadores de pacotes supostamente deveriam tornar a vida mais fácil ... - René Nyffenegger
Pergunta semelhante em unix.stackexchange.com "Listar pacotes por data de instalação" - JamesThomasMoon1979


Respostas:


Ubuntu 14.04 e acima

o apt ferramenta no Ubuntu 14.04 e acima torna isso muito fácil.

apt list --installed

Versões mais antigas

Para obter uma lista de pacotes instalados localmente, faça isso no seu terminal:

dpkg --get-selections | grep -v deinstall

(O -v tag "inverts" grep para retornar linhas não correspondentes

Para obter uma lista de um pacote específico instalado:

dpkg --get-selections | grep postgres

Para salvar essa lista em um arquivo de texto chamado packages na sua área de trabalho, faça isso no seu terminal:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

Alternativamente, simplesmente use

dpkg -l

(você não precisa executar nenhum desses comandos como superusuário, então não sudo ou quaisquer outras variantes necessárias aqui)


1730
2017-12-17 03:02



Então, ao instalar no novo computador, faça cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  fonte - koanhead
A sintaxe do dpkg pode ter mudado um pouco desde 2006 porque o comando não funcionou para mim, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade faz o truque. - James
Observe que isso não rastreará quais pacotes foram explicitamente instalados pelo usuário e quais foram instalados como dependências. Isto significa que se você usar este método para recriar sua configuração em outra máquina, o apt não poderá remover dependências desnecessárias quando você remover um determinado pacote. - intuited
É triste e surpreendente que o comentário de @intuited não seja melhor compreendido pela comunidade. Será que os colaboradores mais "altamente cotados" parariam para pensar mais antes de dar o conselho de que simplesmente recarregar pacotes antigos em uma nova versão do Ubuntu não é uma boa idéia (?). Com todas as opções do dpkg eu ainda não vejo uma que extraia os pacotes 'expressamente' instalados por um usuário para que essa lista possa ser recarregada e ter suas dependências instaladas; Eu adoraria saber disso - por favor, compartilhe essa informação. Enquanto isso, faça uma lista dos pacotes que você realmente precisa para reinstalar e rodar - Ricalsin
Todos nós sabemos que o linux discrimina as pessoas sem memória fotográfica, mas a sério, o que estaria errado com apt list installed. Algum dia devemos parar sistematicamente de falhar no princípio "manter as coisas simples e fáceis".


Para obter apenas os pacotes que foram expressamente instalados (não apenas instalados como dependências), você pode executar

aptitude search '~i!~M'

Isso também incluirá uma breve descrição, que você pode desejar. Se não, adicione também a opção -F '%p', como mencionado por karthick87.


Outra opção parece ser copiar o arquivo /var/lib/apt/extended_states, que é um banco de dados de arquivos de texto neste formato:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 indica que o pacote foi expressamente instalado e não é apenas uma dependência.


380
2017-08-28 21:35



Esta deve ser a resposta correta. Por que listar dependências? - Stavros Korokithakis
este devemos seja a resposta, mas usando aptidão é um pouco incerto por causa do Multiarch atualmente (correções no caminho), infelizmente. Ainda marcará o +1 por apontar apenas a listagem de pacotes explicitamente instalados e uma maneira de fazer isso (apesar de não funcionar atualmente no 11.10+). - gertvdijk
@intuited "Fix Released" para Precise (algum tempo atrás). :) - gertvdijk
Isso lista todos os pacotes, não apenas os pacotes instalados manualmente no Ubuntu 13.10. - Eamon Nerbonne
no Ubuntu-15.10, deve instalar o aptitude primeiro por exemplo: sudo apt-get install aptitude - Mark Mikofski


Crie um backup de quais pacotes estão atualmente instalados:

dpkg --get-selections > list.txt

Em seguida (em outro sistema), restaure as instalações dessa lista:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

Para se livrar de pacotes obsoletos:

sudo apt-get autoremove

Para instalar como no tempo de backup (ou seja, para instalar pacotes definidos por dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



Ótima dica sobre como restaurar em outra máquina. +1. - Drew Noakes
migrando entre 2 diferentes máquinas 12.04 do ubuntu esta abordagem quebrou meu sistema. demorou um pouco até que percebi que de alguma forma ubuntu-desktop foi desinstalado - provavelmente devido a um dos comandos do dpkg. tenha cuidado, levei horas para reparar o dano! - Karl Frisk
E, às vezes, o sistema atualiza um aplicativo que você deseja que o sistema não toque nele, faça isso no final dos comandos sudo apt-mark hold name-your-package  . Isso impedirá que o apt-get atualize para a versão atual, que é o padrão para o processo de atualização. - Faron


Para listar todos os pacotes intencionalmente instalado (não como dependências) por comandos apt, execute o seguinte:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

Isso fornece uma visão baseada em tempo reverso, com os comandos antigos listados primeiro:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

Dados de instalação também mostrando o uso de synaptic, mas sem detalhes (o mesmo com a data de instalação):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

fornecendo o seguinte:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

174
2018-02-02 10:39



Ou (com zgrep e removendo mensagens de atualização): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
Essa abordagem falha em pacotes instalados com dpkg?? - drevicko
Enquanto as respostas simples acima são boas para o usuário geral. Este método é de longe o melhor para voltar atrás todas as personalizações feitas na máquina, como também mostra o que foi removido, ou adicionado, da imagem de base, como é listado na sequência que foi executada, e ajuda você a lembrar qual é a sequência correta para adicioná-los novamente em outro sistema. - AllGamer
@drevicko você está correto, ele não lista pacotes que são instalados com o dpkg - Steve Buzonas
Isso é muito útil para se manter organizado - meu cérebro prefere assim por qualquer motivo. - JeremyFelix


apt-mark showmanual

man pages state:

imprimirá uma lista de pacotes instalados manualmente

Portanto, ele deve fornecer apenas uma lista de pacotes explicitamente instalados (embora isso inclua pacotes que faziam parte da instalação inicial padrão) sem todas as dependências incluídas devido à instalação desses pacotes.

Para produzir o resultado em um arquivo de texto:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



No Debian "apt-mark showmanual" não funcionou em "squeeze" mas trabalhou em "wheezy" - Wadih M.
Como com a maioria das outras respostas, apt-mark showmanual não é verdade. Ele também lista toneladas de pacotes instalados automaticamente, provavelmente parte da instalação básica. - mivk
Bem, a questão era para pacotes instalados e isso fornece todos os pacotes instalados menos as dependências instaladas automaticamente. Inclui os pacotes iniciais como parte da instalação inicial. Eu acho que você poderia executar isso em uma nova instalação para obter uma lista das instalações padrão e, em seguida, subtrair isso para ver a diferença. - Tim Tisdall


dpkg-query (ao invés de dpkg --get-selections, que lista alguns pacotes que não estão instalados) da seguinte forma:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

Ou:

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

38
2018-05-16 18:40



Typying # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done no segundo sistema eu fiz isso para instalar os pacotes. - xyz
@julianromera: apt-get install -y $(< installed-pkgs) fará com que o apt-get seja executado apenas uma vez e cuide de todas as dependências de uma só vez. - jamadagni
@julianromera ... corrija-me se eu estou enganado, mas para construir um aplicativo com dependências antes de fazer a instalação normalmente seria sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


Para listar todos os pacotes instalados,

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

ou

aptitude search -F '%p' '~i' > 1.txt

ou

dpkg --get-selections > 1.txt

Nota:
Você obterá o arquivo 1.txt de resultado em sua pasta pessoal ou poderá especificar seu próprio caminho.


36
2017-12-17 03:35





Você pode usar o Synaptic para salvar o estado atual dos pacotes instalados. No Synaptic, selecione "file / save markings", digite o nome do arquivo para salvar o estado e certifique-se de marcar a caixa "Save full state, not only changes".

O arquivo salvo a partir deste pode ser carregado em uma nova máquina usando "file / read markings" no Synaptic.


33
2017-12-17 04:46





Eu recomendo usar planta. Mesmo que seja projetado para servidores, também pode ser usado em desktops. Ele criará um shell script / chef / puppet que você pode usar para reinstalar todos os seus pacotes.


32
2018-04-12 12:26



Eu não estou tentando um espelho completo, mas apenas o fato de levar os arquivos de configuração em consideração é incrível. Eu estava procurando por uma ferramenta por um tempo agora, muito obrigado! - tbolender


Você quer reinstalar os pacotes agora lá em 12.04, certo?

Se assim for, é muito fácil. Você precisará de uma conta "Single Sign On do Ubuntu". (Crie-o antes de reinstalar para que seu sistema seja sincronizado.)

  1. Vá para o Centro de Software e procure a opção "Sincronizar Entre Computadores ..." no menu Arquivo.

  2. Quando você clica nele, você verá seu computador registrado e uma lista de todos os aplicativos no seu computador.

  3. Quando você instalará fresco, esse computador será considerado um novo computador.

  4. Você só precisa entrar na sua conta do Ubuntu e seu computador anterior será mostrado.

  5. Clique nisso; você receberá uma lista de todos os aplicativos. Selecione "instalar" no aplicativo que você deseja instalar.


31
2018-05-16 18:26



Eu configurei o mesmo nome para o meu computador em uma nova instalação para evitar grandes downloads do servidor Ubuntu One a cada vez. Você acha que esse trabalho para mim? - AliNâ