Lista ordenável de todos os pacotes (dpkg)

1

Eu quero despejar todos os pacotes instalados em um sistema que usa dpkg .

Até agora eu uso dpkg -l .

Mas tem um empate: classificar o resultado não faz sentido.

Cabeça:

root@aptguettler:~# LANG=C dpkg-query -l| sort | head
+++-===========================================================-=================================================-============-================================================================================
Desired=Unknown/Install/Remove/Purge/Hold
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
ii  a11y-profile-manager-indicator                              0.1.10-0ubuntu3                                   amd64        Accessibility Profile Manager - Unity desktop indicator

Cauda:

root@aptguettler:~# LANG=C dpkg-query -l| sort | tail
rc  texlive-publishers-doc                                      2015.20160320-1                                   all          TeX Live: Documentation files for texlive-publishers
rc  texlive-science                                             2015.20160320-1                                   all          TeX Live: Natural and computer sciences
rc  texlive-science-doc                                         2015.20160320-1                                   all          TeX Live: Documentation files for texlive-science
rc  tpconfig                                                    3.1.3-15                                          amd64        touchpad device configuration utility
rc  ttf-indic-fonts-core                                        1:0.5.14ubuntu1                                   all          Core collection of free fonts for languages of India
rc  ttf-punjabi-fonts                                           1:0.5.14ubuntu1                                   all          Free TrueType fonts for the Punjabi language
rc  unity-lens-friends                                          0.1.3+14.04.20140317-0ubuntu1                     amd64        Friends scope for unity
rc  webaccounts-extension-common                                0.5-0ubuntu2.14.04.1                              amd64        Ubuntu Online Accounts browser extension - common files
rc  xfonts-mathml                                               6ubuntu1                                          all          Type1 Symbol font for MathML
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend

Mantenho um histórico dessa saída via etckeeper (pergunta relacionada com a resposta saída do log hwinfo com o etckeeper ).

Aqui, as coisas que eu gostaria de melhorar:

  • As linhas de arte ascii não são boas. O deve ser removido.
  • Os dois primeiros caracteres (por exemplo, ii ) devem ser removidos ou exibidos no final.

Em sistemas baseados em rpm rpm -qa faz exatamente o que eu preciso.

    
por guettli 04.04.2018 / 12:24

1 resposta

3

Tente

dpkg --get-selections | grep -v deinstall

Se você precisar da versão exata dos pacotes na saída, você pode fazer:

dpkg -l | grep '^ii' | awk '{print $2 "\t" $3}'

Isso só imprime as colunas 2 e 3. Isso também lista apenas pacotes instalados, não desinstalados ou outros.

Edit: Outra opção é o dpkg-query:

dpkg-query --show --showformat='${Package} ${Version}  ${Architecture} ${db:Status-Abbrev} \n'

Onde --showformat (ou -f) define quais colunas você deseja exibir, neste caso o nome do pacote, versão e arquitetura e o status curto (por exemplo, "ii" e "rc") no final, o " \ n "é o quebra de linha.

A propósito, o "ii" define pacotes instalados, "rc" são pacotes desinstalados, é por isso que usei grep e awk para filtrar os pacotes desinstalados.

Se estiver com vontade, você pode adicionar larguras de coluna assim:

dpkg-query --show --showformat='${Package;-50} ${Version;-40}  ${Architecture;-5} ${db:Status-Abbrev} \n'

Uma largura de coluna negativa significa que a orientação é deixada, positiva significa direita.

Tenha cuidado, pois o nome do pacote será interrompido se a largura for menor que o número de caracteres em um nome de pacote.

Não tenho certeza sobre qual finalidade você precisa da lista. Se você quer apenas ter uma lista que seja bem legível, não há nada errado com o awk ou outros comandos, se você quiser ter um "backup" do seu software para instalar em outra máquina, dpkg --get-selections (sem nenhuma tubulação) é o caminho a percorrer, consulte link

    
por 04.04.2018 / 13:21