Cum aflu licența pentru fiecare dintre aplicațiile/pachetele instalate? (Unix, Ubuntu, Licențe)

SHW a intrebat.
a intrebat.

Folosesc Ubuntu-15.10.10.Am instalat multe aplicații în afară de instalările vanilla.

Acum, aș dori să aflu câte dintre pachetele instalate sunt licențiate sub GPL sau sub licențe terțe (de exemplu, Fluendo).

Există vreo modalitate de a afla acest lucru? Sau trebuie să verific manual fiecare licență a fiecărei aplicații instalate?

EDIT:

Următorul fragment pe care l-am folosit pentru a lista numele diferitelor fișiere de licență instalate.

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

Comentarii

  • Unele pachete au părți cu licențe diferite, în special fișierele GCC compilatorul este în mare parte GPLv3+, dar conține importante (dar mic) cod sub o altă licență (citiți excepția bibliotecii de execuție GCC licență) –  > Por Basile Starynkevitch.
  • BTW, de ce întrebi? Motivarea întrebării dvs. ar ajuta la răspunsul la ea. Poate că ar putea merge la OpenSource –  > Por Basile Starynkevitch.
  • La această întrebare se poate răspunde perfect, și chiar scriptic – Ubuntu păstrează licențele într-un loc bine definit. –  > Por Gilles ‘SO- nu mai fi rău’.
  • chat.stackexchange.com/transcript/message/27688390#27688390 –  > Por Pandya.
  • Subscriu la solicitarea lui @BasileStarynkevitch privind motivația întrebării. –  > Por Faheem Mitha.
4 răspunsuri
Stephen Kitt

Licențele pachetelor sunt descrise în /usr/share/doc/${package}/copyright. Acest fișier este necesar pentru a specifica licența principală a pachetului; multe pachete folosesc o licență citire automată copyright care enumeră licențele fiecărui fișier din pachetul sursă.

Pentru fișierele care pot fi citite automat, puteți utiliza opțiunea License: linie care introduce licențele:

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

Dacă sunteți în căutarea unei licențe documentate în /usr/share/common-licenses, , puteți căuta mențiuni ale acestora în fișierul copyright fișiere; de ex. pentru a număra numărul de pachete licențiate sub GPL sau LGPL:

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

Pentru a număra doar numărul de pachete sursă, numărați numărul de fișiere unice (pachetele binare livrate de la un singur pachet sursă au exact aceleași copyright fișier, sau au o legătură către același fișier):

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

Debsources oferă diverse modalități de căutare prin toate pachetele de copyright fișiere; iată un exemplu pentru a prelua licența unui singur fișier (dacă pachetul său folosește un format care poate fi citit automat). (Licența acestui one-liner nu este documentată, așa că fac doar o legătură către el, nu îl copiez aici).

Rețineți că, din moment ce copyright documentează licențele pachetelor sursă, este foarte posibil ca acestea să documenteze fișiere care nu sunt livrate în pachete binare și care nu afectează licența pachetului binar; acesta poate fi cazul, de exemplu, al fișierelor cu licență GPL care sunt utilizate doar în timpul compilării unui pachet fără licență GPL.

Pandya

Cele mai multe informații despre licențierea software-ului sunt disponibile la adresa /usr/share/doc/pkg-name/copyright

În linii mari, se poate estima numărul de programe care utilizează GPL prin intermediul:

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

    Dar grep va include, de asemenea, fișiere care sunt link-uri în loc de fișiere obișnuite. Așadar, vă recomandăm să folosițiinf find după cum urmează:

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

    Acesta va include, de asemenea, fișiere precum /usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright, , Dacă nu le doriți în numărătoare, puteți specifica maxdepth cu find.

Exemplu (pe sistemul meu):

$ 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

Rețineți că un software poate include mai mult de o licență pe fișiere în copyright.

SHW

Următorul cod mă va ajuta să enumăr licențele instalate din diverse aplicații pe Ubuntu 15.04.

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

Comentarii

  • Acest lucru va funcționa numai pentru licențe care pot fi citite de mașină copyright fișiere; copyright fișierele pot fi în continuare de formă liberă, deci nu există nicio garanție că vor avea o linie „License:”. –  > Por Stephen Kitt.
fduff

Am la îndemână doar sisteme CentOS, puteți ajunge să afișați numele pachetului și informații despre licență cu următoarele:

$ rpm -qa --qf "%{name}: %{license}
"
...
ncurses: MIT
cairo: LGPLv2 or MPLv1.1
dbus-python: MIT
media-player-info: BSD
dbus-x11: GPLv2+ or AFL
NetworkManager: GPLv2+
...

Ar trebui să puteți face ceva similar cu dpkg-query --license pe sistemele Ubuntu.

Ca aici, unde folosește $ dpkg-query -f='${PackageSpec;-30}t${Homepage}
' -W "*"
pentru a afișa doar un subset de informații pentru fiecare pachet. Verificați dpkg-query opțiunile pentru a vedea dacă puteți obține formularul de licență acolo.

O altă postare interesantă pe această temă, vorbește exact despre această problematică și despre asta:

În momentul de față, acest lucru este slab susținut, deși există un efort în curs de desfășurare pentru a oferi informații care pot fi citite automat în /usr/share/doc/*/copyright fișiere.

Comentarii

  • Nu există o astfel de opțiune ca dpkg-query --license. Dpkg nu ține evidența acestor informații. –  > Por Gilles ‘SO- nu mai fi rău’.