Algunos paquetes tienen un Provides:
encabezado. Por ejemplo, el paquete postfix
en Debian Wheezy tiene Provides: mail-transport-agent
.
El paquete mail-transport-agent
que 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.0
ymariadb-server-core-10.0
, pero cuando lo hagoaptitude search '~Rprovides:~i ~v'
, no lo veomysql-server
en la lista ... Sin embargo, yo veovirtual-mysql-client
,virtual-mysql-client-core
,virtual-mysql-server
yvirtual-mysql-client-core
en 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-available
ygrep-status
están disponibles una vez que instaló eldctrl-tools
paquete.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
dpkg
yapt-cache
son herramientas de nivel inferior queaptitude
,grep-available
ygrep-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 -l
y 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-agent
puede devolver 0 incluso si no hay un paquete que lo proporcione actualmente instalado. Creo que se basa en la presencia,/var/dpkg/lib/available
pero no estoy seguro. Verifiqué quedpkg -l foo
devuelve 1 para un paquete que nunca he instalado pero 0 para un paquete que acabo de purgar.