Как вывести список зависимостей пакета в Ubuntu

В отличие от Windows, macOS и Android, программное обеспечение в Ubuntu и Linux в целом не распространяется как единый пакет. Вместо этого, когда вы устанавливаете приложение, менеджер пакетов вашей системы загружает несколько пакетов, включая основной пакет приложения и его зависимости. Однако это справедливо только для традиционной установки пакетов в Linux, то есть с использованием менеджеров пакетов.

Информация о том, какие дополнительные зависимости загружаются во время установки, может быть полезно как для начинающих, так и для опытных пользователей. Таким образом, вы получаете полный контроль над пакетами, установленными в его системе.

Давайте посмотрим, как вы можете проверить зависимости пакета в Ubuntu.

Что такое зависимости пакетов?

Зависимости – это пакеты поддержки, необходимые для правильной работы приложения в Linux. Например, если вы хотите загрузить медиаплеер VLC в Ubuntu, APT установит некоторые дополнительные пакеты, такие как libc6 и gcc , в дополнение к основному пакету « vlc ». Зависимость также может иметь другие пакеты в качестве своих зависимостей, таким образом, образуя иерархическую структуру.

Поскольку пакеты Linux взаимозависимы, почти каждое программное обеспечение требует дополнительных пакетов, которые вы должны установить в своей системе.

Хотя менеджеры пакетов, такие как APT, автоматизируют управление и установку указанных зависимостей, при попытке собрать пакет вручную из источника возникают ошибки. Однако вы можете решить такие ошибки, просто установив необходимую зависимость в вашей системе с помощью команды apt install .

Как проверить зависимости пакетов в Linux

К счастью, в Ubuntu есть несколько способов получить список зависимостей пакета. APT, менеджер пакетов по умолчанию в дистрибутивах на основе Ubuntu и Debian, предлагает несколько команд для получения информации о пакете, связанной с зависимостями.

Использование диспетчера пакетов APT

Вы можете использовать APT в Ubuntu, чтобы получить список зависимостей, связанных с пакетом. Основной синтаксис команды:

 sudo apt depends packagename

Например, чтобы проверить зависимости для пакета ритмбокс :

 sudo apt depends rhythmbox

Помимо списка зависимостей, вывод также будет включать рекомендуемые и предлагаемые пакеты, которые вы можете установить вместе сhythmbox .

В качестве альтернативы вы также можете использовать команду apt-cache, чтобы получить тот же результат.

 sudo apt-cache depends rhythmbox

Чтобы получить дополнительную информацию, относящуюся к конкретному пакету, используйте метод show вместо метода depends .

 sudo apt show rhythmbox
sudo apt-cache show rhythmbox

Выход:

Листинг зависимостей с помощью dpkg

Если вы загрузили пакет DEB в свою систему и хотите знать, какие зависимости будут установлены вместе с пакетом, вы можете использовать флаг -I (с заглавной буквы i, а не с L в нижнем регистре) или –info с командой.

 sudo dpkg -I /path/to/package.deb
sudo dpkg --info /path/to/package.deb

… где /path/to/package.deb – абсолютный или относительный путь к файлу DEB.

В выходных данных будет отображаться размер пакета, источник и другая полезная информация вместе со списком зависимостей.

Чтобы получить список зависимостей для установленного пакета, используйте флаг -s с dpkg. Например:

 sudo dpkg -s firefox

Выход:

Связанный: В чем разница между APT и dpkg в Ubuntu?

Использование apt-rdepends

Чтобы получить более подробный вывод, вы можете использовать утилиту apt-rdepends. Поскольку он не предустановлен в большинстве дистрибутивов Linux, вам придется установить его вручную в Ubuntu с помощью APT.

 sudo apt install apt-rdepends

Используйте следующий формат команды, чтобы получить дерево зависимостей для пакета:

 apt-rdepends packagename

Например:

 apt-rdepends vlc

Выход:

Сгенерированный вывод обычно имеет длину, если apt-rdepends отображает полное иерархическое дерево зависимостей, что означает, что вы также получаете список зависимостей зависимости.

Вы также можете получить список пакетов, которые зависят от конкретного пакета. Например, чтобы проверить, для каких пакетов требуется libc в качестве зависимости:

 apt-rdepends -r libc

Выход:

Утилита, зависящая от обратной зависимости

Хотя функция обратной зависимости (флаг -r ) apt-rdepends работает лучше, чем ожидалось, есть еще одна утилита, которую вы можете использовать для извлечения обратных зависимостей пакета. Команда обратной зависимости является частью пакета ubuntu-dev-tools и может быть загружена с помощью:

 sudo apt install ubuntu-dev-tools

Синтаксис команды по умолчанию:

 reverse-depends options packagename

… где параметры – это флаги, которые вы можете использовать с командой, а packagename – это имя пакета, для которого вы хотите выполнить обратную проверку зависимостей.

Вы также можете добавить различные флаги к вышеупомянутой команде, чтобы изменить вывод. Вот список наиболее полезных опций:

  1. -R : перечислить только прямые зависимости (без рекомендуемых или рекомендуемых пакетов)
  2. -s : включить предложенные пакеты
  3. -l : представить вывод в более чистом формате, подходящем для использования в скриптах.

Если вы не можете понять, как использовать инструмент и вам нужна справка из командной строки , используйте флаг –help или -h .

 reverse-depends -h
reverse-depends --help

Получить список зависимостей с помощью имитации установки / удаления

Для тех, кому нужен краткий список всех зависимостей, которые в настоящее время не установлены в системе, вы можете запустить имитацию установки (или удаления) определенного пакета.

Например, чтобы проверить зависимости, необходимые для пакета PHP, выполните следующую команду:

 sudo apt install -s php

Вывод будет содержать раздел «Будут установлены следующие дополнительные пакеты». Все перечисленные ниже имена пакетов являются зависимостями, которые не были обнаружены в вашей системе.

Если вы хотите получить список зависимостей для пакета, уже установленного в Ubuntu, вы можете выполнить имитацию удаления, чтобы проверить, какие дополнительные пакеты будут удалены вместе с ним.

 sudo apt remove -s packagename

Пример:

 sudo apt remove -s rhythmbox

Выход:

Пакеты Linux взаимозависимы

Как вы можете сделать из этого руководства, почти каждый пакет Linux зависит от другого пакета. Основной принцип, лежащий в основе этой концепции, заключается в том, что в операционных системах на базе Linux каждый пакет должен выполнять одну работу и делать ее хорошо.

Если пакет был разработан для управления аудиосервисами, то другие программы будут просто перечислять упомянутый пакет как свою зависимость и использовать его для выполнения своих требований к звуку.

Кроме того, если несколько приложений требуют один и тот же пакет, он устанавливается в системе только один раз, что предотвращает избыточность данных и экономит место на диске. Вы также можете получить список всех пакетов, установленных в настоящее время в вашей системе, с помощью APT.