Como descubro a licença de cada um dos meus aplicativos/pacotes instalados?

Como descubro a licença de cada um dos meus aplicativos/pacotes instalados?

Estou usando o Ubuntu-15.10. Instalei muitos aplicativos além das instalações vanilla.

Agora, gostaria de saber quantos pacotes instalados estão licenciados sob a GPL ou licenças de terceiros (por exemplo, Fluendo).

Existe alguma maneira de descobrir isso? Ou preciso verificar manualmente cada licença de cada aplicativo instalado?

EDITAR:

A seguir, usei o trecho para listar o nome de vários arquivos de licença instalados.

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u

Responder1

As licenças dos pacotes estão descritas em /usr/share/doc/${package}/copyright. Este arquivo é necessário para especificar a licença principal do pacote; muitos pacotes usam umcopyrightarquivo legível por máquinaque lista as licenças de cada arquivo no pacote fonte.

Para arquivos legíveis por máquina, você pode usar a License:linha que apresenta licenças:

awk '/^License:/ { print $2 }' /usr/share/doc/*/copyright | sort -u

Se você estiver procurando por uma licença documentada em /usr/share/common-licenses, poderá procurar menções a ela nos copyrightarquivos;por exemplopara contar o número de pacotes licenciados sob a GPL ou LGPL:

grep -l GPL /usr/share/doc/*/copyright | wc -l

Para contar apenas o número de pacotes fonte, conte o número de arquivos exclusivos (os pacotes binários enviados de um único pacote fonte têm exatamente o mesmo copyrightarquivo ou estão vinculados ao mesmo arquivo):

md5sum $(grep -l GPL /usr/share/doc/*/copyright) | sort -k1,1 -u | wc -l

Debsources fornece várias maneiras de pesquisarcopyrighttodos os arquivos do Debian;aqui está uma frasepara recuperar a licença de um único arquivo (se seu pacote usar um formato legível por máquina). (A licença desse one-liner não está documentada, então estou apenas criando um link para ele, não copiando aqui.)

Observe que como os copyrightarquivos documentam as licenças dos pacotes fonte, eles podem documentar arquivos que não são enviados em pacotes binários e não afetam a licença do pacote binário; este pode ser o caso, por exemplo, de arquivos licenciados pela GPL que são usados ​​apenas durante a construção de um pacote não licenciado pela GPL.

Responder2

A maior parte das informações de licenciamento de software está disponível em/usr/share/doc/pkg-name/copyright

Aproximadamente você pode estimar o número de programas usando GPLpor meio de:

  • grep -l GPL /usr/share/doc/*/copyright

    Mas greptambém incluirá arquivos vinculados em vez de arquivos normais. Então, recomendo usar findo seguinte:

  • sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l

    Também incluirá arquivos como /usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright. Se você não quiser que eles sejam contados, você pode especificá-los maxdepthcom find.

Exemplo (no meu sistema):

$ grep -l GPL /usr/share/doc/*/copyright | wc -l
1949

$ sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l
1889

Observe que um software pode incluir mais de uma licença por arquivo no formato copyright.

Responder3

O código a seguir me ajudará a listar as licenças instaladas de vários aplicativos no Ubuntu 15.04.

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u

Responder4

Eu só tenho sistemas CentOS em mãos, você pode exibir o nome do pacote e as informações da licença com o seguinte:

$ rpm -qa --qf "%{name}: %{license}\n"
...
ncurses: MIT
cairo: LGPLv2 or MPLv1.1
dbus-python: MIT
media-player-info: BSD
dbus-x11: GPLv2+ or AFL
NetworkManager: GPLv2+
...

Você deve ser capaz de fazer algo semelhante dpkg-query --licensenos sistemas Ubuntu.

Comoaqui, onde ele costuma $ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"mostrar apenas um subconjunto de informações por pacote. Verifique as dpkg-queryopções para ver se você consegue obter o formulário de licença lá.

Outropostagem interessantesobre isso, fala exatamente sobre essa problemática e que:

No momento, isso é mal suportado, embora haja um esforço em andamento para fornecer informações legíveis por máquina nos /usr/share/doc/*/copyrightarquivos.

informação relacionada