¿Cómo puedo determinar si un paquete es un metapaquete desde la línea de comandos, posiblemente a través de apt-get, aptitude o apt-cache?
Yo he tratado:
apt-cache show texlive-full
apt-cache showpkg texlive-full
pero la única forma en que puedo decir que este paquete es meta es leyendo el campo "en-description".
¿Hay una manera más automática de hacer esto, que me dará una respuesta sí / no, o al menos tendrá un campo como "en-description" dedicado a esto?
package-management
metapackages
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
fuente
fuente
Respuestas:
No existe una definición formal de un metapaquete. La definición informal es que un metapaquete es uno que solo está destinado a ser instalado para sus dependencias y no contiene ningún archivo útil propio.
Puede definir un metapaquete como un paquete que no contiene ningún archivo. No hay forma de determinar esto a partir de la base de datos del paquete. Puede usar la base de datos de archivos y verificar que el paquete contenga solo directorios (muchos de estos paquetes contienen algunos directorios). De hecho, la mayoría de los metapaquetes contienen algunos archivos en
/usr/share/doc/<package name>
: uncopyright
archivo, un registro de cambios, a veces algunos más. Aquí hay una aproximación que define un metapaquete que contiene solo archivos/usr/share/doc/<some directory>
(no en subdirectorios de eso) y los directorios principales:Otro enfoque es buscar una etiqueta de paquete con
debtags
. Hay varias etiquetas que se usan comúnmente en metapaquetes.Otro enfoque es buscar paquetes con un tamaño pequeño. Cada directorio cuenta como 4 kB, así que planifique en consecuencia cuando elija un umbral (nuevamente, esto es una aproximación).
Después de reflexionar, me pregunto si te refieres a paquetes virtuales en lugar de metapaquetes. Los paquetes virtuales en realidad no son paquetes sino nombres de paquetes utilizados en los
Provides:
campos. Puedes enumerarlos conaptitude search '~v'
. La ejecuciónapt-cache show
en uno muestra "No se pueden seleccionar versiones del paquete 'zcav' ya que es puramente virtual". Runningaptitude show
muestra los paquetes que lo proporcionan. Una forma conveniente de mostrar paquetes virtuales es conapt-cache
: imprime una línea para un paquete no virtual y potencialmente varias líneas (una para cada proveedor) para un paquete virtual: puede saber si el paquete es virtual incluso si hay un único proveedor porque el nombre del proveedor es diferente.fuente
apt-get autoremove
,aptitude (un)markauto
elM
comando en la interfaz interactiva de aptitude.apt-get install texlive-full
,apt-get purge texlive-full; apt-get autoremove
no eliminé todas las dependencias instaladas. Leí en alguna parte que esto se debe a que texlive-full era un metapaquete, y que este era el comportamiento normal de un metapaquete, pero tal vez esto estaba mal. aptitude, por otro lado, parecía eliminar muy bien las dependencias instaladas automáticamente.Podrías intentar entrar
que le dará una lista larga y luego usará
grep
para mostrar todos los metapaquetes relacionados con la ciencia conEsto devolverá una larga lista (la acorté aquí)
Puede usar cualquier cantidad de alternativas para la ciencia, como
KDE
encontrar todos losKDE
metapaquetes.Probablemente sea lo mejor que puede hacer
apt-cache
, pero debe localizar rápidamente la mayoría de los metapaquetes que desea encontrar. Si no encuentra exactamente todo lo que estaba buscando, lo más simple es buscar en la sección de metapaquete enSynaptic
.fuente