MyTetra Share
Делитесь знаниями!
Как узнать список всех пакетов в репозитарии
Время создания: 10.06.2022 15:43
Текстовые метки: linux, deb, debian, репозитарий, пакет, список, apt
Раздел: Компьютер - Linux - Инсталляция программ - Пакетный менеджер APT: apt-get и прочее
Запись: xintrea/mytetra_syncro/master/base/1654865023jadlghyce0/text.html на raw.github.com

В DEB-based дистрибутивах имеется несколько способов получения полного списка пакетов, доступных в подключенном репозитарии.


Перед тем как получить список пакетов, надо обновить индекс пакетной базы через команду:



apt-get update



После чего можно генерировать список пакетов в репозитарии.



Вариант через dpkg


Получение списка пакетов выполняется следующей командой:



dpkg --list



Недостаток: эта команда покажет только известные dpkg пакеты. А dpkg знает либо о

проинсталлированных пакетах, либо знает о ранее инсталлированных, но удаленных в данный момент пакетах (так как такие пакеты "прошли" через dpkg и стали ей известны). Отобразить все пакеты из подключенных репозитариев, dpkg не в состоянии.


Например, вот какие пакеты, в именах которых присутствует строка "ieee", покажет dpkg:



# dpkg --list | grep ieee

ii ieee-data 20160613.1 all OUI and IAB listings

ii libieee1284-3:amd64 0.2.11-13 amd64 cross-platform library for parallel port access



На деле, с учетом доступных но не проинсталлированных пакетов, список пакетов должен быть гораздо больше (см. далее).



Вариант через apt-cache


Выяснить, чем кеш пакетов отличается от индекса пакетов, из страниц документации невозможно. В одном месте утверждается, что кеш пакетов - это каталог /var/cache/apt/archives, в котором скапливаются скачанные пакеты. В другом месте утверждается, что кеш - это некая структура, в которой собирается информация о пакетах в подключенных репозитариях, и хранится она в /var/lib/apt/lists. В третьем говорится что эта структура называется пакетным индексом или индексом пакетов. Масла в огонь подливает тот факт, что у команды apt-cache почему-то нет опций очистки кеша. Вместо нее рекомендуют использовать apt-get clean. Поэтому откуда команда управления кешем берет данные не совсем ясно. В любом случае, вывод, который она генерирует, может содержать больше пакетов, чем вывод команды dpkg. И это касается не только различного формата отображения, когда в разных строчках может показываться "обычный" пакет и пакет для конкретной архитектуры. Просто dpkg может вообще не видеть пакеты, которые видит apt-cache.


Для вывода списка всех пакетов используется команда:



apt-cache search '.*'



Недостаток: в списке видны только имя и описание, не видно версии пакета.


Список пакетов, которые содержат в именах 'ieee' на той же ОС будет таким:



# apt-cache search --names-only '.*ieee.*'

libieee1284-3 - cross-platform library for parallel port access

ieee-data - OUI and IAB listings

grub-ieee1275 - GRand Unified Bootloader, version 2 (Open Firmware version)

grub-ieee1275-bin - GRand Unified Bootloader, version 2 (Open Firmware binaries)

libieee1284-3-dev - cross-platform library for parallel port access [development files]

python-ieee1284 - Python bindings to libieee1284



Вариант через aptitude


Существование утилиты aptitude оправдано как минимум тем, что она может показать даже те пакеты, которые не показываются через dpkg и apt-cache.


Показать весь список пакетов можно командой:



aptitude search '.*'



Список пакетов в aptitude, которые содержат в именах 'ieee', на той же ОС будет таким:



# aptitude search 'ieee'

p grub-ieee1275 - GRand Unified Bootloader, version 2 (Open Firmware version)

p grub-ieee1275-bin - GRand Unified Bootloader, version 2 (Open Firmware binaries)

i A ieee-data - OUI and IAB listings

i A libieee1284-3 - cross-platform library for parallel port access

v libieee1284-3:i386 -

p libieee1284-3-dev - cross-platform library for parallel port access [development files]

v libieee1284-3-dev:i386 -

v libieee1284-3-dev:i386 -

v libieee1284-3:i386 -

p python-ieee1284 - Python bindings to libieee1284

v python2.7-ieee1284



Здесь видно, что имеется пакет python2.7-ieee1284, который по каким-то причинам не видят программы dpkg и apt-chache.


Управление пакетами в Linux - это особая магия, так как следует учитывать, что те инструменты, которые предназначены для управления пакетной базой дистрибутива, ведут себя далеко не всегда адекватно.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования