Некоторые пакеты имеют Provides:
заголовок. Например, пакет postfix
на Debian Wheezy имеет Provides: mail-transport-agent
.
Пакет, mail-transport-agent
который не существует физически, считается «виртуальным» пакетом.
Как я могу узнать в системе на основе Debian, установлен ли данный виртуальный пакет (или «предоставлен»)? Могу ли я перечислить каждый «предоставленный» виртуальный пакет?
Подсказка : чтобы получить список всех существующих виртуальных пакетов, установленных или нет, выполните:aptitude search "~v"
Ответы:
Для просмотра списка пакетов
mail-transport-agent
:Сделать это,
aptitude search '~Pmail-transport-agent ~i'
чтобы только список установленных пакетов (если таковые имеются).Чтобы просмотреть все виртуальные пакеты, предоставляемые в настоящее время установленными пакетами:
Смотрите руководство aptitude для объяснения шаблонов поиска.
источник
aptitude
. Мне нравится объяснение @ umläute, хотя.aptitude search '~Pmysql-server ~i'
что даетmariadb-server-10.0
иmariadb-server-core-10.0
, но когда я делаюaptitude search '~Rprovides:~i ~v'
, я не вижуmysql-server
в списке ... Тем не менее, я вижуvirtual-mysql-client
,virtual-mysql-client-core
,virtual-mysql-server
иvirtual-mysql-client-core
в списке.проблема здесь в том, что есть небольшая разница между виртуальными пакетами и предоставляемыми пакетами другими пакетами .
разница в том, что пакет может обеспечить более реальный пакет, а не только виртуальный пакет.
в любом случае, следующий запрос будет искать все пакеты, которые предоставляют пакет, и печатать как имя пакета, так и пакеты, которые он предоставляет:
чтобы узнать, установлен ли какой-либо пакет в вашей системе, который предоставляет данный (например, mail-transport-agent), используйте
источник
grep-available
иgrep-status
доступны , как только вы установилиdctrl-tools
пакет.Вы можете обнаружить присутствие данного виртуального пакета, используя
apt-cache showpkg <virtual>
для отображения списка пакетов-кандидатов, а затемdpkg -l <canddate> <candidate> ...
для отображения состояния установки кандидатов.Например:
Вот полная распечатка:
Я считаю,
dpkg
иapt-cache
инструменты более низкого уровня, чемaptitude
,grep-available
иgrep-status
. Использование инструментов более низкого уровня может или не может быть преимуществом, в зависимости от ваших конкретных требований.источник
Вы можете получить все виртуальные пакеты из АВТОРИТИЧЕСКОГО СПИСКА ВИРТУАЛЬНЫХ ИМ ПАКЕТОВ . Что касается определения, установлен ли виртуальный пакет, я использую его
dpkg -l
и тот факт, что он имеет код выхода 0, если пакет установлен, и код выхода 1, если он не установлен.источник
dpkg -l mail-transport-agent
может вернуть 0, даже если пакет, предоставляющий его, в данный момент не установлен. Я думаю, что это основано на присутствии,/var/dpkg/lib/available
но я не уверен. Я проверил, чтоdpkg -l foo
возвращает 1 для пакета, который я никогда не устанавливал, но 0 для пакета, который я только что удалил.