Com saber quines aplicacions depenen de X paquet

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 *
Nota: aquest mètode serveix només per a aquelles aplicacions que es troben llistades en els repositoris APT.
Gràcies Feli!

4 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Felip Becerra va dir

    Gràcies per respondre Pau, i gràcies pel post 🙂

  2.   Saito Mordraug va dir

    Pau ets el meu ídol!

    Excel·lent post.

  3.   Fem servir Linux va dir

    Boníssim! Gràcies x la dada!

  4.   krafty va dir

    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