Wie finde ich die Lizenz für jede meiner installierten Anwendungen/Pakete heraus?

Wie finde ich die Lizenz für jede meiner installierten Anwendungen/Pakete heraus?

Ich verwende Ubuntu 15.10. Ich habe viele Anwendungen zusätzlich zu den Standardinstallationen installiert.

Nun möchte ich herausfinden, wie viele installierte Pakete unter der GPL oder Lizenzen von Drittanbietern (z. B. Fluendo) lizenziert sind.

Gibt es eine Möglichkeit, das herauszufinden? Oder muss ich jede einzelne Lizenz jeder installierten Anwendung manuell überprüfen?

BEARBEITEN:

Den folgenden Codeausschnitt habe ich verwendet, um die Namen verschiedener installierter Lizenzdateien aufzulisten.

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u

Antwort1

Die Lizenzen der Pakete werden in beschrieben /usr/share/doc/${package}/copyright. Diese Datei wird benötigt, um die Hauptlizenz des Pakets anzugeben; viele Pakete verwenden einemaschinenlesbare copyrightDateidas die Lizenzen jeder einzelnen Datei im Quellpaket auflistet.

Für maschinenlesbare Dateien können Sie die License:Zeile verwenden, die Lizenzen einführt:

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

Wenn Sie nach einer in dokumentierten Lizenz suchen /usr/share/common-licenses, können Sie in den Dateien nach Erwähnungen dieser Lizenzen suchen copyright.z.Bum die Anzahl der unter der GPL oder LGPL lizenzierten Pakete zu zählen:

grep -l GPL /usr/share/doc/*/copyright | wc -l

Um nur die Anzahl der Quellpakete zu zählen, zählen Sie die Anzahl der eindeutigen Dateien (Binärpakete, die aus einem einzigen Quellpaket stammen, haben genau dieselbe copyrightDatei oder verweisen auf dieselbe Datei):

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

Debsources bietet verschiedene Möglichkeiten zur Suche incopyrightalle Dateien von Debian;hier ist ein Einzeilerum die Lizenz einer einzelnen Datei abzurufen (wenn ihr Paket ein maschinenlesbares Format verwendet). (Die Lizenz dieses Einzeilers ist nicht dokumentiert, daher verlinke ich nur darauf und kopiere sie nicht hierher.)

Beachten Sie, dass die copyrightDateien, da sie die Lizenzen der Quellpakete dokumentieren, durchaus Dateien dokumentieren können, die nicht in Binärpaketen enthalten sind und die Lizenz des Binärpakets nicht beeinflussen. Dies kann beispielsweise bei GPL-lizenzierten Dateien der Fall sein, die nur während des Builds für ein nicht GPL-lizenziertes Paket verwendet werden.

Antwort2

Die meisten Lizenzinformationen zur Software finden Sie unter/usr/share/doc/pkg-name/copyright

Die Anzahl der verwendeten Programme lässt sich grob wie folgt abschätzen GPL:

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

    Es werden aber grepauch Dateien eingeschlossen, die Links sind, statt normaler Dateien. Daher empfehle ich, inf findwie folgt zu verwenden:

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

    Es werden auch Dateien wie eingeschlossen /usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright. Wenn Sie diese nicht mitzählen möchten, können Sie sie maxdepthmit „find“ angeben.

Beispiel (auf meinem System):

$ 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

Beachten Sie, dass eine Software mehr als eine Lizenz pro Datei enthalten kann copyright.

Antwort3

Der folgende Code hilft mir, die installierten Lizenzen verschiedener Anwendungen auf Ubuntu 15.04 aufzulisten.

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u

Antwort4

Ich habe nur CentOS-Systeme zur Verfügung. Sie können den Paketnamen und die Lizenzinformationen wie folgt anzeigen:

$ 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+
...

Auf Ubuntu-Systemen sollte es möglich sein, etwas Ähnliches zu tun dpkg-query --license.

WieHier, wo er $ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"normalerweise nur eine Teilmenge der Informationen pro Paket anzeigt. Überprüfen Sie die dpkg-queryOptionen, um zu sehen, ob Sie dort das Lizenzformular erhalten können.

Ein andererinteressanter Beitragdazu, spricht genau diese Problematik an und zwar:

Derzeit wird dies nur unzureichend unterstützt, es gibt jedoch Bemühungen, maschinenlesbare Informationen in den /usr/share/doc/*/copyrightDateien bereitzustellen.

verwandte Informationen