Como você encontra as licenças para tudo instalado em seu sistema?

14

Eu quero escrever um script que produza a licença para cada pacote de software instalado no meu sistema.

Usando dpkg --get-selections , consigo obter uma lista de tudo instalado. No entanto, não vejo uma maneira de obter as informações de licença para cada pacote. Por exemplo, posso usar aptitude show para obter as propriedades de cada pacote, mas isso não inclui a licença:

$ aptitude show apache2
Package: apache2
State: installed
Automatically installed: no
Version: 2.2.14-5ubuntu8.6
Priority: optional
Section: httpd
Maintainer: Ubuntu Developers <[email protected]>
Uncompressed Size: 36.9k
Depends: apache2-mpm-worker (= 2.2.14-5ubuntu8.6) | apache2-mpm-prefork (= 2.2.14-5ubuntu8.6) | apache2-mpm-event (= 2.2.14-5ubuntu8.6) | apache2-mpm-itk (= 2.2.14-5ubuntu8.6),
         apache2.2-common (= 2.2.14-5ubuntu8.6)
Provided by: apache2-mpm-event, apache2-mpm-itk, apache2-mpm-prefork, apache2-mpm-worker
Description: Apache HTTP Server metapackage
 The Apache Software Foundation's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the
 number one web server on the Internet. 

 It features support for HTTPS, virtual hosting, CGI, SSI, IPv6, easy scripting and database integration, request/response filtering, many flexible authentication schemes, and
 more.
Homepage: http://httpd.apache.org/

Existe um repositório de terceiros que correlaciona a licença para cada pacote?

Parece difícil fazer o download de todos os pacotes de fontes e inspecioná-los em busca de informações sobre licenciamento, mas talvez seja a melhor maneira.

    
por mpontillo 26.01.2013 / 07:23

3 respostas

14

Aqui está o que acabei fazendo. (resulta em ~/licenses.txt com todas as licenças que existem em /usr/share/doc )

$ packages='dpkg --get-selections | awk '{ print $1 }''
$ for package in $packages; do echo "$package: "; cat /usr/share/doc/$package/copyright; echo ""; echo ""; done > ~/licenses.txt
    
por mpontillo 26.01.2013 / 09:47
10

Em 2012, o Debian lançou o documento debian / copyright legível por máquina que tornará as licenças legíveis no futuro. Atualmente, nem todos os pacotes usam esse formato. O comando

grep -h '^License:' /usr/share/doc/*/copyright | sort -i | uniq -ic | sort -n

ainda retorna muito lixo. Para uma saída melhor, você provavelmente precisará de uma ferramenta que analise cada arquivo, dependendo do valor do campo Format: .

Uma maneira completamente diferente é a estrutura de arquivos em /usr/share/common-licenses/ (thx para link ). Ele lista as principais licenças usadas nas distribuições baseadas no Debian (e contém seus textos de licença). Esta lista é fornecida pelo pacote base-files e não está vinculada à lista de pacotes instalados, mas provavelmente é informação suficiente para o chefe / cliente médio.

ls /usr/share/common-licenses/
Apache-2.0  BSD   GFDL-1.2  GPL    GPL-2  LGPL    LGPL-2.1
Artistic    GFDL  GFDL-1.3  GPL-1  GPL-3  LGPL-2  LGPL-3

Atualizar Acabei de publicar uma solução de linha de comando simples que extrai as informações de licença dos arquivos de direitos autorais com muitas heurísticas. link . Sinta-se à vontade para experimentar. Qualquer sugestão é bem vinda.

    
por Daniel Alder 06.05.2015 / 15:23
4

Acabei de tropeçar em dpkg-licenses ( link ).

Basta clonar o repo

% bl0ck_qu0te%

Então

% bl0ck_qu0te%

E você tem o melhor dos softwares atuais instalados, versões e licenças da lista tabular que você pode sonhar ...

    
por Richard 06.04.2018 / 16:54

Tags