Этот вопрос похож на Как я могу узнать, почему был установлен пакет? , но в моем случае я хотел бы знать перед установкой пакета, почему он будет устанавливать конкретную зависимость.
Так, например, я мог бы запустить
sudo apt-get install superfoo
и результат скажет что-то вроде:
The following extra packages will be installed:
foo bar baz ... libderp libjunk
И это может быть действительно огромный список. В некоторых случаях я увижу что-то, что будет установлено, что не имеет смысла для меня, учитывая то, что я устанавливаю, поэтому я хочу знать, почему именно эта зависимость будет установлена.
В приведенном выше примере, скажем, я хотел бы понять, почему libderp
будет установлен. Я знаю , что - то есть цепочка зависимостей между superfoo
и libderp
но огромный список пакетов , которые будут установлены делает его трудно увидеть , что эта цепь.
Зная цепочку зависимостей, я могу решить, действительно ли я хочу установить исходный пакет или нет, и / или должен ли я связаться с сопровождающим этого пакета, чтобы узнать, действительно ли им нужны эти зависимости.
источник
Ответы:
То, что вы на самом деле спрашиваете: «Как я могу изобразить зависимости?» так что вы можете видеть, какие пакеты в каких зависимостях.
Вы получаете текстовые и диаграммные зависимости из
apt-cache
команды (входит в пакет apt, часть установки по умолчанию).Вот пример apt-cache для перечисления зависимостей пакета 'hello' в текстовом формате. Вывод текста всегда будет только одного уровня.
Вы можете прочитать диаграмму с помощью любого средства просмотра
dotty
dotfile , такого как (входит в пакет graphviz, также является частью установки по умолчанию)Вот пример получения полного дерева зависимостей в графическом формате с последующим его отображением. Графический вывод всегда будет полным деревом.
Просматривая его, вы можете видеть, что пакет 'hello' загружает тонну пакетов Perl ... и какая зависимость это делает.
источник
apt-cache depends --recurse
даст вам полную картину, но apt-rdepends ниже лучше, потому что он следует только фактическим зависимостям, а не рекомендуемым или предлагаемым.--no-install-recommends
флаг.|
apt-rdepends
делает это, не устанавливая более 50 библиотек типа cruftubuntu-dev-tools
.На моем чистом сервере Ubuntu установить,
apt-rdepends
требуется толькоlibapt-pkg-perl
для установки. Тогда он намного легчеubuntu-dev-tools
и все же рекурсивен, поэтому вы получаете все зависимости, а не только зависимости первого порядка, такие какapt-cache depends
return.источник
Может быть более простой способ сделать это, но это может быть сделано, если вы используете обратную зависимость. Вам нужно будет установить пакет ubuntu-dev-tools, выполнив
apt-get install ubuntu-dev-tools
Или нажав эту кнопку:
После установки вы можете использовать обратную зависимость, чтобы увидеть, что зависит от конкретного пакета. Например, если вы пытаетесь установить что-то, что хочет установить кучу дополнительных пакетов, и вы хотите увидеть, почему устанавливается «libsmpeg0», вы запускаете
Что бы вывести следующее.
Посмотрите, есть ли пакет, который вы хотите установить, в этом списке. Если нет, то в этом списке появится еще один пакет, который загружается во время первоначальной установки, и вам нужно будет выполнить обратное действие в зависимости от этого пакета. В конце концов вы увидите начальный пакет, который вы хотите установить в этом списке. На этом этапе у вас должна быть цепочка, показывающая, почему именно этот пакет был установлен.
Как добавленное примечание, я полагаю, что рекомендует, по умолчанию, включен, поэтому, если что-то установлено как рекомендация, оно будет включено. Предлагает, если выключено, но обратная зависимость может также показать эту информацию.
источник
ubuntu-dev-tools
приводит к установке следующих пакетов.bzr bzr-builddeb dctrl-tools debian-archive-keyring debian-keyring debootstrap devscripts diffstat distro-info distro-info-data dput genisoimage gettext hardening-includes intltool-debian libapt-pkg-perl libarchive-zip-perl libasprintf-dev libassuan0 libauthen-sasl-perl libautodie-perl libclone-perl libcommon-sense-perl libcroco3 libdigest-hmac-perl libdistro-info-perl libemail-valid-perl libencode-locale-perl liberror-perl
python-launchpadlib python-lazr.restfulclient python-lazr.uri python-oauth python-paramiko python-reportbug python-secretstorage python-simplejson python-soappy python-support python-wadllib python3-debian python3-magic quilt reportbug t1utils unzip wdiff xdelta
(Примечание. Выше были только необходимые пакетыsudo apt-get install ubuntu-dev-tools
на довольно чистом экземпляре сервера Ubuntu). Если вы пытаетесь избежать установки огромного количества мусора, это, вероятно, худшее из возможных решений.