почему autoremove не вызывается при удалении пакета?

man apt-get говорит:

autoremove используется для удаления пакетов, которые были автоматически установлены для удовлетворения зависимостей для других пакетов и теперь больше не нужны.

Так почему он не вызывается автоматически каждый раз, когда я удаляю пакет?

РЕДАКТИРОВАТЬ

По сути, мой вопрос таков: зачем использовать remove <pkg name>, а не autoremove <pkg name> для удалить пакеты.

См. Здесь

PS: Это не нарушит зависимость, как сказано здесь

4
задан 13 April 2017 в 15:25

2 ответа

См. Страницу AptGet / Howto - Документация по Ubuntu , чтобы очистить ваши сомнения.

В нем говорится:

apt-get autoremove

Эта команда удаляет пакеты, которые были установлены другими пакетами и больше не нужны.

apt-get autoremove <package_name>

Эта команда удаляет установленный пакет и зависимости.

и

apt-get remove <package_name>

Эта команда удаляет установленный пакет, оставляя файлы конфигурации без изменений.

РЕДАКТИРОВАТЬ

Это зависит от того, насколько вы доверяете трекеру зависимости. Хотя это почти всегда правильно, бывают ситуации, когда вы хотите, чтобы зависимость оставалась, особенно когда вы разработчик или опытный пользователь, устанавливающий программное обеспечение, отсутствующее в хранилище.

Если вы всегда устанавливаете программное обеспечение через apt-get, без исключения, и доверяете всем зависимостям, чтобы они были правильными (какими они обычно являются), то вы можете использовать apt-get autoremove и получить небольшое количество дисковое пространство и уменьшенная подверженность потенциальным дырам в безопасности благодаря удалению пакетов, в которых больше нет пакетов, которые в них нуждаются.

Но если вы устанавливаете программное обеспечение вручную, или разрабатываете программное обеспечение, или не хотите иметь дело с возможной ошибкой зависимости, то использование автоматического удаления для очистки потенциально неиспользуемых пакетов, вероятно, является более безопасным выбором. Независимо от того, используете ли вы apt-get autoremove время от времени или нет, вы всегда будете удалять программное обеспечение, используя apt-get remove Package

Например, если я установлю AwesomePackage, это может зависеть от AwesomeLibrary, и, таким образом, AwesomeLibrary будет автоматически установлен как зависимость . Когда я удаляю AwesomePackage с помощью автоматического удаления, пока ни один другой пакет не имеет AwesomeLibrary в качестве зависимости, он также будет удален. Но если для SuperPackage также требуется AwesomeLibrary или если я сам установил AwesomeLibrary вместо того, чтобы он автоматически включался в качестве зависимости (apt-get install AwesomeLibrary), то автоотключение не избавит от него.

Причина, по которой это не значение по умолчанию, заключается в том, что наличие AwesomeLibrary в системе, неиспользованной, является очень незначительной проблемой. Это почти никогда не вызовет проблем, и большинство зависимостей не занимают много места. Существуют исключения, но времена, когда удаление зависимости будет вызывать проблемы, превосходят количество раз, когда это решит или предотвратит проблему.

Источник: SuperUser: Когда бы вы использовали apt-get remove поверх apt-get autoremove?

0
ответ дан 13 April 2017 в 15:25

Почему бы не удалить все пакеты, которые были установлены другими пакетами и больше не нужны при удалении исходного пакета?

Потому что remove удаляет только тот пакет, который вы хотите удалить, а не это зависимости. Давайте посмотрим:

Я установил xorg, который зависит (среди прочего) от xserver-xorg. xserver-xorg помечено как Автоматически , и, пока я продолжаю устанавливать xorg, оно не будет удалено autoremove. Теперь я вызываю apt-get remove xorg, который говорит apt-get сделать все, что требуется для удаления xorg, и, поскольку ему нужно только удалить этот пакет, он не предпринимает дальнейших действий. Зачем? Потому что вы только сказали ему, чтобы удалить этот пакет и ничего больше. Вы не сказали ему, что делать с зависимостями или с другими пакетами. apt-get хороший мальчик, и следуйте вашему приказу с точкой и запятой, не пытаясь быть умным, выполняя то, о чем вы его не просили, и мне это нравится.

С помощью apt-get autoremove xorg вы указываете apt-get сделать все возможное, чтобы удалить xorg и любую автоматическую зависимость, которая была установлена ​​xorg. Затем apt-get следует вашему заказу и удаляет xorg и xserver-xorg и любую другую зависимость xorg, которая помечена как Автоматически и не имеет никакой другой зависимости для выполнения.

Давайте возьмем другой сценарий, я установил xorg и xserver-xorg, и ни один не помечен как Автоматически . Если я позвоню remove на xorg, будет удален только xorg. Если я позвоню autoremove на xorg, будет удален только xorg. Если я вызову remove для xserver-xorg, xserver-xorg и xorg будут удалены, потому что вы говорите apt-get сделать все возможное для удаления xserver-xorg, но поскольку xorg также зависит от xserver-xorg, apt- get не хочет оставлять нарушенные зависимости при выполнении ваших заказов, поэтому удалите его.

Но самое интересное, если вы позвоните autoremove на xserver-xorg, он удалит любую зависимость, помеченную как Автоматически для xserver-xorg и самого xorg. Странно, а? Это потому, что apt-get принимает этот набор заказов от вас. Вкратце, это действия в точном порядке, которые вы сообщаете apt-get всякий раз, когда звоните:

apt-get autoremove xserver-xorg

  • Удалить все обратные зависимость от xserver-xorg. В этом случае xorg
  • Удалить xserver-xorg.
  • Удалите все пакеты, от которых зависит xserver-xorg и помеченные как автоматические.
  • Больше ничего не делай.

apt-get remove xserver-xorg

  • Удалите все обратные зависимости xserver-xorg. В этом случае xorg
  • Удалить xserver-xorg.
  • Больше ничего не делай.

apt-get remove xorg

  • Удалите все обратные зависимости xorg. В этом случае нет
  • Удалить xorg.
  • Больше ничего не делай.

apt-get autoremove xorg

  • Удалите все обратные зависимости xorg. В этом случае нет
  • Удалить xorg.
  • Удалите все пакеты, от которых зависит xorg и помеченные как автоматические. Если xserver-xorg помечен как автоматический, он будет удален. Если это не так, он будет установлен.
  • Больше ничего не делай.

Как видите, каждый набор порядка имеет в конце «Больше ничего не делать» , как только он выполнил каждую команду. Вот почему вы удаляете только цель с помощью remove.

0
ответ дан 13 April 2017 в 15:25

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

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