Algunos paquetes tienen un Provides:encabezado. Por ejemplo, el paquete postfixen Debian Wheezy tiene Provides: mail-transport-agent.
El paquete mail-transport-agentque no existe físicamente se considera un paquete "virtual".
¿Cómo puedo saber, en un sistema basado en Debian, si un paquete virtual dado está "instalado" (o "proporcionado")? ¿Puedo enumerar cada paquete virtual "provisto"?
Sugerencia : para enumerar cada paquete virtual existente, instalado o no, haga lo siguiente:aptitude search "~v"

Respuestas:
Para enumerar los paquetes que proporcionan
mail-transport-agent:Haga que
aptitude search '~Pmail-transport-agent ~i'solo enumere los paquetes instalados (si los hay).Para enumerar todos los paquetes virtuales proporcionados por los paquetes instalados actualmente:
Consulte el manual de aptitud para obtener una explicación de los patrones de búsqueda.
fuente
aptitude. Sin embargo, me gusta la explicación de @ umläute.aptitude search '~Pmysql-server ~i'que damariadb-server-10.0ymariadb-server-core-10.0, pero cuando lo hagoaptitude search '~Rprovides:~i ~v', no lo veomysql-serveren la lista ... Sin embargo, yo veovirtual-mysql-client,virtual-mysql-client-core,virtual-mysql-serveryvirtual-mysql-client-coreen la lista.El problema aquí es que existe una sutil diferencia entre los paquetes virtuales y los paquetes proporcionados por otros paquetes.
la diferencia es que un paquete también puede proporcionar un paquete real , no solo un paquete virtual .
de todos modos, lo siguiente buscará todos los paquetes que proporcionan un paquete e imprimirá tanto el nombre del paquete como los paquetes que proporciona:
para saber si hay algún paquete instalado en su sistema que proporcione uno determinado (por ejemplo, mail-transport-agent), use
fuente
grep-availableygrep-statusestán disponibles una vez que instaló eldctrl-toolspaquete.Puede detectar la presencia de un paquete virtual dado usando
apt-cache showpkg <virtual>para mostrar una lista de paquetes candidatos y luegodpkg -l <canddate> <candidate> ...para mostrar el estado de instalación de los candidatos.Por ejemplo:
Aquí hay una impresión completa:
Creo
dpkgyapt-cacheson herramientas de nivel inferior queaptitude,grep-availableygrep-status. El uso de herramientas de nivel inferior puede o no ser un beneficio, dependiendo de sus requisitos particulares.fuente
Puede obtener todos los paquetes virtuales de la LISTA AUTORITATIVA DE NOMBRES DE PAQUETES VIRTUALES . En cuanto a determinar si un paquete virtual está instalado, lo uso
dpkg -ly el hecho de que tiene un código de salida de 0 si el paquete está instalado y un código de salida de 1 si no está instalado.fuente
dpkg -l mail-transport-agentpuede devolver 0 incluso si no hay un paquete que lo proporcione actualmente instalado. Creo que se basa en la presencia,/var/dpkg/lib/availablepero no estoy seguro. Verifiqué quedpkg -l foodevuelve 1 para un paquete que nunca he instalado pero 0 para un paquete que acabo de purgar.