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

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

Используя 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/

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

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

1
задан 30 March 2014 в 06:54

2 ответа

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

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

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

Совершенно другим способом является структура файла в /usr/share/common-licenses/ (от thx до Машиночитаемый Debian / авторское право ). В нем перечислены основные лицензии, используемые в дистрибутивах на основе 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

Update Я только что опубликовал простую команду которое выдает информацию о лицензии из файлов авторских прав с большим количеством эвристик. https://github.com/daald/dpkg-licenses. Не стесняйтесь попробовать. Любые предложения приветствуются.

9
ответ дан 25 May 2018 в 02:05

Я просто натыкаюсь на dpkg-license (https://github.com/daald/dpkg-licenses).

Просто клонировать репо

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

Затем

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

./ dpkg-license> license.txt

3
ответ дан 25 May 2018 в 02:05

Другие вопросы по тегам:

Похожие вопросы: