Ce court mini-tutoriel apparaît comme réponse à l'inquiétude de l'un de nos lecteurs, Felipe, qui nous a écrit en demandant: «Comment puis-je savoir quelles applications utilisent Java?«. Eh bien, je ne pense pas qu'il y ait un moyen de le savoir, mais il y a un moyen simple de savoir quels packages (c'est-à-dire quelles applications) répertoriés dans les référentiels dépendent des packages JAVA. La même méthode peut être utilisée pour tout autre package, par exemple pour savoir de quelles applications dépendent MONO. |
Le plus courant est de savoir quels autres packages doivent être installés pour que le package X fonctionne correctement. Ces packages requis sont appelés dépendances et peuvent être trouvés comme ceci:
apt-cache dépend de mon paquet
Vous pouvez également aller sur Synaptic, trouver le package, faire clic droit dessus> Propriétés> Dépendances.
Cependant, l'objectif de ce post est de découvrir précisément l'inverse: quels packages ont X package comme dépendance. En d'autres termes, dans ce cas, nous connaissons le paquet «mère» et nous voulons savoir quels autres paquets nécessitent que ce paquet «mère» soit installé pour fonctionner.
Passons à l'exemple pour mieux comprendre la question. Voyons comment détecter les packages qui dépendent du package openjdk-6-jre. En d'autres termes, comment détecter les applications répertoriées dans les référentiels qui dépendent de JAVA.
J'ai ouvert un terminal et écrit:
apt-cache rdépend de openjdk-6-jre
Une longue liste de packages apparaîtra, y compris OpenOffice, FreeMind, OpenCol, etc.
Comment trouver le bon paquet «mère»?
OK, jusqu'ici si facile, mais comment puis-je savoir quel est le package "mère" sur lequel je devrais rechercher? Eh bien, cela nécessite une certaine expertise et une analyse préalable.
Supposons que je veuille connaître toutes les applications basées sur MONO. Dans ce cas, j'ai cherché les dépendances d'une application (GBrainy) dont je sais qu'elle utilise MONO et, sur cette base, détecter le package "mère" et rechercher les dépendances inverses. Uff, cela semble difficile mais c'est un non-sens.
J'ai ouvert un terminal et écrit:
apt-cache dépend de gbrainy
Les résultats sont les suivants:
Dépend: mono-runtime
| Dépend: libc6
| Dépend: libc6.1
Dépend: libc0.1
Dépend: libglib2.0-cil
Dépend: libgtk2.0-0
Dépend: libgtk2.0-cil
Dépend: liblaunchpad-integration1.0-cil
Dépend: libmono-addins-gui0.2-cil
Dépend: libmono-addins0.2-cil
Dépend: libmono-cairo2.0-cil
Dépend: libmono-corlib2.0-cil
Dépend: libmono-posix2.0-cil
Dépend: libmono-system2.0-cil
Dépend: librsvg2-2
Dépend: mono-csharp-shell
Il m'a semblé que le mono-runtime pouvait être un bon candidat, j'ai donc décidé de rechercher tous les packages qui dépendaient du mono-runtime:
apt-cache rdépend du runtime mono
Voila! Tous les packages utilisant MONO apparaissent.
Pour voir une liste complète de tous les packages qui dépendent de certains packages MONO, nous aurions pu écrire:
apt-cache rdepends mono *
Merci d'avoir répondu à Pablo et merci pour le message 🙂
Pablo tu es mon idole!
Excellent poste.
Génial! Merci pour les données!
Pour ceux d'entre nous qui utilisent des distributions brutes ………… blague
pour ceux qui utilisent des gestionnaires de packages basés sur RPM, cette commande est utilisée
packages rpm -qR
exemple:
linux @ dhcppc3: ~> rpm -qR xmms
/ Bin / sh
/ Bin / sh
rpmlib (PayloadFilesHavePrefix) <= 4.0-1
rpmlib (CompressedFileNames) <= 3.0.4-1
libICE.so.6
libSM.so.6
libX11.so.6
libXxf86vm.so.1
libc.so.6
libc.so.6 (GLIBC_2.0)
libc.so.6 (GLIBC_2.1)
libc.so.6 (GLIBC_2.3)
libc.so.6 (GLIBC_2.3.4)
libc.so.6 (GLIBC_2.4)
libc.so.6 (GLIBC_2.7)
libdl.so.2
libdl.so.2 (GLIBC_2.0)
libdl.so.2 (GLIBC_2.1)
libgdk-1.2.so.0
libglib-1.2.so.0
libgtread-1.2.so.0
libgtk-1.2.so.0
libpthread.so.0
libpthread.so.0 (GLIBC_2.0)
libpthread.so.0 (GLIBC_2.1)
libpthread.so.0 (GLIBC_2.3.2)
libxmms.so.1
rpmlib (PayloadIsLzma) <= 4.4.6-1