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

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

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

  • Как найти файлы в формате PDF, созданные LaTeX?
  • Как с помощью двухголовой системы, как я могу заставить размещение окна на определенный рабочий стол?
  • Ошибка при создании виртуальной среды с помощью venv
  • После приостановки (закрыта крышка) экран остается черным
  • Как запустить 2FA-используя OpenVPN с systemd?
  • разрешение scp отказано после «затвердения» с помощью бастилии
  • Есть ли способ узнать это? Или мне нужно вручную проверять каждую лицензию каждого установленного приложения?

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

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

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

  • Заменить папку specificc в tar.gz
  • Установите Backtrack 5 r2 в запущенную настройку LUKS, установленную с помощью ubuntu
  • Как добавить внешний записывающий CD / DVD-диск?
  • Как записывать в каталог как часть сценария оболочки и делать число слов в файлах?
  • Сервер Ubuntu 16.04 - Получите полный доступ к FTP / var / www /
  • Ошибка при запуске безгласного firefox через Selenium
  • 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 - лучшая ОС в мире.