Comment puis-je déterminer si un package est un méta-package à 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 dont je peux dire que ce paquet est méta est en lisant le champ "en-description".
Existe-t-il une manière plus automatique de procéder, qui me donnera une réponse oui / non, ou au moins un champ tel que "en-description" est-il dédié à cela?
package-management
metapackages
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
la source
la source
Réponses:
Il n'y a pas de définition formelle d'un métapaquet. La définition informelle est qu'un métapaquet est celui qui est uniquement destiné à être installé pour ses dépendances et ne contient aucun fichier utile qui lui soit propre.
Vous pouvez définir un métapaquet comme un package qui ne contient aucun fichier. Il n'y a aucun moyen de le déterminer à partir de la base de données de packages. Vous pouvez utiliser la 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
/usr/share/doc/<package name>
: uncopyright
fichier, un journal des modifications, parfois quelques autres. Voici une approximation qui définit un métapaquet comme ne contenant que des fichiers/usr/share/doc/<some directory>
(pas dans ses sous-répertoires) et les répertoires principaux:Une autre approche consiste à rechercher une balise de package avec
debtags
. Plusieurs balises sont couramment utilisées sur les métapaquets.Une autre approche consiste à rechercher des packages de petite taille. Chaque répertoire compte pour 4 Ko, alors planifiez en conséquence lorsque vous choisissez un seuil (encore une fois, il s'agit d'une approximation).
Après réflexion, je me demande si vous parlez de packages virtuels plutôt que de métapaquets. Les packages virtuels ne sont en fait pas des packages mais des noms de packages utilisés dans les
Provides:
champs. Vous pouvez les répertorier avecaptitude search '~v'
. L'exécutionapt-cache show
sur l'un affiche "Impossible de sélectionner les versions du package 'zcav' car il est purement virtuel". Runningaptitude show
répertorie les packages qui le fournissent. Un moyen pratique d'afficher les packages virtuels consiste àapt-cache
: cela imprime une ligne pour un package non virtuel et potentiellement plusieurs lignes (une pour chaque fournisseur) pour un package virtuel - vous pouvez dire si le package est virtuel même s'il existe un seul fournisseur car le nom du fournisseur est différent.la source
apt-get autoremove
,aptitude (un)markauto
laM
commande dans l'interface interactive aptitude.apt-get install texlive-full
,apt-get purge texlive-full; apt-get autoremove
ne pas supprimer toutes les dépendances installées. J'ai lu quelque part que c'est parce que texlive-full était un métapaquet, et que c'était un comportement normal d'un métapaquet, mais c'était peut-être faux. aptitude, d'autre part, semblait bien supprimer les dépendances installées automatiquement.Vous pouvez essayer d'entrer
qui vous donnera une longue liste, puis utilisera
grep
, par exemple, pour montrer tous les métapaquets liés à la science avecCela retournera une longue liste (je l'ai raccourcie ici)
Vous pouvez utiliser un certain nombre d'alternatives pour la science, comme
KDE
pour trouver tous lesKDE
métapaquets.Il s'agit probablement de ce que vous pouvez faire de mieux
apt-cache
, mais cela devrait rapidement localiser la plupart des métapaquets que vous souhaitez trouver. S'il ne trouve pas exactement tout ce que vous cherchiez, le plus simple est de regarder dans la section métapaquetage deSynaptic
.la source