Как узнать лицензию для каждого из моих установленных приложений / пакетов?

Я использую Ubuntu-15.10. Я установил много приложений, кроме ванильных установок.

Теперь я хотел бы узнать, сколько установленных пакетов лицензировано по лицензии GPL или сторонних производителей (например, Fluendo).

Есть ли способ узнать это? Или мне нужно вручную проверять каждую лицензию каждого установленного приложения?

РЕДАКТИРОВАТЬ:

Следующий фрагмент я использовал для перечисления имени различных установленных лицензионных файлов.

find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u 

  • Как установить мой зашифрованный частный домашний каталог, если я забуду пароль?
  • Проверить скрипт без перезагрузки
  • Настройте галочку для автоматического переключения между LAN и WLAN
  • Ubuntu - Xrandr не меняет свое разрешение
  • Обновления / приложения / пакеты для Ubuntu 10.10 без подключения к Интернету
  • Понимание прав на домашнюю папку
  • Перенос данных 70 ТБ с одного удаленного сервера на другой
  • Ubuntu: не удается найти ndbm.h
  • 4 Solutions collect form web for “Как узнать лицензию для каждого из моих установленных приложений / пакетов?”

    Лицензии на пакеты описаны в /usr/share/doc/${package}/copyright . Этот файл должен указать основную лицензию пакета; многие пакеты используют машиночитаемый файл copyright котором перечислены лицензии каждого отдельного файла в исходном пакете.

    Для машиночитаемых файлов вы можете использовать строку License: line, которая вводит лицензии:

     awk '/^License:/ { print $2 }' /usr/share/doc/*/copyright | sort -u 

    Если вы ищете лицензию, зарегистрированную в /usr/share/common-licenses , вы можете посмотреть упоминания о файлах copyright ; например, для подсчета количества пакетов, лицензированных в рамках GPL или LGPL:

     grep -l GPL /usr/share/doc/*/copyright | wc -l 

    Чтобы подсчитать количество исходных пакетов, подсчитайте количество уникальных файлов (бинарные пакеты, отправленные из одного исходного пакета, имеют один и тот же файл copyright или ссылку на один и тот же файл):

     md5sum $(grep -l GPL /usr/share/doc/*/copyright) | sort -k1,1 -u | wc -l 

    Debsources предоставляет различные способы поиска через все файлы copyright Debian ; вот один лайнер для получения лицензии на один файл (если его пакет использует машиночитаемый формат). (Лицензия на один лайнер не документирована, поэтому я просто привязываюсь к нему, а не копирую его здесь.)

    Обратите внимание: поскольку файлы copyright документируют лицензии исходных пакетов, они могут хорошо документировать файлы, которые не отправляются в двоичные пакеты и не влияют на лицензию двоичного пакета; это может иметь место, например, с лицензированными GPL-файлами, которые используются только во время сборки для пакета, не лицензированного GPL.

    Следующий код поможет мне перечислить установленные лицензии из различных приложений на Ubuntu 15.04.

     find /usr/share/doc -type f -name copyright -exec grep "License\:" {} + | cut -f3 -d: | sort -u 

    Большая часть информации о лицензировании программного обеспечения доступна в /usr/share/doc/pkg-name/copyright

    Примерно вы можете оценить количество программ, используя GPL , посредством:

    • grep -l GPL /usr/share/doc/*/copyright

      Но grep также будет включать файлы, которые являются ссылкой вместо обычного файла. Поэтому я рекомендую usinf find следующее:

    • sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l

      Он также будет содержать файлы, такие как /usr/share/doc/ca-certificates/examples/ca-certificates-local/debian/copyright Если вы не хотите их подсчитывать, вы можете указать maxdepth с find.

    Пример (в моей системе):

     $ grep -l GPL /usr/share/doc/*/copyright | wc -l 1949 

     $ sudo find /usr/share/doc -name copyright -type f -exec grep -l "GPL" '{}' \; | wc -l 1889 

    Обратите внимание, что программное обеспечение может включать более одной лицензии на файлы в copyright .

    У меня есть только системы CentOS, вы можете отобразить имя пакета и информацию о лицензии со следующим:

     $ rpm -qa --qf "%{name}: %{license}\n" ... ncurses: MIT cairo: LGPLv2 or MPLv1.1 dbus-python: MIT media-player-info: BSD dbus-x11: GPLv2+ or AFL NetworkManager: GPLv2+ ... 

    Вы должны иметь возможность сделать что-то подобное с dpkg-query --license в системах Ubuntu.

    Как здесь , где он использует $ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*" чтобы отображать только подмножество информации для каждого пакета. Проверьте параметры dpkg-query , чтобы узнать, можете ли вы получить там лицензионную форму.

    Другой интересный пост на этом, говорит именно об этой проблематике и что:

    На данный момент это плохо поддерживается, хотя прилагаются усилия для обеспечения машиночитаемой информации в файлах /usr/share/doc/*/copyright .

    Linux и Unix - лучшая ОС в мире.