web-dev-qa-db-fra.com

Comment déterminer si un package est un méta-package à partir de la ligne de commande?

Comment puis-je déterminer si un paquet est un méta-paquet à partir de la ligne de commande, éventuellement via apt-get, aptitude ou apt-cache?

J'ai essayé:

apt-cache show texlive-full
apt-cache showpkg texlive-full

mais la seule façon de dire que ce paquet est méta est de lire le champ "en-description".

Y a-t-il un moyen plus automatique de faire cela, cela me donnera une réponse oui/non, ou du moins un champ comme "en-description" dédié à cela?

Il n'y a pas de définition formelle d'un métapaquet. La définition informelle est qu'un méta-paquet est un méta-paquet destiné uniquement à être installé pour ses dépendances et ne contient aucun fichier utile en propre.

Vous pouvez définir un méta-paquet en tant que package ne contenant aucun fichier. Il n'y a aucun moyen de déterminer cela à partir de la base de données de paquets. Vous pouvez utiliser base de données de fichiers et vérifier que le package ne contient que des répertoires (de nombreux packages de ce type contiennent quelques répertoires). En fait, la plupart des métapaquets contiennent quelques fichiers dans /usr/share/doc/<package name>: un fichier copyright, un journal des modifications, parfois un peu plus. Voici une approximation qui définit un méta-paquet comme contenant uniquement des fichiers dans /usr/share/doc/<some directory> (pas dans des sous-répertoires de celui-ci) et les principaux répertoires:

if ! apt-file -F list $package | grep -qvE '^/(usr(/share(/doc(/[^/]*(/[^/]*)?)?)?)?)?$'; then
  echo "$package looks like a metapackage"
fi

Une autre approche consiste à rechercher un balise de package avec debtags . Plusieurs balises sont couramment utilisées dans les métapaquets.

debtags tag ls $package | grep -x -e 'role::metapackage' -e 'role::dummy' -e 'special::meta'

Une autre approche consiste à rechercher des paquets de petite taille. Chaque répertoire compte pour 4 ko. Planifiez en conséquence lorsque vous sélectionnez un seuil (là encore, il s'agit d'une approximation).

aptitude -F '%I %p' search "~n^$package\$"

Après réflexion, je me demande si vous voulez dire paquets virtuels plutôt que des métapaquets. Les packages virtuels ne sont en réalité pas des packages mais des noms de packages utilisés dans les champs Provides:. Vous pouvez les lister avec aptitude search '~v'. Si vous exécutez apt-cache show sur l'un d'entre eux, le message “Impossible de sélectionner les versions du package 'zcav' car il est purement virtuel”. L'exécution de aptitude show répertorie les packages qui le fournissent. Un moyen pratique d’afficher des packages virtuels consiste à utiliser apt-cache: ceci affiche une ligne pour un package non virtuel et éventuellement plusieurs lignes (une pour chaque fournisseur) pour un package virtuel - vous pouvez savoir si le package est virtuel même si il y a un seul fournisseur parce que le nom du fournisseur est différent.

apt-cache -n search "^$package\$"
7
Gilles

Vous pouvez essayer d'entrer

apt-cache search 'metapackage | meta-package'

qui vous donnera une longue liste, puis utilisez grep pour, par exemple, afficher tous les méta-paquets liés à la science avec

apt-cache search 'metapackage | meta-package' | grep -i science

Cela retournera une longue liste (je l'ai raccourci ici)

science-astronomy - Debian Science Astronomy packages
science-astronomy-dev - Debian Science Astronomy-dev packages
science-biology - Debian Science Biology packages
science-chemistry - Debian Science Chemistry packages
science-dataacquisition - Debian Science data acquisition packages
science-dataacquisition-dev - Debian Science data acquisition development packages
science-distributedcomputing - Debian Science Distributed Computing packages
science-electronics - Debian Science Electronics packages
science-electrophysiology - Debian Science packages for Electrophysiology
science-engineering - Debian Science Engineering packages
science-engineering-dev - Debian Science Engineering-dev packages
science-geography - Debian Science Geography packages
science-highenergy-physics - Debian Science High Energy Physics packages

Vous pouvez utiliser un nombre illimité d'alternatives pour la science, comme KDE pour rechercher tous les métapaquets KDE.

C’est probablement ce que vous pouvez faire de mieux avec apt-cache, mais il devrait rapidement localiser la plupart des métapaquets que vous souhaitez rechercher. Si elle ne trouve pas exactement tout ce que vous cherchiez, le plus simple est de regarder dans la section métapaquet de Synaptic.

2
user76204