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

4

Estou usando o Ubuntu-15.10. Eu instalei muitas aplicações além das instalações baunilha.

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

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

EDITAR:

O trecho a seguir costumava 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
    
por SHW 18.02.2016 / 12:35

4 respostas

4

As licenças de

Pacotes são descritas em /usr/share/doc/${package}/copyright . Este arquivo é necessário para especificar a licença principal do pacote; muitos pacotes usam um arquivo copyright legível por máquina que lista as licenças de cada único arquivo no pacote de origem.

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

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

Se você está procurando uma licença documentada em /usr/share/common-licenses , pode procurar por menções daquelas nos arquivos copyright ; por exemplo, para 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 de origem, conte o número de arquivos exclusivos (os pacotes binários enviados de um único pacote de origem têm exatamente o mesmo arquivo copyright ou o link para o mesmo arquivo):

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

O Debsources fornece várias maneiras de pesquisar através de todos os arquivos copyright do Debian ; aqui está um verso para recuperar a licença de um único arquivo (se o pacote dele usar um formato legível por máquina) ). (A licença desse one-liner não está documentada, então estou apenas ligando para ele, não copiando aqui.)

Observe que, como os arquivos copyright documentam as licenças dos pacotes de origem, 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; esse pode ser o caso, por exemplo, de arquivos licenciados sob GPL, que são usados apenas durante a compilação para um pacote não licenciado sob a GPL.

    
por 21.02.2016 / 11:33
3

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

Aproximadamente você pode estimar o número de programa usando GPL por meio de:

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

    Mas grep também incluirá arquivos vinculados em vez de arquivos comuns. Por isso, recomendo usinf find da seguinte forma:

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

    Ele também incluirá arquivo (s) como /usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright , se você não quiser que eles sejam contados, você pode especificar maxdepth 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 em copyright .

    
por 18.02.2016 / 13:40
2

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
    
por 19.02.2016 / 11:28
-1

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 com dpkg-query --license nos sistemas Ubuntu.

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

Outro post interessante sobre isso, fala exatamente sobre essa problemática e que:

At the moment this is poorly supported, though there is an effort under way to provide machine-readable information in the /usr/share/doc/*/copyright files.

    
por 18.02.2016 / 13:41