Это короткое мини-руководство выглядит как ответ на озабоченность одного из наших читателей, Фелипе, который нам написал с просьбой: «Как я могу узнать, какие приложения используют Java?«. Что ж, я не думаю, что есть способ узнать это, но есть простой способ узнать какие пакеты (то есть какие приложения), перечисленные в репозиториях, зависят от пакетов JAVA. Тот же метод можно использовать для любого другого пакета, например, чтобы узнать, какие приложения зависят от MONO. |
Чаще всего нужно выяснить, какие еще пакеты необходимо установить, чтобы пакет X работал нормально. Эти необходимые пакеты называются зависимостями и могут быть найдены следующим образом:
apt-cache зависит от mypackage
Вы также можете зайти в Synaptic, найти пакет, сделать щелкните его правой кнопкой мыши> Свойства> Зависимости.
Однако цель этого поста - выяснить обратное: какие пакеты имеют X package в качестве зависимости. Другими словами, в этом случае мы знаем «материнский» пакет и хотим знать, какие другие пакеты требуют, чтобы этот «материнский» пакет был установлен для работы.
Давайте перейдем к примеру, чтобы лучше понять суть дела. Давайте посмотрим, как определять пакеты, которые зависят от пакета openjdk-6-jre. Другими словами, как обнаружить те приложения, перечисленные в репозиториях, которые зависят от JAVA.
Я открыл терминал и написал:
apt-cache зависит от openjdk-6-jre
Появится длинный список пакетов, включая OpenOffice, FreeMind, OpenCol и т. Д.
Как найти правильный "материнский" пакет?
Хорошо, пока все просто, но как мне узнать, что такое «материнский» пакет, по которому я должен искать? Что ж, это требует некоторого опыта и предварительного анализа.
Предположим, я хочу знать все приложения на основе MONO. В этом случае я искал зависимости приложения (GBrainy), которое, как я знаю, использует MONO, и на основе этого обнаруживал «материнский» пакет и искал обратные зависимости. Уфф, вроде сложно, но это ерунда.
Я открыл терминал и написал:
apt-cache зависит от gbrainy
Результаты таковы:
Зависит: моно-время выполнения
| Зависит: libc6
| Зависит: libc6.1
Зависит: libc0.1
Зависит: libglib2.0-cil
Зависит: libgtk2.0-0
Зависит от: libgtk2.0-cil
Зависит от: liblaunchpad-integration1.0-cil
Зависит от: libmono-addins-gui0.2-cil
Зависит: libmono-addins0.2-cil
Зависит от libmono-cairo2.0-cil
Зависит от: libmono-corlib2.0-cil
Зависит: libmono-posix2.0-cil
Зависит от: libmono-system2.0-cil
Зависит: librsvg2-2
Зависит от: mono-csharp-shell
Мне показалось, что моно-среда выполнения может быть хорошим кандидатом, поэтому я решил поискать все пакеты, которые зависят от моно-среды:
apt-cache rdepends моно-среда выполнения
Вуаля! Появятся все пакеты, в которых используется МОНО.
Чтобы увидеть полный список всех пакетов, зависящих от какого-либо пакета MONO, мы могли бы написать:
apt-cache rdepends моно *
Спасибо, что ответил, Пабло, и спасибо за сообщение 🙂
Пабло, ты мой кумир!
Отличный пост.
Большой! Спасибо за данные!
Для тех из нас, кто использует валовое распределение ………… шутка
для тех, кто использует менеджеры пакетов на основе RPM, эта команда используется
пакеты rpm -qR
пример:
linux @ dhcppc3: ~> rpm -qR xmms
/ Бен / ш
/ Бен / ш
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