Ten krótki mini-samouczek pojawia się jako odpowiedź na niepokój jednego z naszych czytelników, Felipe, który napisał do nas z pytaniem: «Skąd mogę wiedzieć, które aplikacje używają języka Java?«. Cóż, nie sądzę, aby można było to wiedzieć, ale jest prosty sposób, aby to wiedzieć które pakiety (czyli które aplikacje) wymienione w repozytoriach zależą od pakietów JAVA. Tej samej metody można użyć w przypadku dowolnego innego pakietu, na przykład w celu sprawdzenia, od których aplikacji zależy MONO. |
Najbardziej powszechnym jest chęć dowiedzenia się, jakie inne pakiety muszą być zainstalowane, aby pakiet X działał dobrze. Te wymagane pakiety nazywane są zależnościami i można je znaleźć w następujący sposób:
apt-cache zależy od mojego pakietu
Możesz także udać się do Synaptic, znaleźć paczkę, zrób kliknij prawym przyciskiem myszy> Właściwości> Zależności.
Jednak celem tego postu jest ustalenie dokładnie odwrotnej sytuacji: które pakiety mają pakiet X jako zależność. Innymi słowy, w tym przypadku znamy pakiet „macierzysty” i chcemy wiedzieć, jakie inne pakiety wymagają, aby ten pakiet „macierzysty” był zainstalowany do działania.
Przejdźmy do przykładu, aby lepiej zrozumieć sprawę. Zobaczmy, jak wykryć pakiety zależne od pakietu openjdk-6-jre. To znaczy, jak wykryć te aplikacje wymienione w repozytoriach, które zależą od JAVA.
Otworzyłem terminal i napisałem:
apt-cache zależy od openjdk-6-jre
Pojawi się długa lista pakietów, w tym OpenOffice, FreeMind, OpenCol itp.
Jak znaleźć właściwy pakiet „dla matki”?
OK, na razie takie proste, ale jak mam się dowiedzieć, na podstawie którego pakietu „matka” mam szukać? Cóż, wymaga to pewnej wiedzy i wcześniejszej analizy.
Załóżmy, że chcę poznać wszystkie aplikacje oparte na MONO. W tym przypadku poszukałem zależności aplikacji (GBrainy), o której wiem, że używa MONO i na tej podstawie wykryłem pakiet „matka” i poszukałem odwrotnych zależności. Uff, wydaje się trudne, ale to nonsens.
Otworzyłem terminal i napisałem:
apt-cache zależy od gbrainy
Wyniki są następujące:
Zależy: mono-runtime
| Zależy: libc6
| Zależy: libc6.1
Zależy: libc0.1
Zależy: libglib2.0-cil
Zależy: libgtk2.0-0
Zależy: libgtk2.0-cil
Zależy: liblaunchpad-integracja1.0-cil
Zależy: libmono-addins-gui0.2-cil
Zależy: libmono-addins0.2-cil
Zależy: libmono-cairo2.0-cil
Zależy: libmono-corlib2.0-cil
Zależy: libmono-posix2.0-cil
Zależy: libmono-system2.0-cil
Zależy: librsvg2-2
Zależy: mono-csharp-shell
Wydawało mi się, że mono-runtime może być dobrym kandydatem, więc zdecydowałem się poszukać wszystkich pakietów, które zależą od mono-runtime:
apt-cache zależy od mono-runtime
Voila! Pojawiają się wszystkie pakiety używające MONO.
Aby zobaczyć pełną listę wszystkich pakietów, które zależą od jakiegoś pakietu MONO, moglibyśmy napisać:
apt-cache rdepends mono *
Dzięki za odpowiedź Pablo i dzięki za wiadomość 🙂
Pablo, jesteś moim idolem!
Doskonały post.
Świetny! Dzięki za dane!
Dla tych z nas, którzy używają podziałów brutto ………… żart
dla osób używających menedżerów pakietów opartych na RPM to polecenie jest używane
pakiety rpm -qR
przykład:
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