Могу ли я увидеть, почему установлен пакет?

Могу ли я узнать, для какого именно пакета он установлен?

Итак, я могу увидеть, или он установлен вручную, или что он установлен как зависимость другого пакета? Или что он установлен как часть дистрибутива?

146
задан 3 August 2014 в 20:23

4 ответа

Быстрое решение состоит в том, чтобы ввести следующую команду в терминале:

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, чтобы получить список всех пакетов, которые прямо или косвенно зависят от нее.

0
ответ дан 3 August 2014 в 20:23

Да, вы можете, и это довольно очевидная команда, на самом деле. Предполагая, что вы установили aptitude, вы можете открыть тип объявления в окне терминала:

aptitude why package

. Это должно дать список пакетов, которые зависят от этого конкретного пакета. Если это пакет, установленный вручную, он скажет что-то вроде «Не удалось найти причину для установки пакета».

0
ответ дан 3 August 2014 в 20:23

Вот простой способ, который не зависит от aptitude, который 10.10 больше не поставляется по умолчанию.

Уведомление

Вам нужен root-доступ для запуска этих команд.

Графически

Откройте Synaptic и попробуйте удалить его.

Если появляется диалоговое окно с просьбой удалить другие пакеты, это пакеты, которые (рекурсивно) зависят от него.

Из терминала

apt-get remove package_name_goes_here -s

Опять же, пакеты, которые будут удалены в результате, - это все те, которые (рекурсивно) зависят от него. (Параметр -s говорит apt-get, что на самом деле не следует удалять пакет.)

0
ответ дан 3 August 2014 в 20:23

Быстрое и краткое объяснение того, почему был установлен определенный пакет, можно узнать, набрав в терминале следующую команду (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. страница

Чтобы узнать , когда был установлен конкретный пакет, есть две опции:

  1. Менеджер пакетов Synaptic ведет журнал истории всех действий , Чтобы просмотреть файл журнала истории, выберите «История» в меню «Файл». Вы можете выполнить поиск Install (учтите случай), чтобы получить список всех записей, касающихся установки. Тем не менее, это будет показывать только пакеты, установленные с использованием Synaptic
  2. Выполните следующую команду в терминале. Это будет искать в журналах dpkg записи истории установки. Однако существует максимальный предел количества этих журналов, поэтому, если искомый пакет был установлен давно, вы можете его не найти. Подробнее здесь

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    
0
ответ дан 3 August 2014 в 20:23

Другие вопросы по тегам:

Похожие вопросы: