Я хочу написать сценарий, который выводит лицензию для каждого программного пакета, установленного в моей системе.
Используя 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/
Есть ли сторонний репозиторий, который сопоставляет лицензию с каждым пакетом?
Мне кажется больно загружать каждый исходный пакет и проверять его для получения информации о лицензировании, но, возможно, это лучший способ.
В 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. Не стесняйтесь попробовать. Любые предложения приветствуются.
Я просто натыкаюсь на 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