Je veux écrire un script qui génère la licence pour chaque progiciel installé sur mon système.
En utilisant dpkg --get-selections
je peux obtenir la liste de tout installé. Cependant, je ne vois pas de moyen d'obtenir les informations de licence pour chaque package. Par exemple, je peux utiliser aptitude show
pour obtenir les propriétés de chaque package, mais cela n'inclut pas la licence:
$ 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-t-il un référentiel tiers qui corrèle la licence à chaque package?
Il semble difficile de télécharger chaque package source et de l'inspecter pour obtenir des informations sur les licences, mais c'est peut-être la meilleure façon.
Réponses:
Voici ce que j'ai fini par faire. (entraîne
~/licenses.txt
toutes les licences existantes/usr/share/doc
)la source
grep '^' /usr/share/doc/*/copyright
Vous obtiendrez simplement les mêmes informations, outail -n 10000 /usr/share/doc/*/copyright
si vous ne voulez pas le préfixe du nom de fichier sur chaque ligne.En 2012, Debian a publié le document Debian / copyright lisible par machine qui rendra les licences lisibles à l'avenir. Actuellement, tous les packages n'utilisent pas ce format. La commande
retourne toujours beaucoup de déchets. Pour une meilleure sortie, vous avez probablement besoin d'un outil qui analyse chaque fichier en fonction de la
Format:
valeur du champ.Une manière complètement différente est la structure du fichier
/usr/share/common-licenses/
(merci à /programming/1884753/license-info-of-a-deb-package#1884785 ). Il répertorie les principales licences utilisées dans les distributions basées sur Debian (et contient leurs textes de licence). Cette liste est fournie par le packagebase-files
et n'est pas liée à la liste des packages installés, mais c'est probablement suffisamment d'informations pour le patron / client moyen.Mise à jour Je viens de publier une solution de ligne de commande simple qui extrait les informations de licence des fichiers de copyright avec beaucoup d'heuristiques. https://github.com/daald/dpkg-licenses . N'hésitez pas à l'essayer. Toutes suggestions sont les bienvenues.
la source
Je tombe juste sur des licences dpkg ( https://github.com/daald/dpkg-licenses ).
Clonez simplement le dépôt
alors
Et vous avez le meilleur des logiciels installés aujourd'hui, la liste des versions et des licences dont vous pouvez rêver ...
la source