Lizenz per Befehl ausgeben lassen, wie?
Lizenz per Befehl ausgeben lassen, wie?
Hallo,
manchmal möchte ich die Lizenz eines Paketes rasch ermitteln, doch fehlt mir einen Befehl dazu. Mit apt-cache search, apt-cache policy usw. kann einiges über die Herkunft des Paketes herausgefunden werden, doch nicht die spezifische Lizenz des Paketes.
Mit welchem Befehl kann sie ausgegeben werden?
Unter synaptic kann man nach Bereich oder Herkunft zum Beispiel nicht-freie Pakete bei anklicken auflisten lassen. Beim durchstöbern der Bereiche könnte man jedoch etwas übersehen, jedenfalls wäre ich manchmal schon froh gewesen, wenn ich einen Befehl wüsste, womit die installierten unfreien Pakete aufgelistet werden würden.
Das Ziel, nichts freien auf dem Rechner zu haben ist mir wichtig, und es würde auch nützlich sein, rasch vorweisen zu können, dann nur noch ein unfreis firmware oder vielleicht sogar null unfreie Pakete drauf sind. Gibt es einen solchen Befehl?
Vielen Dank und viele Grüße
caue
manchmal möchte ich die Lizenz eines Paketes rasch ermitteln, doch fehlt mir einen Befehl dazu. Mit apt-cache search, apt-cache policy usw. kann einiges über die Herkunft des Paketes herausgefunden werden, doch nicht die spezifische Lizenz des Paketes.
Mit welchem Befehl kann sie ausgegeben werden?
Unter synaptic kann man nach Bereich oder Herkunft zum Beispiel nicht-freie Pakete bei anklicken auflisten lassen. Beim durchstöbern der Bereiche könnte man jedoch etwas übersehen, jedenfalls wäre ich manchmal schon froh gewesen, wenn ich einen Befehl wüsste, womit die installierten unfreien Pakete aufgelistet werden würden.
Das Ziel, nichts freien auf dem Rechner zu haben ist mir wichtig, und es würde auch nützlich sein, rasch vorweisen zu können, dann nur noch ein unfreis firmware oder vielleicht sogar null unfreie Pakete drauf sind. Gibt es einen solchen Befehl?
Vielen Dank und viele Grüße
caue
Re: Lizens per Befehl ausgeben lassen, wie?
vrms könnte deine Wünsche erfüllen!?
Re: Lizens per Befehl ausgeben lassen, wie?
Soweit sich das auf die Debian Repos bezieht, funktioniert vrms sehr gut.
Hat man Fremd Repos eingebunden, werden die Programme "unterschlagen" , bzw. nicht erkannt.
Hat man Fremd Repos eingebunden, werden die Programme "unterschlagen" , bzw. nicht erkannt.
Re: Lizenz per Befehl ausgeben lassen, wie?
In Ergänzung zu vrms könnte man sich noch Pakete anzeigen lassen die veraltet bzw.
an der Paketverwaltung vorbei installiert sind,
Sagt aber nichts über die Lizenz aus:
an der Paketverwaltung vorbei installiert sind,
Sagt aber nichts über die Lizenz aus:
Code: Alles auswählen
apt-show-versions|grep 'No available version in archive'
Re: Lizenz per Befehl ausgeben lassen, wie?
Zum sicheren Nachweis taugt keine der Methoden: Du kannst damit zwar zeigen, dass auf dem Rechner vermutlich irgendwas unfreies drauf ist, das Gegenteil lässt sich aber nur beweisen, wenn alle Daten bekannt sind und eindeutig als "frei" deklariert sind (und auch das schließt nicht aus, dass Fehler passiert sind)
Vielleicht helfen die da verlinkten Diskussionen: https://wiki.debian.org/Debtags/FAQ#Any ... debtags.3F
Die Einteilung in "das ist in main" "das in contrib/nonfree" ist schonmal nen guter Startpunkt. Bei dem Rest müsstest Du eh Datei für Datei durchgehen. Manchmal hast Du ja auch Doppel/Mehrfachlizensierung. Da gilt dann je nach Kontext/Verträgen, das kriegst Du vermutlich auch nicht abgebildet. Und dass in einigen Paketen Dateien unterschiedlichster Lizenzen zusammengeschnürt sind, macht's auch nicht einfacher.
Vielleicht helfen die da verlinkten Diskussionen: https://wiki.debian.org/Debtags/FAQ#Any ... debtags.3F
Die Einteilung in "das ist in main" "das in contrib/nonfree" ist schonmal nen guter Startpunkt. Bei dem Rest müsstest Du eh Datei für Datei durchgehen. Manchmal hast Du ja auch Doppel/Mehrfachlizensierung. Da gilt dann je nach Kontext/Verträgen, das kriegst Du vermutlich auch nicht abgebildet. Und dass in einigen Paketen Dateien unterschiedlichster Lizenzen zusammengeschnürt sind, macht's auch nicht einfacher.
Re: Lizenz per Befehl ausgeben lassen, wie?
Ergänzend zu dem was eggy verlinkt hat: Es gibt da bisher nicht den einen, auch „maschinenlesbaren“ Weg, über den die Lizenzen in den Paketen angegeben sind.
Jedes Paket aus den offiziellen Debian-Repos muss zwar eine Datei /usr/share/doc/PAKET/copyright enthalten, deren Format ist aber (noch) nicht einheitlich. Außerdem lässt sich nicht jedes Paket auf eine Lizenz reduzieren, z.B. perl-base:
Code: Alles auswählen
$ grep ^License: /usr/share/doc/perl-base/copyright
License: GPL-1+ or Artistic
[…]
License: Expat
License: REGCOMP, and GPL-1+ or Artistic
License: GPL-3+-WITH-BISON-EXCEPTION
[…]
License: BSD-3-clause-with-weird-numbering
[…]
Code: Alles auswählen
$ grep ^License: /usr/share/doc/perl-base/copyright | sort -u | wc -l
33
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Lizenz per Befehl ausgeben lassen, wie?
Es ist wirklich eine erstaunlich schöne Antwortkonstellation, die Ihr hier geliefert hab. Ich bin Euch sehr dankbar!
Das Programm vrms habe ich installiert und als normaler Nutzer aufgerufen:
- Skype von Microsoft ist dabei abzusterben und erscheint hier noch als ein Dorn im Auge.
- firmware-iwiwifi: das kommt häufig vor, auch auf den Rechner meiner Großfamilie. Welche Möglichkeiten gibt es, von dem Unfreien zu befreien? Freie Treiber gibt es dafür vermutlich nicht. Dann bliebe die Option, einen freien WLAN-Adapter zu kaufen? Danach habe ich schon ein wenig geschaut, aber die vielen Bäume in diesem Wald machen es mir immer schwer, den benötigten zu erkennen.
- firmware for AMD CPUs? Meine Maschine hat doch einen Inten i3 verbaut. Ob das wirklich benötigt wird?
- firmware for Intel CPUs: hat das hier mit dem nachträglich installierten firmware-iwlwifi zu tun oder ist das eine andere paar Schuhen?
Nächster Befehl - "Pakete anzeigen lassen die veraltet bzw.
an der Paketverwaltung vorbei installiert sind":
"Jedes Paket aus den offiziellen Debian-Repos muss zwar eine Datei /usr/share/doc/PAKET/copyright enthalten" - gut zu wissen!
So, das Format ist noch nicht einheitlich und die Vielfalt der Lizenzen und modularisierten Programme machen es nicht immer leicht. Mal sehen, was der folgende Befehl zeigen kann:
Ja, mit diesen Werkzeugen kann man viel Klarheit schaffen.
Diese Befehle beleuchten bereits installierte Pakete. Was nicht installiert ist, das kann nicht in /usr/share/doc/PAKET/copyright vorhanden sein.
Frage: gibt es eine Möglichkeit, die Lizenz eines noch nicht installiertes Paketes per Befehl abzufragen? So kann man rechzeitig Klarheit schaffen, und auf Unfreies bewusst verziechten.
Viele Grüße
Caue
Das Programm vrms habe ich installiert und als normaler Nutzer aufgerufen:
Code: Alles auswählen
vrms
Non-free packages installed on debian
firmware-iwlwifi Binary firmware for Intel Wireless cards
skypeforlinux Skype keeps the world talking, for free.
Non-free packages with status other than installed on debian
amd64-microcode ( dei) Processor microcode firmware for AMD CPUs
intel-microcode ( dei) Processor microcode firmware for Intel CPUs
4 non-free packages, 0.1% of 3506 installed packages.
- firmware-iwiwifi: das kommt häufig vor, auch auf den Rechner meiner Großfamilie. Welche Möglichkeiten gibt es, von dem Unfreien zu befreien? Freie Treiber gibt es dafür vermutlich nicht. Dann bliebe die Option, einen freien WLAN-Adapter zu kaufen? Danach habe ich schon ein wenig geschaut, aber die vielen Bäume in diesem Wald machen es mir immer schwer, den benötigten zu erkennen.
- firmware for AMD CPUs? Meine Maschine hat doch einen Inten i3 verbaut. Ob das wirklich benötigt wird?
- firmware for Intel CPUs: hat das hier mit dem nachträglich installierten firmware-iwlwifi zu tun oder ist das eine andere paar Schuhen?
Nächster Befehl - "Pakete anzeigen lassen die veraltet bzw.
an der Paketverwaltung vorbei installiert sind":
Code: Alles auswählen
apt-show-versions|grep 'No available version in archive'
digimend-dkms:all 9 installed: No available version in archive
linux-headers-4.19.0-6-amd64:amd64 4.19.67-2+deb10u2 installed: No available version in archive
linux-headers-4.19.0-6-common:all 4.19.67-2+deb10u2 installed: No available version in archive
net.downloadhelper.coapp:amd64 1.3.0 installed: No available version in archive
pgadmin4:amd64 4.25-1.pgdg100+1 installed: No available version in archive
pgadmin4-apache2:all 4.25-1.pgdg100+1 installed: No available version in archive
pgadmin4-common:all 4.25-1.pgdg100+1 installed: No available version in archive
pgadmin4-doc:all 4.25-1.pgdg100+1 installed: No available version in archive
So, das Format ist noch nicht einheitlich und die Vielfalt der Lizenzen und modularisierten Programme machen es nicht immer leicht. Mal sehen, was der folgende Befehl zeigen kann:
Code: Alles auswählen
$ grep ^License: /usr/share/doc/bashtop/copyright
License: Apache-2.0
License: Apache-2.0
License: Apache-2.0
$ grep ^License: /usr/share/doc/htop/copyright
License: GPL-2+
License: GPL-2+
License: GPL-2+
$ grep ^License: /usr/share/doc/bash/copyright
$ grep ^License: /usr/share/doc/epiphany/copyrightgrep: /usr/share/doc/epiphany/copyright: Arquivo ou diretório inexistente
$ grep ^License: /usr/share/doc/emacs/copyright
License: GPL-3+
License:
License:
License: GPL plus Ian
License: manpage license
License: manpage license
License: manpage license
License: efaq.texi license
License: efaq-w32.texi license
License: LGPL-2+
License: GPL-2+
License: same as corresponding file in /etc/images
License: GPL-2+
License: GPL-2+
License: MPL-2.0
License:
License: meese.el license
License: gnulib-comp.m4 license
License: pkg.m4 license
License: m4 license
License: sedadmin.inp license
License: nt/inc/dirent.h license
License:
License:
License:
License: MPL-2.0
License: manpage license
$ grep ^License: /usr/share/doc/emacs/copyright | sort -u | wc -l
16
Diese Befehle beleuchten bereits installierte Pakete. Was nicht installiert ist, das kann nicht in /usr/share/doc/PAKET/copyright vorhanden sein.
Frage: gibt es eine Möglichkeit, die Lizenz eines noch nicht installiertes Paketes per Befehl abzufragen? So kann man rechzeitig Klarheit schaffen, und auf Unfreies bewusst verziechten.
Viele Grüße
Caue
Re: Lizenz per Befehl ausgeben lassen, wie?
Die Treiber sind frei und Teil des Kernels. firmware-iwlwifi ist die unfreie Firmware, die auf die WLAN-/Bluetoothadapter von Intel geladen werden muss, damit sie funktionieren.caue hat geschrieben:27.03.2021 08:10:26[...]
- firmware-iwiwifi: das kommt häufig vor, auch auf den Rechner meiner Großfamilie. Welche Möglichkeiten gibt es, von dem Unfreien zu befreien? Freie Treiber gibt es dafür vermutlich nicht. Dann bliebe die Option, einen freien WLAN-Adapter zu kaufen? Danach habe ich schon ein wenig geschaut, aber die vielen Bäume in diesem Wald machen es mir immer schwer, den benötigten zu erkennen.
Mir ist keine aktueller WLAN-Adapter bekannt auf dem keine unfreie Firmware laufen würde, vielleicht gibt es welche bei denen die unfreie Firmware in einem nichtflüchtigen Speicher gespeichert ist und daher nicht erst auf das Gerät geladen werden muss, aber das ändert natürlich nichts daran, dass trotzdem eine unfreie Firmware darauf läuft.
Die Firmware älterer WLAN-Adapter von Atheros war bzw. ist frei, aber bei aktuellen atheros-Chips ist die Firmware genauso unfrei (firmware-atheros) wie bei allen anderen.
Nein, das sind wie in der Beschreibung steht, die Microcode-Updates für CPUs von AMD. Wenn man die auf einem PC mit Intel CPU installiert, werden die einfach ignoriert.caue hat geschrieben:27.03.2021 08:10:26- firmware for AMD CPUs? Meine Maschine hat doch einen Inten i3 verbaut. Ob das wirklich benötigt wird?
Das sind wie beim obigen AMD-Pendant die Microcode-Updates für Intel Prozessoren. Das hat nichts mit WLAN oder Bluetooth zu tun.caue hat geschrieben:27.03.2021 08:10:26- firmware for Intel CPUs: hat das hier mit dem nachträglich installierten firmware-iwlwifi zu tun oder ist das eine andere paar Schuhen?
Microcode-Updates beheben/umgehen oder mildern Fehler in CPUs, prominentes Beispiel wären die Sammlung an Sicherheitslücken, die unter dem Namen Spectre/Meltdown bekannt geworden ist und die zum Teil mit Microcode-Updates gemildert wird.
Microcode-Updates werden übrigens auch schon vom BIOS eingespielt, aber nachdem es selten ein BIOS mit den neuesten Microcode-Updates gibt, kann man die Microcode-Updates eben auch mit diesem Paket installieren.
Mit apt könnte man zumindest einmal ganz einfach nachsehen in welcher Sektion das Paket ist, zB bedeutet contribcaue hat geschrieben:27.03.2021 08:10:26[...]
Frage: gibt es eine Möglichkeit, die Lizenz eines noch nicht installiertes Paketes per Befehl abzufragen? So kann man rechzeitig Klarheit schaffen, und auf Unfreies bewusst verziechten.
Code: Alles auswählen
$ apt show libdvd-pkg
Package: libdvd-pkg
Version: 1.4.2-1-1
Priority: optional
Section: contrib/utils
....
Sonst glaube ich bleibt dir nichts anderes übrig als das fragliche Paket herunterzuladen, zu entpacken und nach einer Datei »/usr/share/doc/*/copyright« zu suchen.
Re: Lizenz per Befehl ausgeben lassen, wie?
Ich hab da spaßeshalber grad mal was zusammengebasteltsmutbert hat geschrieben:27.03.2021 10:36:59Sonst glaube ich bleibt dir nichts anderes übrig als das fragliche Paket herunterzuladen, zu entpacken und nach einer Datei »/usr/share/doc/*/copyright« zu suchen.
Code: Alles auswählen
~/bin$ cat apt-peak-copyright
#!/bin/sh
set -eu
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
cd "$tmpdir"
for pkg in "$@"; do
apt-get download -- "$pkg" >/dev/null
dpkg-deb --fsys-tarfile -- *.deb | tar --wildcards -Ox "./usr/share/doc/*/copyright"
rm -f -- *.deb
done
Code: Alles auswählen
~$ apt-peak-copyright bash dash
This is Debian GNU/Linux's prepackaged version of the FSF's GNU Bash,
the Bourne Again SHell.
[…]
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: dash
Upstream-Contact: dash@vger.kernel.org
Source: http://gondor.apana.org.au/~herbert/dash/
[…]
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Lizenz per Befehl ausgeben lassen, wie?
Ich brauchte ein wenig Zeit, um dein Bastelwerk nachzuvollziehen, weil mir die Erfahrung mit Skripts fehlt. Nachdem ich dann das Skript als Datei unter der Bezeichnung apt-peak-copyright ins Verzeichnis /bin gespeichert und mit chmod +x Ausführungsrechte vergeben habe, war ich stolz, dass sich was beim Aufruf bewegte.
Die Lizenz, etc. von noch nicht installierten Paketen kann tatsächlich somit, bei bestehender Internetverbindung, abgerufen werden:
Schön, dass sogar eine Reihe von Paketen gleichzeitig angegeben werden kann "bash dash xtel xsensors". Bestimmte Programme, wie z.B. emacs, haben so viele Informationen, dass das Terminalfenster überläuft.
Viele Grüße
caue
Die Lizenz, etc. von noch nicht installierten Paketen kann tatsächlich somit, bei bestehender Internetverbindung, abgerufen werden:
Code: Alles auswählen
apt-peak-copyright xsensors
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: xsensors
Upstream-Contact: Kris Kersey <augustus@linuxhardware.org>
Source: http://www.linuxhardware.org/xsensors/
Files: *
Copyright:
2002-2010 Kris Kersey
License: GPL-2+
[...]
Viele Grüße
caue