
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 copyright
Dateidas 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 copyright
Datei 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 incopyright
alle 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 copyright
Dateien, 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
grep
auch Dateien eingeschlossen, die Links sind, statt normaler Dateien. Daher empfehle ich, inffind
wie 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 siemaxdepth
mit „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-query
Optionen, 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/*/copyright
Dateien bereitzustellen.