Šī īsa mini apmācība parādās kā atbilde uz viena no mūsu lasītāju Felipe bažām, kurš mums rakstīja un jautāja: «Kā es varu zināt, kuras lietojumprogrammas izmanto Java?«. Es nedomāju, ka ir veids, kā to uzzināt, bet ir vienkāršs veids, kā to zināt kuras krātuvēs norādītās paketes (tas ir, kuras lietojumprogrammas) ir atkarīgas no JAVA pakotnēm. To pašu metodi var izmantot jebkurai citai pakotnei, piemēram, lai uzzinātu, kuras lietojumprogrammas ir atkarīgas MONO. |
Visizplatītākā ir vēlme uzzināt, kādas citas pakotnes ir jāinstalē, lai X pakete darbotos labi. Šīs nepieciešamās paketes sauc par atkarībām, un tās var uzzināt šādi:
apt-cache ir atkarīgs no manu paketes
Varat arī doties uz Synaptic, atrast paketi, darīt ar peles labo pogu noklikšķiniet uz tā> Rekvizīti> Atkarības.
Tomēr šī ziņojuma mērķis ir precīzi uzzināt otrādi: kurām paketēm ir X pakete kā atkarība. Citiem vārdiem sakot, šajā gadījumā mēs zinām paketi "māte" un vēlamies uzzināt, kādas citas paketes prasa, lai šī "mātes" pakete darbotos.
Pārejam pie piemēra, lai labāk izprastu lietu. Apskatīsim, kā noteikt paketes, kas ir atkarīgas no openjdk-6-jre pakotnes. Citiem vārdiem sakot, kā noteikt tās krātuvēs uzskaitītās lietojumprogrammas, kas ir atkarīgas no JAVA.
Es atvēru termināli un uzrakstīju:
apt-cache rdependents openjdk-6-jre
Parādīsies garš paku saraksts, tostarp OpenOffice, FreeMind, OpenCol utt.
Kā atrast pareizo "mātes" paketi?
Labi, līdz šim tik viegli, bet kā es varu uzzināt, kas ir "mātes" pakete, uz kuras pamata man vajadzētu meklēt? Nu, tas prasa zināmas zināšanas un iepriekšēju analīzi.
Pieņemsim, ka es vēlos uzzināt visas lietojumprogrammas, kuru pamatā ir MONO. Tādā gadījumā es meklēju lietojumprogrammas (GBrainy) atkarības, kuras, kā es zinu, izmanto MONO, un, pamatojoties uz to, atklāju paketi "māte" un meklētu apgrieztās atkarības. Uff, tas šķiet grūti, bet tas ir absurds.
Es atvēru termināli un uzrakstīju:
apt-cache ir atkarīgs no gbrainy
Rezultāti ir šādi:
Atkarīgs: mono-izpildlaiks
| Atkarīgs: libc6
| Atkarīgs: libc6.1
Atkarīgs: libc0.1
Atkarīgs: libglib2.0-cil
Atkarīgs: libgtk2.0-0
Atkarīgs: libgtk2.0-cil
Atkarīgs no: liblaunchpad -integration1.0-cil
Atkarīgs: libmono-addins-gui0.2-cil
Atkarīgs: libmono-addins0.2-cil
Atkarīgs: libmono-cairo2.0-cil
Atkarīgs: libmono-corlib2.0-cil
Atkarīgs: libmono-posix2.0-cil
Atkarīgs no: libmono-system2.0-cil
Atkarīgs: librsvg2-2
Atkarīgs: mono-csharp-apvalks
Man šķita, ka mono-runtime varētu būt labs kandidāts, tāpēc es nolēmu meklēt visus paketus, kas bija atkarīgi no mono -untime:
apt-cache rdependo mono izpildlaiku
Voila! Parādās visas paketes, kurās tiek izmantots MONO.
Lai redzētu visu to pakotņu sarakstu, kuras ir atkarīgas no kāda MONO pakotnes, mēs varētu būt uzrakstījuši:
apt-cache rdepends mono *
Paldies, ka atbildējāt uz Pablo, un paldies par ierakstu 🙂
Pablo tu esi mans elks!
Izcils amats.
Lieliski! Paldies par datiem!
Tiem no mums, kuri izmanto bruto sadali ... joks
tiem, kas izmanto RPM pakotņu pārvaldniekus, tiek izmantota šī komanda
rpm -qR paketes
piemērs:
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