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

Для конкретного пакета я могу узнать, почему он установлен?

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

1
задан 3 August 2014 в 21:23

3 ответа

Быстрое и короткое рассуждение о том, почему был установлен определенный пакет, можно найти, введя следующую команду в терминале (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>
29
ответ дан 26 May 2018 в 01:10
  • 1
    Да, большое спасибо! Только то, что мне нужно! – bheeshmar 30 April 2013 в 19:26
  • 2
    Если вы хотите узнать, когда пакет был установлен или обновлен zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “ – Chris Good 31 July 2015 в 03:19
  • 3
    @ChrisGood: можете ли вы повторно ввести свой комментарий без умных котировок, так что он скопирован / готов к использованию? – Dan Dascalescu 25 January 2017 в 20:51
  • 4
    Спасибо что подметил это. С правильными двойными кавычками: zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep "\ install \ \ \ upgrade \ " – Chris Good 26 January 2017 в 03:48

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

aptitude why package

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

11
ответ дан 26 May 2018 в 01:10

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

Обратите внимание: вам нужен root-доступ для запуска этих команд.

Графически

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

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

Из терминала

apt-get remove package_name_goes_here -s

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

2
ответ дан 26 May 2018 в 01:10
  • 1
    Это рискованное решение, потому что оно может фактически удалить пакет и все зависимости, если они неправильно щелкнут. – ImaginaryRobots 10 October 2010 в 20:41
  • 2
    @ImaginaryRobots, это много несовпадения. (В первом диалоговом окне вы должны misclick Ok, затем Apply, затем снова Ok в диалоговом окне подтверждения.) Для версии терминала есть также дополнительный запрос подтверждения y/N, если вы опечатаете -s. Однако я добавил предупреждение. – badp 10 October 2010 в 20:44
  • 3
    -1, поскольку эта информация доступна в Synaptic на вкладке зависимостей при просмотре свойств пакета. – alexanderpas 30 October 2010 в 03:46
  • 4
    @alex неверно - в этом диалоговом окне не указано, установлен ли этот пакет вручную или автоматически. PS: Сброс счетчика входящих сообщений, попробуйте успеть. – badp 30 October 2010 в 03:52
  • 5
    @badp нет, но эту информацию можно найти с помощью «Установленный (ручной)») фильтр состояния на главном экране и можно увидеть в меню пакета, когда вы выбираете пакет. – alexanderpas 30 October 2010 в 04:42

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

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