Как получить весь список установленных пакетов с там license, source url
? Например, следующее показывает только имя пакета.
$ dpkg --get-selections
acpi-support install
acpid install
adduser install
adium-theme-ubuntu install
aisleriot install
alacarte install
Например, в Fedora / CentOS (RED HAT LINUX BRANCH) вы можете видеть, что:
$ yum info busybox
Loaded plugins: auto-update-debuginfo, langpacks, presto, refresh-packagekit
Available Packages
Name : busybox
Arch : i686
Epoch : 1
Version : 1.18.2
Release : 5.fc15
Size : 615 k
Repo : updates
Summary : Statically linked binary providing simplified versions of system commands
URL : http://www.busybox.net
License : GPLv2
Description : Busybox is a single binary which includes versions of a large number
: of system commands, including a shell. This package can be very
: useful for recovering from certain types of system failures,
: particularly those involving broken shared libraries.
Последующие действия:
/var/lib/apt/lists$ ls
extras.ubuntu.com_ubuntu_dists_natty_main_binary-amd64_Packages
extras.ubuntu.com_ubuntu_dists_natty_main_source_Sources
extras.ubuntu.com_ubuntu_dists_natty_Release
extras.ubuntu.com_ubuntu_dists_natty_Release.gpg
lock
partial
security.ubuntu.com_ubuntu_dists_natty-security_main_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_main_source_Sources
security.ubuntu.com_ubuntu_dists_natty-security_multiverse_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_multiverse_source_Sources
security.ubuntu.com_ubuntu_dists_natty-security_Release
security.ubuntu.com_ubuntu_dists_natty-security_Release.gpg
security.ubuntu.com_ubuntu_dists_natty-security_restricted_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_restricted_source_Sources
security.ubuntu.com_ubuntu_dists_natty-security_universe_binary-amd64_Packages
security.ubuntu.com_ubuntu_dists_natty-security_universe_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_main_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_main_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_multiverse_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_multiverse_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_Release
us.archive.ubuntu.com_ubuntu_dists_natty_Release.gpg
us.archive.ubuntu.com_ubuntu_dists_natty_restricted_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_restricted_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty_universe_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty_universe_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_main_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_main_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_multiverse_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_multiverse_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_Release
us.archive.ubuntu.com_ubuntu_dists_natty-updates_Release.gpg
us.archive.ubuntu.com_ubuntu_dists_natty-updates_restricted_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_restricted_source_Sources
us.archive.ubuntu.com_ubuntu_dists_natty-updates_universe_binary-amd64_Packages
us.archive.ubuntu.com_ubuntu_dists_natty-updates_universe_source_Sources
Построение ответа @ crysman: Это работало для многих пакетов в ubuntu 14.04, и часть ${packages:amd64}
заключалась в том, чтобы перейти к правильной папке на основе моего процессора.
for package in `dpkg -l | grep ^ii | awk '{print $2}'`; do echo -e $package"\t"`grep License /usr/share/doc/${package%:amd64}/copyright`; done > ~/dpkg.txt
Вы можете использовать что-то вроде:
for package in `dpkg -l | grep ^ii | awk '{print $2}'`; do apt-cache policy $package; done | grep -iv "version table" | grep -i -e :$ -e multiverse -e restricted
Лицензию и исходный URL-адрес (я думаю, вы имеете в виду здесь исходный URL-адрес архива) обычно можно найти в файле с именем copyright. Этот файл должен быть в каждой упаковке, но он только недавно был «стандартизирован» для более легкого машинного / компьютерного чтения (см. DEP5 ).
Не все пакеты имеют правильно заполненные лицензии. Кроме того, не все пакеты имеют машиночитаемые файлы авторских прав. Иногда для одного отдельного файла может потребоваться отдельная лицензия, и пакет debian может быть выбран для удаления, если лицензия не допускает повторного распространения (или это не бесплатная лицензия с открытым исходным кодом).
Для загрузки файла debian / copyright каждого пакета вы можете использовать менеджер пакетов cupt , например:
cupt copyright busybox python > all-copyrights.txt
или получить один файл на пакет: [ 114]
for i in busybox python; do cupt copyright "$i" >"$i"_copyright.txt; done
В отличие от Fedora, Debian / Ubuntu обычно не дает единой лицензии для пакета, а вместо этого перечисляет все лицензии в источнике; гораздо точнее в этом смысле, но сложнее получить обзор. Кроме того, неравномерный формат старых файлов debian / copyright также не помогает:)
Самое близкое, что я могу придумать, сравнимое с yum info
, было бы apt-cache show
. Я не знаю, покажет ли когда-нибудь лицензию, но она дает кучу подробностей о пакете. Вы можете указать несколько имен пакетов, чтобы получить информацию о нескольких пакетах одновременно.
Например:
matt@eden:~$ apt-cache show python
Package: python
Priority: important
Section: python
Installed-Size: 768
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Matthias Klose <doko@debian.org>
Architecture: all
Source: python-defaults
Version: 2.7.2-7ubuntu2
Replaces: python-dev (<< 2.6.5-2)
Provides: python-ctypes, python-email, python-importlib, python-profiler, python-wsgiref
Depends: python2.7 (>= 2.7.2-3~), python-minimal (= 2.7.2-7ubuntu2)
Suggests: python-doc (= 2.7.2-7ubuntu2), python-tk (= 2.7.2-7ubuntu2)
Conflicts: python-central (<< 0.5.5)
Breaks: python-bz2 (<< 1.1-8), python-csv (<< 1.0-4), python-email (<< 2.5.5-3), update-manager (<= 0.200.5-1)
Filename: pool/main/p/python-defaults/python_2.7.2-7ubuntu2_all.deb
Size: 165792
MD5sum: a4b881e98e39f213bc8bbcfac566dd21
SHA1: 8a85fd4e62d1bad26a03ceef4313a12521e8a1dc
SHA256: ba95771b54aa4a1211486651fea1ecbac9e2dbbb4f66435e8a4dd0cb3e86bf4b
Description-en: interactive high-level object-oriented language (default version)
Python, the high-level, interactive object oriented language,
includes an extensive class library with lots of goodies for
network programming, system administration, sounds and graphics.
.
This package is a dependency package, which depends on Debian's default
Python version (currently v2.7).
Homepage: http://www.python.org/
Description-md5: d1ea97f755d8153fe116080f2352859b
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m
Task: minimal
dpkg-query
- это утилита, которая позволяет запрашивать базу данных dpkg. Чтобы напечатать имя и домашнюю страницу всех установленных пакетов:
$ dpkg-query -f='${PackageSpec;-30}\t${Homepage}\n' -W "*"
a2ps
aalib1
abrowser
abrowser-branding
accountsservice http://cgit.freedesktop.org/accountsservice/
acl http://savannah.nongnu.org/projects/acl/
acpi-support
acpid http://www.tedfelix.com/linux/acpid-netlink.html
adbbs
adduser http://alioth.debian.org/projects/adduser/
...
Обратите внимание, что домашняя страница не является обязательной записью в файле управления пакетами Debian. Я бы сказал, что только около 40% пакетов, установленных в моей системе, имеют домашнюю страницу в списке.
Не существует простого способа (программно) определить лицензию пакета. В контрольном файле Debian нет поля для названия лицензии. Детали лицензии для пакета foo должны быть указаны в файле /usr/share/doc/<foo>/copyright
. Тем не менее, нет стандартного формата для этих файлов. Некоторые из них довольно просты и в основном говорят , что он выпущен под лицензией GPL v3, полный текст лицензии см. В / usr / share / common-licenses / GPL-3 . Другие имеют пользовательские лицензии, включенные в полном объеме. Сложные пакеты могут иметь разные лицензии для разных его частей (например, одну для программы и другую для графики). Часто также указывается лицензия на информацию об упаковке Debian.
Короче говоря: просто вручную получить лицензию на один пакет. Если вам нужно сделать это автоматически для всех установленных пакетов, это потребует больших усилий.
Homepage
не обязательное поле в информации о пакете так не, все пакеты имеют ее. Еще нет никакого широко принятого стандартного формата для авторского права (, DEP5 на этапе кандидата и не широко сопровождается все же). Вы могли попытаться писать синтаксический анализатор, чтобы просканировать файлы авторского права и выяснить то, что лицензирует пакет, выпущен под, но это не будет простой задачей.
– afxentios
18.05.2020, 07:08
yum info
команда, получить поле лицензии и сохранить его назад в файл. Очевидно, будет много промахов (т.е. пакеты с различными именами/версиями на их имена и тех, который Fedora doesn' t обеспечивают), но это могло обеспечить разумную начальную точку. Если Fedora имеет подходящий список пакета онлайн, который мог бы использоваться для получения деталей вместо этого.
– peterh
18.05.2020, 07:09
/var/lib/apt/lists
), Вы могли бы быть в состоянии достигнуть того же самого, не имея необходимость очищать веб-сайт ArchLinux...
– ded'
18.05.2020, 07:09
6tunnel
находится в сообществе repo, в то время как a2ps
находится в дополнительном repo, и linux-firmware
находится в ядре repo), и для различной архитектуры (a2ps
i686, в то время как linux-firmware
любой, т.е. архитектурно-независимый). Все еще будут промахи, например, ArchLinux doesn' t имеют linux-headers-generic
.
– 12 revs, 11 users 58%
18.05.2020, 07:09
/var/lib/apt/lists
. Та информация может быть запрошена. Другой информацией является конкретный пакет. После того, как установленный, существует общее (упомянутое выше) местоположение. для документации
– Doin
18.05.2020, 07:10