man apt-get
говорит:
autoremove используется для удаления пакетов, которые были автоматически установлены для удовлетворения зависимостей для других пакетов и теперь больше не нужны.
blockquote>Так почему он не вызывается автоматически каждый раз, когда я удаляю пакет?
РЕДАКТИРОВАТЬ
По сути, мой вопрос таков: зачем использовать
remove <pkg name>
, а неautoremove <pkg name>
для удалить пакеты.PS: Это не нарушит зависимость, как сказано здесь
См. Страницу 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?
Почему бы не удалить все пакеты, которые были установлены другими пакетами и больше не нужны при удалении исходного пакета?
Потому что 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
apt-get remove xserver-xorg
apt-get remove xorg
apt-get autoremove xorg
Как видите, каждый набор порядка имеет в конце «Больше ничего не делать» , как только он выполнил каждую команду. Вот почему вы удаляете только цель с помощью remove.