Como listar todos os meus pacotes da linha de comando que podem mostrar o nome do pacote, licença, URL de origem, etc?

3

Como obter toda a lista de pacotes instalados com license, source url ? Como seguir apenas mostra o nome do pacote apenas.

$ dpkg --get-selections
acpi-support                    install
acpid                       install
adduser                     install
adium-theme-ubuntu              install
aisleriot                   install
alacarte                    install

Por exemplo, no Fedora / CentOS (RED HAT LINUX BRANCH), você pode ver que:

$ yum info busybox
Loaded plugins: auto-update-debuginfo, langpacks, presto, refresh-packagekit
Available Packages
Name        : busybox
Arch        : i686
Epoch       : 1
Version     : 1.18.2
Release     : 5.fc15
Size        : 615 k
Repo        : updates
Summary     : Statically linked binary providing simplified versions of system commands
URL         : http://www.busybox.net
License     : GPLv2
Description : Busybox is a single binary which includes versions of a large number
            : of system commands, including a shell.  This package can be very
            : useful for recovering from certain types of system failures,
            : particularly those involving broken shared libraries.

Acompanhamento:

/var/lib/apt/lists$ ls
extras.ubuntu.com_ubuntu_dists_natty_main_binary-amd64_Packages
extras.ubuntu.com_ubuntu_dists_natty_main_source_Sources
extras.ubuntu.com_ubuntu_dists_natty_Release
extras.ubuntu.com_ubuntu_dists_natty_Release.gpg
lock
partial
security.ubuntu.com_ubuntu_dists_natty-security_main_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_main_source_Sources
security.ubuntu.com_ubuntu_dists_natty-security_multiverse_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_multiverse_source_Sources
security.ubuntu.com_ubuntu_dists_natty-security_Release
security.ubuntu.com_ubuntu_dists_natty-security_Release.gpg
security.ubuntu.com_ubuntu_dists_natty-security_restricted_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_restricted_source_Sources
security.ubuntu.com_ubuntu_dists_natty-security_universe_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_universe_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_main_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_multiverse_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_multiverse_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_Release
us.archive.ubuntu.com_ubuntu_dists_natty_Release.gpg
us.archive.ubuntu.com_ubuntu_dists_natty_restricted_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_restricted_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_universe_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_universe_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_main_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_main_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_multiverse_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_multiverse_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_Release
us.archive.ubuntu.com_ubuntu_dists_natty-updates_Release.gpg
us.archive.ubuntu.com_ubuntu_dists_natty-updates_restricted_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_restricted_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_universe_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_universe_source_Sources
    
por YumYumYum 17.12.2011 / 10:02

6 respostas

4

dpkg-query é um utilitário que permite consultar o banco de dados do dpkg. Para imprimir o nome e a página inicial de todos os pacotes instalados:

$ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"
a2ps                            
aalib1                          
abrowser                        
abrowser-branding               
accountsservice                 http://cgit.freedesktop.org/accountsservice/
acl                             http://savannah.nongnu.org/projects/acl/
acpi-support                    
acpid                           http://www.tedfelix.com/linux/acpid-netlink.html
adbbs                           
adduser                         http://alioth.debian.org/projects/adduser/
...

Note que a homepage não é uma entrada requerida no arquivo de controle do pacote Debian. Eu diria que apenas cerca de 40% dos pacotes instalados no meu sistema têm uma homepage listada.

Não existe uma maneira simples de determinar (programaticamente) a licença de um pacote. O arquivo de controle do Debian não possui campo para um título de licença. Os detalhes da licença para um pacote foo devem ser fornecidos no arquivo /usr/share/doc/<foo>/copyright . No entanto, não há formato padrão para esses arquivos. Alguns deles são bastante simples e basicamente dizem que isto é liberado sob a GPL v3, veja / usr / share / common-licenses / GPL-3 para o texto completo da licença . Outros têm uma licença personalizada incluída na íntegra. Pacotes complexos podem ter licenças diferentes para partes diferentes dele (por exemplo, um para o programa e outro para gráficos). Frequentemente, a licença das informações de empacotamento do Debian também está incluída.

Resumindo: é simples obter manualmente a licença para um único pacote. Se você precisar fazer isso automaticamente para todos os pacotes instalados, será necessário um grande esforço.

    
por Blair 17.12.2011 / 11:22
1

