
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 umcopyright
arquivo 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 copyright
arquivos;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 copyright
arquivo 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 pesquisarcopyright
todos 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 copyright
arquivos 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 GPL
por meio de:
grep -l GPL /usr/share/doc/*/copyright
Mas
grep
também incluirá arquivos vinculados em vez de arquivos normais. Então, recomendo usarfind
o 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á-losmaxdepth
com 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 --license
nos 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-query
opçõ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/*/copyright
arquivos.