Ich möchte ein Skript schreiben, das die Lizenz für jedes auf meinem System installierte Softwarepaket ausgibt.
Mit kann dpkg --get-selections
ich Liste von allem erhalten, das installiert wird. Ich sehe jedoch keine Möglichkeit, die Lizenzinformationen für jedes Paket abzurufen. Ich kann aptitude show
zum 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.
Antworten:
Folgendes habe ich letztendlich getan. (führt
~/licenses.txt
zu allen Lizenzen, die in existieren/usr/share/doc
)quelle
grep '^' /usr/share/doc/*/copyright
die gleichen Informationen, odertail -n 10000 /usr/share/doc/*/copyright
wenn Sie nicht möchten, dass der Dateiname in jeder Zeile vorangestellt wird.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
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 bereitgestelltbase-files
und ist nicht mit der Liste der installierten Pakete verknüpft, aber es sind wahrscheinlich genug Informationen für den durchschnittlichen Chef / Kunden.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.
quelle
Ich stolpere nur über Dpkg-Lizenzen ( https://github.com/daald/dpkg-licenses ).
Klonen Sie einfach das Repo
Dann
Und Sie haben die beste Software von heute installiert, Versionen und Lizenzen in einer tabellarischen Liste, von der Sie träumen können ...
quelle