A licença e o URL de origem (acho que você quer dizer aqui o URL de origem do upstream do tarball) geralmente podem ser encontrados em um arquivo chamado copyright. Este arquivo deve estar em todos os pacotes, mas só recentemente foi "padronizado" para facilitar a leitura de máquinas / computadores (veja DEP5 ).

Nem todos os pacotes têm as licenças preenchidas corretamente. Além disso, nem todos os pacotes têm arquivos de copyright legíveis por máquina. Um único arquivo pode algumas vezes exigir uma licença separada e pode tornar o pacote debian um candidato para remoção se a licença não permitir a redistribuição (ou se não for uma licença aprovada gratuita / de código aberto).

    
por Savvas Radevic 17.12.2011 / 11:28
1

Para fazer o download do arquivo debian / copyright de cada pacote, você pode usar o gerenciador de pacotes cupt , assim:

cupt copyright busybox python > all-copyrights.txt

ou para obter um arquivo por pacote:

for i in busybox python; do cupt copyright "$i" >"$i"_copyright.txt; done

Em contraste com o Fedora, o Debian / Ubuntu normalmente não fornece uma única licença para um pacote, mas lista todas as licenças na fonte; é muito mais preciso nesse sentido, mas também é mais difícil obter uma visão geral. Além disso, o formato não uniforme de arquivos debian / copyright mais antigos também não ajuda:)

    
por arand 10.02.2013 / 14:24
1

Criando a resposta de @ crysman: Isso funcionou para muitos pacotes no Ubuntu 14.04, e a parte ${packages:amd64} foi para navegar para a pasta correta com base no meu processador.

for package in 'dpkg -l | grep ^ii | awk '{print }''; do echo -e $package"\t"'grep License /usr/share/doc/${package%:amd64}/copyright'; done > ~/dpkg.txt
    
por JDT 24.02.2015 / 03:45
0

A coisa mais próxima que posso imaginar é comparável a yum info que seria apt-cache show . Eu não sei se alguma vez vai mostrar a licença, mas dá um monte de detalhes sobre um pacote. Você pode fornecer vários nomes de pacotes para obter detalhes sobre mais de um pacote de uma só vez.

Por exemplo:

matt@eden:~$ apt-cache show python
Package: python
Priority: important
Section: python
Installed-Size: 768
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Matthias Klose <[email protected]>
Architecture: all
Source: python-defaults
Version: 2.7.2-7ubuntu2
Replaces: python-dev (<< 2.6.5-2)
Provides: python-ctypes, python-email, python-importlib, python-profiler, python-wsgiref
Depends: python2.7 (>= 2.7.2-3~), python-minimal (= 2.7.2-7ubuntu2)
Suggests: python-doc (= 2.7.2-7ubuntu2), python-tk (= 2.7.2-7ubuntu2)
Conflicts: python-central (<< 0.5.5)
Breaks: python-bz2 (<< 1.1-8), python-csv (<< 1.0-4), python-email (<< 2.5.5-3), update-manager (<= 0.200.5-1)
Filename: pool/main/p/python-defaults/python_2.7.2-7ubuntu2_all.deb
Size: 165792
MD5sum: a4b881e98e39f213bc8bbcfac566dd21
SHA1: 8a85fd4e62d1bad26a03ceef4313a12521e8a1dc
SHA256: ba95771b54aa4a1211486651fea1ecbac9e2dbbb4f66435e8a4dd0cb3e86bf4b
Description-en: interactive high-level object-oriented language (default version)
 Python, the high-level, interactive object oriented language,
 includes an extensive class library with lots of goodies for
 network programming, system administration, sounds and graphics.
 .
 This package is a dependency package, which depends on Debian's default
 Python version (currently v2.7).
Homepage: http://www.python.org/
Description-md5: d1ea97f755d8153fe116080f2352859b
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m
Task: minimal
    
por Matt Layman 17.12.2011 / 17:30
0

Você pode usar algo como:

for package in 'dpkg -l | grep ^ii | awk '{print }''; do apt-cache policy $package; done | grep -iv "version table" | grep -i -e :$ -e multiverse -e restricted
    
por crysman 12.07.2013 / 20:59