Chcę napisać skrypt, który wyświetli licencję dla każdego pakietu oprogramowania zainstalowanego w moim systemie.
Korzystanie dpkg --get-selections
Jestem w stanie uzyskać listę wszystkich zainstalowanych. Nie widzę jednak sposobu na uzyskanie informacji o licencji dla każdego pakietu. Na przykład mogę użyć, aptitude show
aby uzyskać właściwości każdego pakietu, ale nie obejmuje to licencji:
$ 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/
Czy istnieje repozytorium innej firmy, które koreluje licencję z każdym pakietem?
Pobieranie każdego pakietu źródłowego i sprawdzanie go pod kątem informacji licencyjnych wydaje się bolesne, ale może to najlepszy sposób.
Odpowiedzi:
Oto co skończyłem. (skutkuje
~/licenses.txt
wszystkimi istniejącymi licencjami/usr/share/doc
)źródło
grep '^' /usr/share/doc/*/copyright
otrzymasz te same informacje lubtail -n 10000 /usr/share/doc/*/copyright
jeśli nie chcesz prefiksu nazwy pliku w każdej linii.W 2012 roku Debian wydał dokument Debian / copyright do odczytu maszynowego, dzięki któremu licencje będą czytelne w przyszłości. Obecnie nie wszystkie pakiety używają tego formatu. Komenda
wciąż zwraca dużo śmieci. Aby uzyskać lepszy wynik, prawdopodobnie potrzebujesz narzędzia, które analizuje każdy plik w zależności od
Format:
wartości pola.Zupełnie innym sposobem jest struktura plików w
/usr/share/common-licenses/
(dzięki /programming/1884753/license-info-of-a-deb-package#1884785 ). Zawiera listę głównych licencji używanych w dystrybucjach opartych na Debianie (i zawiera ich teksty licencji). Ta lista jest dostarczana przez pakietbase-files
i nie jest powiązana z listą zainstalowanych pakietów, ale prawdopodobnie jest to wystarczająca informacja dla przeciętnego szefa / klienta.Aktualizacja Właśnie opublikowałem proste rozwiązanie wiersza polecenia, które wyodrębnia informacje o licencji z plików praw autorskich z dużą ilością heurystyk. https://github.com/daald/dpkg-licenses . Spróbuj tego. Wszelkie sugestie są mile widziane.
źródło
Natknąłem się na dpkg-licencje ( https://github.com/daald/dpkg-licenses ).
Wystarczy sklonować repozytorium
Następnie
I masz zainstalowane najlepsze oprogramowanie, wersje i licencje, które możesz wymarzyć ...
źródło