Як ви знаходите ліцензії на все, що встановлено у вашій системі?


18

Я хочу написати сценарій, який видає ліцензію на кожен програмний пакет, встановлений у моїй системі.

Використовуючи, dpkg --get-selectionsя можу отримати список всього встановленого. Однак я не бачу способу отримати інформацію про ліцензії для кожного пакету. Наприклад, я можу використовувати aptitude showдля отримання властивостей кожного пакету, але це не включає ліцензію:

$ aptitude show apache2
Package: apache2
State: installed
Automatically installed: no
Version: 2.2.14-5ubuntu8.6
Priority: optional
Section: httpd
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
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/

Чи є стороннє сховище, яке співвідносить ліцензію з кожним пакетом?

Завантажувати кожен вихідний пакет і перевіряти його на предмет ліцензування звучить болісно, ​​але, можливо, це найкращий спосіб.


Це здається нетривіальним у цій точці. Можливий дублікат askubuntu.com/questions/88403/… Дивіться також: serverfault.com/questions/334189/…
Кевін Боуен

Дивіться також тепер stackoverflow.com/questions/35044841 / ...
tripleee

Відповіді:


14

Ось що я закінчив робити. (призводить ~/licenses.txtдо всіх ліцензій, які існують у /usr/share/doc)

$ packages=`dpkg --get-selections | awk '{ print $1 }'`
$ for package in $packages; do echo "$package: "; cat /usr/share/doc/$package/copyright; echo ""; echo ""; done > ~/licenses.txt

3
Це дуже кругленько. Просто grep '^' /usr/share/doc/*/copyrightви отримаєте майже ту ж інформацію, або tail -n 10000 /usr/share/doc/*/copyrightякщо ви не хочете, щоб префікс імені файлу був у кожному рядку.
трійка

12

У 2012 році Debian випустив документ Debian / copyright, який читається на машині, що дозволить зробити ліцензії читатими в майбутньому. В даний час не всі пакети використовують цей формат. Команда

grep -h '^License:' /usr/share/doc/*/copyright | sort -i | uniq -ic | sort -n

ще повертає багато сміття. Для кращого результату вам, мабуть, потрібен інструмент, який аналізує кожен файл залежно від Format:значення поля.

Зовсім інший спосіб - це структура файлу в /usr/share/common-licenses/(thx до /programming/1884753/license-info-of-a-deb-package#1884785 ). У ньому перераховані основні ліцензії, що використовуються в дистрибутивах на основі debian (і містяться їх тексти ліцензій). Цей список надається пакетом base-filesі не пов'язаний зі списком встановлених пакетів, але, ймовірно, достатньо інформації для середнього начальника / замовника.

ls /usr/share/common-licenses/
Apache-2.0  BSD   GFDL-1.2  GPL    GPL-2  LGPL    LGPL-2.1
Artistic    GFDL  GFDL-1.3  GPL-1  GPL-3  LGPL-2  LGPL-3

Оновлення Щойно я опублікував просте рішення командного рядка, яке витягує інформацію про ліцензії з файлів авторських прав з великою кількістю евристики. https://github.com/daald/dpkg-licenses . Сміливо спробуйте. Будь-які пропозиції вітаються.


4

Я просто натрапляю на dpkg-ліцензії ( https://github.com/daald/dpkg-licenses ).

Просто клонуйте репо

клон git https://github.com/daald/dpkg-licenses.git

Потім

./dpkg-licenses> ліцензії.txt

І у вас встановлено найкраще на сьогодні програмне забезпечення, табличний список версій та ліцензій, про які ви можете мріяти ...


@Daniel Alder вже посилався на те саме посилання в іншій відповіді askubuntu.com/a/620069/24203, і він, схоже, є автором цього інструменту :)
IsaacS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.