Wie finden Sie die Lizenzen für alles, was auf Ihrem System installiert ist?

18

Ich möchte ein Skript schreiben, das die Lizenz für jedes auf meinem System installierte Softwarepaket ausgibt.

Mit kann dpkg --get-selectionsich Liste von allem erhalten, das installiert wird. Ich sehe jedoch keine Möglichkeit, die Lizenzinformationen für jedes Paket abzurufen. Ich kann aptitude showzum Beispiel verwenden , um die Eigenschaften der einzelnen Pakete abzurufen, dies beinhaltet jedoch nicht die Lizenz:

$ 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/

Gibt es ein Drittanbieter-Repository, das die Lizenz mit jedem Paket korreliert?

Es hört sich schmerzhaft an, jedes Quellpaket herunterzuladen und auf Lizenzinformationen zu überprüfen, aber vielleicht ist dies der beste Weg.

mpontillo
quelle

Antworten:

14

Folgendes habe ich letztendlich getan. (führt ~/licenses.txtzu allen Lizenzen, die in existieren /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
mpontillo
quelle
3
Das ist sehr rund. Sie erhalten einfach grep '^' /usr/share/doc/*/copyrightdie gleichen Informationen, oder tail -n 10000 /usr/share/doc/*/copyrightwenn Sie nicht möchten, dass der Dateiname in jeder Zeile vorangestellt wird.
Tripleee
12

Im Jahr 2012 veröffentlichte Debian das Dokument Maschinenlesbares Debian / Copyright, das Lizenzen in Zukunft lesbar macht. Derzeit verwenden nicht alle Pakete dieses Format. Der Befehl

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

gibt immer noch viel müll zurück. Für eine bessere Ausgabe benötigen Sie wahrscheinlich ein Tool, das jede Datei abhängig vom Feldwert analysiert Format:.

Eine ganz andere Art ist die Dateistruktur in /usr/share/common-licenses/(Danke an /programming/1884753/license-info-of-a-deb-package#1884785 ). Es listet die Hauptlizenzen auf, die in Debian-basierten Distributionen verwendet werden (und enthält deren Lizenztexte). Diese Liste wird vom Paket bereitgestellt base-filesund ist nicht mit der Liste der installierten Pakete verknüpft, aber es sind wahrscheinlich genug Informationen für den durchschnittlichen Chef / Kunden.

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

Update Ich habe gerade eine einfache Befehlszeilenlösung veröffentlicht, die die Lizenzinformationen mit viel Heuristik aus den Copyright-Dateien extrahiert. https://github.com/daald/dpkg-licenses . Fühlen Sie sich frei, es zu versuchen. Anregungen sind willkommen.

Daniel Alder
quelle
4

Ich stolpere nur über Dpkg-Lizenzen ( https://github.com/daald/dpkg-licenses ).

Klonen Sie einfach das Repo

Git-Klon https://github.com/daald/dpkg-licenses.git

Dann

./dpkg-licenses> licenses.txt

Und Sie haben die beste Software von heute installiert, Versionen und Lizenzen in einer tabellarischen Liste, von der Sie träumen können ...

Richard
quelle
@ Daniel Alder hat bereits in einer anderen Antwort auf den gleichen Link verwiesen askubuntu.com/a/620069/24203 und er scheint der Autor des Tools zu sein :)
IsaacS