Для конкретного пакета, могу ли я узнать, почему он установлен?
Итак, я могу видеть, или это установлено вручную, или что это установлено как зависимость другого пакета? Или что он установлен как часть дистрибутива?
apt
software-installation
dependencies
Питер Смит
источник
источник
Ответы:
Быстрое решение состоит в том, чтобы ввести следующую команду в терминале:
или, если вы заинтересованы только в конечной причине:
Замените $ package на имя пакета, и вам может понадобиться
aptitude
сначала установить пакет.Вот результат, который вы можете получить
aptitude why aspell --show-summary
Для более подробной информации вы бы запустить
aptitude why aspell
. Вы можете прочитать пример вывода ниже: «Вы установили вручнуюinkscape
, что требуетlibgtkspell
, что требуетlibenchantic2a
, что требуетaspell
». (i
маркеры указывают на установленные пакеты;A
маркеры указывают на автоматически установленные пакеты.)Наконец, следующая команда
перечисляет другие пакеты, установленные на вашем компьютере, которые напрямую зависят от $ package . Вы можете добавить
--recurse
опцию для перечисления всех пакетов, которые прямо или косвенно зависят от него.источник
apt-cache rdepends --recurse $package
вероятно дает слишком много пакетов. Я бы добавил--installed
опцию, ограничивающую установленные пакеты.-i
опция ограничивает до-зависимость и пакеты, связанные с зависимостью. Но пакет может быть установлен, потому что он рекомендован другим пакетом. Чтобы включить такие связанные с рекомендациями пакеты, я полагаю, что это даст правильные:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Быстрое и краткое объяснение того, почему определенный пакет был установлен, можно узнать, набрав следующую команду в терминале (
Applications -> Accessories -> Terminal
):Замените на имя интересующего вас пакета. Например, введите
aptitude why libgoo-canvas-perl
:Это в основном означает, что пакет
shutter
в этом случае предложилlibgoo-canvas-perl
установить. Затем, набрав,aptitude why shutter
я могу пройтись по цепочке зависимостей.Однако есть одна оговорка. Я часто замечаю, что aptitude находит наиболее правдоподобное объяснение ситуации, которая, возможно, не соответствует действительности, но тем не менее даст вам ключ к дальнейшему рассмотрению.
В моем случае,
shutter
предполагаетlibgoo-canvas-perl
- однако, предлагаемые пакеты не устанавливаются автоматически по умолчанию. Тем не менее, это пробуждает мою память об «опыте» с невозможностью редактировать скриншоты, с помощьюshutter
которых я вручную установилligbgoo-canvas-perl
Наконец, вы можете узнать, был ли пакет установлен автоматически (то есть, если система управления пакетами посчитала его обязательным из рассмотрения зависимостей и рекомендаций других пакетов, которые вы просили его установить), выполнив следующую команду.
Это выведет строку, как показано ниже (3-я строка вывода):
Для получения дополнительной информации запустите
info aptitude
(в терминале) или посетите вики-страницу Aptitude.Чтобы узнать, когда был установлен конкретный пакет, есть 2 варианта:
Install
выполнить поиск (обратите внимание на случай), чтобы получить список всех записей, касающихся установки. Тем не менее, это покажет только пакеты, установленные с помощью SynapticВыполните следующую команду в терминале. Это будет искать в журналах dpkg записи истории установки. Однако существует максимальный предел количества этих журналов, поэтому, если искомый пакет был установлен давно, вы можете его не найти. Подробнее здесь
источник
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Да, вы можете, и это довольно очевидная команда, на самом деле. Предполагая, что вы установили aptitude, вы можете открыть тип объявления в окне терминала:
Это должно дать список пакетов, которые зависят от этого конкретного пакета. Если это пакет, установленный вручную, он скажет что-то вроде «Не удалось найти причину для установки пакета».
источник
Вот простой способ, который не зависит
aptitude
, который 10.10 больше не поставляется по умолчанию.Графически
Откройте Synaptic и попробуйте удалить его.
Если появляется диалоговое окно с просьбой удалить другие пакеты, это пакеты, которые (рекурсивно) зависят от него.
От терминала
Опять же, пакеты, которые будут удалены в результате, - это все те, которые (рекурсивно) зависят от него. (
-s
Параметр говоритapt-get
не удалять пакет)источник
y/N
запрос подтверждения, если вы опечатаете-s
. Я добавил предупреждение, однако.