Для конкретного пакета, могу ли я узнать, почему он установлен?
Итак, я могу видеть, или это установлено вручную, или что это установлено как зависимость другого пакета? Или что он установлен как часть дистрибутива?
Для конкретного пакета, могу ли я узнать, почему он установлен?
Итак, я могу видеть, или это установлено вручную, или что это установлено как зависимость другого пакета? Или что он установлен как часть дистрибутива?
Ответы:
Быстрое решение состоит в том, чтобы ввести следующую команду в терминале:
aptitude why $package
или, если вы заинтересованы только в конечной причине:
aptitude why $package --show-summary
Замените $ package на имя пакета, и вам может понадобиться aptitude
сначала установить пакет.
Вот результат, который вы можете получить aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
Для более подробной информации вы бы запустить aptitude why aspell
. Вы можете прочитать пример вывода ниже: «Вы установили вручную inkscape
, что требует libgtkspell
, что требует libenchantic2a
, что требует aspell
». ( i
маркеры указывают на установленные пакеты; A
маркеры указывают на автоматически установленные пакеты.)
i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
Наконец, следующая команда
apt-cache rdepends --installed $package
перечисляет другие пакеты, установленные на вашем компьютере, которые напрямую зависят от $ 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 <package-name>
Замените на имя интересующего вас пакета. Например, введите aptitude why libgoo-canvas-perl
:
i shutter Suggests libgoo-canvas-perl
Это в основном означает, что пакет shutter
в этом случае предложил libgoo-canvas-perl
установить. Затем, набрав, aptitude why shutter
я могу пройтись по цепочке зависимостей.
Однако есть одна оговорка. Я часто замечаю, что aptitude находит наиболее правдоподобное объяснение ситуации, которая, возможно, не соответствует действительности, но тем не менее даст вам ключ к дальнейшему рассмотрению.
В моем случае, shutter
предполагает libgoo-canvas-perl
- однако, предлагаемые пакеты не устанавливаются автоматически по умолчанию. Тем не менее, это пробуждает мою память об «опыте» с невозможностью редактировать скриншоты, с помощью shutter
которых я вручную установилligbgoo-canvas-perl
Наконец, вы можете узнать, был ли пакет установлен автоматически (то есть, если система управления пакетами посчитала его обязательным из рассмотрения зависимостей и рекомендаций других пакетов, которые вы просили его установить), выполнив следующую команду.
aptitude show <package-name>
Это выведет строку, как показано ниже (3-я строка вывода):
Automatically installed: no
Для получения дополнительной информации запустите info aptitude
(в терминале) или посетите вики-страницу Aptitude.
Чтобы узнать, когда был установлен конкретный пакет, есть 2 варианта:
Install
выполнить поиск (обратите внимание на случай), чтобы получить список всех записей, касающихся установки. Тем не менее, это покажет только пакеты, установленные с помощью SynapticВыполните следующую команду в терминале. Это будет искать в журналах dpkg записи истории установки. Однако существует максимальный предел количества этих журналов, поэтому, если искомый пакет был установлен давно, вы можете его не найти. Подробнее здесь
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Да, вы можете, и это довольно очевидная команда, на самом деле. Предполагая, что вы установили aptitude, вы можете открыть тип объявления в окне терминала:
aptitude why package
Это должно дать список пакетов, которые зависят от этого конкретного пакета. Если это пакет, установленный вручную, он скажет что-то вроде «Не удалось найти причину для установки пакета».
Вот простой способ, который не зависит aptitude
, который 10.10 больше не поставляется по умолчанию.
Откройте Synaptic и попробуйте удалить его.
Если появляется диалоговое окно с просьбой удалить другие пакеты, это пакеты, которые (рекурсивно) зависят от него.
apt-get remove package_name_goes_here -s
Опять же, пакеты, которые будут удалены в результате, - это все те, которые (рекурсивно) зависят от него. ( -s
Параметр говорит apt-get
не удалять пакет)
y/N
запрос подтверждения, если вы опечатаете -s
. Я добавил предупреждение, однако.