Acest scurt mini-tutorial apare ca răspuns la îngrijorarea unuia dintre cititorii noștri, Felipe, care ne-a scris întrebând: «Cum pot să știu ce aplicații utilizează Java?«. Ei bine, nu cred că există o modalitate de a ști asta, dar există o modalitate simplă de a ști ce pachete (adică ce aplicații) enumerate în depozite depind de pachetele JAVA. Aceeași metodă poate fi utilizată pentru orice alt pachet, de exemplu pentru a afla de ce aplicații depinde MONO. |
Cel mai frecvent este să doriți să aflați ce alte pachete trebuie instalate pentru ca pachetul X să funcționeze bine. Aceste pachete necesare sunt numite dependențe și pot fi găsite astfel:
apt-cache depinde de pachetul meu
De asemenea, puteți merge la Synaptic, găsiți pachetul, faceți faceți clic dreapta pe el> Proprietăți> Dependențe.
Cu toate acestea, obiectivul acestui post este de a afla exact invers: ce pachete au pachetul X ca dependență. Cu alte cuvinte, în acest caz știm pachetul „mamă” și vrem să știm ce alte pachete necesită ca acest pachet „mamă” să fie instalat pentru a funcționa.
Să trecem la exemplu pentru a înțelege mai bine problema. Să vedem cum să detectăm pachetele care depind de pachetul openjdk-6-jre. Adică, cum să detectați acele aplicații listate în depozite, care depind de JAVA.
Am deschis un terminal și am scris:
apt-cache rdepends openjdk-6-jre
Va apărea o listă lungă de pachete, inclusiv OpenOffice, FreeMind, OpenCol etc.
Cum se găsește pachetul „mamă” corect?
OK, până acum atât de ușor, dar cum să aflu care este pachetul „mamă” pe baza căruia ar trebui să caut? Ei bine, acest lucru necesită o anumită expertiză și o analiză prealabilă.
Să presupunem că vreau să știu toate aplicațiile bazate pe MONO. În acest caz, ceea ce am făcut a fost să caut dependențele unei aplicații (GBrainy) despre care știu că folosește MONO și, pe baza asta, detectează pachetul „mamă” și caută dependențele inverse. Uff, pare dificil, dar este o prostie.
Am deschis un terminal și am scris:
apt-cache depinde de gbrainy
Rezultatele sunt următoarele:
Depinde: mono-runtime
| Depinde: libc6
| Depinde: libc6.1
Depinde: libc0.1
Depinde: libglib2.0-cil
Depinde: libgtk2.0-0
Depinde: libgtk2.0-cil
Depinde: liblaunchpad-integration1.0-cil
Depinde: libmono-addins-gui0.2-cil
Depinde: libmono-addins0.2-cil
Depinde: libmono-cairo2.0-cil
Depinde: libmono-corlib2.0-cil
Depinde: libmono-posix2.0-cil
Depinde: libmono-system2.0-cil
Depinde: librsvg2-2
Depinde: mono-csharp-shell
Mi s-a părut că mono-runtime-ul ar putea fi un bun candidat, așa că am decis să caut toate pachetele care depindeau de mono-runtime:
apt-cache depinde de mono-runtime
Voila! Apar toate pachetele care utilizează MONO.
Pentru a vedea o listă completă a tuturor pachetelor care depind de un pachet MONO, am fi putut scrie:
apt-cache depinde mono *
Mulțumesc că i-ai răspuns lui Pablo și mulțumesc pentru postare 🙂
Pablo ești idolul meu!
Post excelent.
Grozav! Mulțumim pentru date!
Pentru cei dintre noi care folosim distribuții brute ………… glumă
pentru cei care utilizează administratori de pachete bazate pe RPM, această comandă este utilizată
pachetele rpm -qR
Exemplu:
linux @ dhcppc3: ~> rpm -qR xmms
/ Bin / sh
/ Bin / sh
rpmlib (PayloadFilesHavePrefix) <= 4.0-1
rpmlib (CompressedFileNames) <= 3.0.4-1
libICE.deci.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