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

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

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

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

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

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

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

  • Нужна помощь в выборе сетевой опции на рабочей станции VMware
  • Как Ubuntu блокирует мой Live USB?
  • Как предотвратить /var/log/mail.log от раздувания?
  • Обновление единого пакета от Ubuntu Utopic Unicorn при запуске Trusty Tahr
  • Окружающая среда Ubuntu и Windows
  • Ошибка при запуске контейнера LXC
  • Ubuntu - PulseAudio - приемник всегда проигрывает синхронизацию
  • Можно ли автоматически синхронизировать обновления закладки Firefox с файлом HTML?
  • 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 .

    Interesting Posts

    Как заменить все точки с запятой после первого?

    Как скопировать текст виртуального терминала из графического режима?

    Добавить данные в файл, но не из содержимого? (стеганография)

    Замена процесса от curl до bash как root

    Внезапная проблема с приложением стойки / пассажирского рубина: «Соединение закрыто»

    Возможно ли, чтобы nohup записывал выходные данные как в файл nohup.out AND, так и на экран / терминал?

    Может ли один пользователь иметь несколько файлов crontab?

    Требуется один лайнер: остановите httpd, если он уже запущен, и запустите httpd, если он не запущен

    Я не могу успешно сгенерировать SSH-туннель внутри контейнера докеров

    mv на шаблоне glob не работает без sudo

    Использование strace для файла C

    Вывод звука с разных мониторов на различные аудиоустройства

    Передача файлов между SSD и RAID-массивом uber-slow

    Как создать резервную копию из символических ссылок?

    Попытка перезапустить apache с помощью Vagrant – «Ошибка конфигурации apache2»

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