Как вывести список всех моих пакетов из командной строки, которые могут показать имя пакета, лицензию, исходный URL и т. Д.

Как получить весь список установленных пакетов с там 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
3
задан 30 March 2014 в 05:56

6 ответов

Лицензию и исходный URL-адрес (я думаю, вы имеете в виду здесь исходный URL-адрес архива) обычно можно найти в файле с именем copyright. Этот файл должен быть в каждой упаковке, но он только недавно был «стандартизирован» для более легкого машинного / компьютерного чтения (см. DEP5 ).

Не все пакеты имеют правильно заполненные лицензии. Кроме того, не все пакеты имеют машиночитаемые файлы авторских прав. Иногда для одного отдельного файла может потребоваться отдельная лицензия, и пакет debian может быть выбран для удаления, если лицензия не допускает повторного распространения (или это не бесплатная лицензия с открытым исходным кодом).

0
ответ дан 30 March 2014 в 05:56

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.

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

0
ответ дан 30 March 2014 в 05:56

Вы можете использовать что-то вроде:

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
0
ответ дан 30 March 2014 в 05:56

Самое близкое, что я могу придумать, сравнимое с 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
0
ответ дан 30 March 2014 в 05:56

Построение ответа @ 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
0
ответ дан 30 March 2014 в 05:56

Для загрузки файла 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 также не помогает:)

0
ответ дан 30 March 2014 в 05:56

Другие вопросы по тегам:

Похожие вопросы: