Qual é a maneira mais robusta de listar o software instalado em distros baseadas no Debian?

4

Então, por enquanto, digamos que precisamos apenas que isso funcione para sistemas baseados no Debian (mas eu precisarei fazer isso por yum no futuro).

O melhor que tenho agora é dpkg-query . Então, por exemplo, se eu executar isso:

dpkg-query --show

Eu vou conseguir uma lista como essa (com alguns milhares de entradas):

...  
sudo    1.8.17p1-2  
...  
vim     2:7.4.1829-1  
...

Não há nenhuma convenção de nomenclatura. Alguns dos pacotes têm o número da versão neles, alguns deles têm a arquitetura. ex gcc-4.9-base:amd64 , mas o que eu quero só teria gcc 4.9 . Idealmente, gostaria de obter informações sobre fornecedores, produtos e versões de todos os softwares instalados. Existe alguma maneira de fazer isso nativamente , ou tem que ser algum tipo de correspondência "fuzzy"?

Estou aberto a formas alternativas de consultar o gerenciador de pacotes ou outro método que não estou pensando. Eu não sou capaz de instalar pacotes adicionais para atingir esse objetivo (embora, eu estaria interessado em ver como eles funcionam, se isso existir).

    
por Gray 08.11.2016 / 16:56

3 respostas

6

Isso listará os pacotes de origem e as versões correspondentes aos pacotes binários instalados:

dpkg-query --show -f '${source:Package} ${source:Version}\n' | sort -u

Essa é a correspondência mais aproximada para os softwares individuais que você pode obter automaticamente: você verá apenas gcc-4.9 uma vez, com a versão associada, em vez de todos os pacotes binários correspondentes. Você não pode recuperar facilmente informações de "fornecedor", você precisaria ver os detalhes do pacote ( apt-cache show ... ) ou as informações de licenciamento (em /usr/share/doc/<package>/copyright - ele deve apontar para o projeto "upstream", ou seja, o "vendedor"); isso não é garantia de estar em formato legível por máquina, então haverá alguma análise humana envolvida.

Você ainda encontrará alguns pacotes de fontes cujo nome contém a versão (principal), por exemplo, gcc-4.9 , gcc-5 etc .; estes são inevitáveis quando os pacotes são projetados para que as versões principais sejam co-instaláveis, como é o caso do GCC.

O comando RPM equivalente é

rpm --qf "%{SOURCERPM}\n" -qa | sort -u
    
por 08.11.2016 / 17:08
2

No Debian, talvez você possa usar a opção - showformat = format para dpkg-query .

Como exemplo:

dpkg-query --show --showformat='${binary:Package}\t${Version}\t${Architecture}\t${binary:Summary}\n' gcc
    
por 08.11.2016 / 17:06
2

No debian você pode executar dpkg --list

Para obter mais informações sobre uma execução de pacote específica:

dpkg -p <package_name>

ou

dpkg -s <package_name>

por exemplo:

# dpkg -s gcc 
Package: gcc
Status: install ok installed
Priority: optional
Section: devel
Installed-Size: 42
Maintainer: Debian GCC Maintainers <[email protected]>
Architecture: amd64
Source: gcc-defaults (1.136)
Version: 4:4.9.2-2
Provides: c-compiler
Depends: cpp (>= 4:4.9.2-2), gcc-4.9 (>= 4.9.2-1~)
Recommends: libc6-dev | libc-dev
Suggests: gcc-multilib, make, manpages-dev, autoconf, automake, libtool,  flex, bison, gdb, gcc-doc
Conflicts: gcc-doc (<< 1:2.95.3)
Description: GNU C compiler
This is the GNU C compiler, a fairly portable optimizing compiler for C.
This is a dependency package providing the default GNU C compiler.

Na distro baseada em RHEL você pode executar rpm -qa

    
por 08.11.2016 / 17:05