Как вы находите лицензии на все, что установлено в вашей системе?

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/

Есть ли сторонний репозиторий, который соотносит лицензию с каждым пакетом?

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

mpontillo
источник
Это кажется нетривиальным на данный момент. Возможный дубликат 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
mpontillo
источник
3
Это очень много. Просто grep '^' /usr/share/doc/*/copyrightвы получите ту же информацию, или tail -n 10000 /usr/share/doc/*/copyrightесли вы не хотите, чтобы префикс имени файла в каждой строке.
tripleee
12

В 2012 году Debian выпустил документ « Машиночитаемый debian / copyright», в котором лицензии будут читаться в будущем. В настоящее время не все пакеты используют этот формат. Команда

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

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

Совершенно другим способом является структура файла в /usr/share/common-licenses/(спасибо /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-licenses ( https://github.com/daald/dpkg-licenses ).

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

git clone https://github.com/daald/dpkg-licenses.git

потом

./dpkg-licenses> licenses.txt

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

Ричард
источник
@Daniel Alder уже ссылался на ту же ссылку в другом ответе askubuntu.com/a/620069/24203, и он, кажется, является автором инструмента :)
IsaacS