Aquest breu mini-tut sorgeix com resposta a la inquietud d'un dels nostres lectors, Felip, Qui ens va escriure preguntant: «Com puc saber quines són les aplicacions que estan fent ús de Java?«. Bé, no crec que hi hagi una manera de saber això, però sí que hi ha una forma senzilla de saber quins paquets (o sigui, quines aplicacions) llistades en els repositoris depenen dels paquets JAVA. El mateix mètode pot usar-se per a qualsevol altre paquet, per exemple, per saber quines aplicacions depenen de MONO. |
El més usual és voler esbrinar quins altres paquets han d'estar instal·lats perquè el paquet X funcioni bé. Aquests paquets necessaris es diuen dependències i es poden esbrinar així:
apt-cache depends mipaquet
També podeu anar a Synaptic, buscar el paquet, fer clic dret sobre ell> Propietats> Dependències.
No obstant això, l'objectiu d'aquest post és esbrinar, precisament, el contrari: quins paquets tenen com a dependència X paquet. O sigui, en aquest cas coneixem el paquet «mare» i volem saber quins altres paquets necessiten que aquest paquet «mare» estigui instal·lat per a funcionar.
Passem a l'exemple per entendre millor l'assumpte. Vegem com detectar els paquets que depenen de l'paquet openjdk-6-jre. O sigui, com detectar aquelles aplicacions llistades en els repositoris, que depenen de JAVA.
Vaig obrir un terminal i escriure:
apt-cache rdepends noms openjdk-6-jre
Apareixerà una llarga llista de paquets, entre ells OpenOffice, FreeMind, OpenCol, etc.
Com descobrir el paquet «mare» correcte?
OK, fins aquí tot molt fàcil, però com descobrir quin és el paquet «mare» basant-se el qual he de buscar? Bé, això requereix certa perícia i anàlisi prèvia.
Suposem que vull conèixer totes les aplicacions basades en MONO. En aquest cas, jo el que vaig fer va ser buscar les dependències d'una aplicació (gbrainy) que jo sé que fa servir MONO i, en base a això, detectar el paquet «mare» i buscar les dependències inverses. Uff, sembla difícil però és una ximpleria.
Vaig obrir un terminal i escriure:
apt-cache depends gbrainy
Els resultats són aquests:
Depèn: mono-runtime
| Depèn: libc6
| Depèn: libc6.1
Depèn: libc0.1
Depèn: libglib2.0-cil
Depèn: libgtk2.0-0
Depèn: libgtk2.0-cil
Depèn: liblaunchpad-integration1.0-cil
Depèn: libmono-addins-gui0.2-cil
Depèn: libmono-addins0.2-cil
Depèn: libmono-cairo2.0-cil
Depèn: libmono-corlib2.0-cil
Depèn: libmono-posix2.0-cil
Depèn: libmono-system2.0-cil
Depèn: librsvg2-2
Depèn: mono-csharp-shell
Em va semblar que mono-runtime podia ser un bon candidat, així que vaig decidir buscar tots els paquets que depenguessin de mico-runtime:
apt-cache rdepends noms mico-runtime
Voilà! Apareixen tots els paquets que fan servir MONO.
Per veure un llistat complet de tots els paquets que depenen d'algun paquet de MONO, podríem haver escrit:
apt-cache rdepends noms mico *
4 comentaris, deixa el teu
Gràcies per respondre Pau, i gràcies pel post 🙂
Pau ets el meu ídol!
Excel·lent post.
Boníssim! Gràcies x la dada!
Per als que fem servir distribucions ses ............ acudit
per als que utilitzen gestors de paquets basats en RPM s'utilitza aquesta comanda
rpm -qR paquets
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
libgthread-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