В чем разница между этими командами?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
источник
В чем разница между этими командами?
sudo apt-get autoremove --purge packagenames
sudo apt-get remove --purge packagenames
sudo apt-get purge purge packagenmaes
sudo apt-get remove packagenames
sudo apt-get autoremove
remove
удаляет пакеты, названные в его честь.autoremove
удаляет все автоматически установленные пакеты, которые больше не нужны. Неправильно перечислять имена пакетов после autoremove
; они будут проигнорированы (и все подходящие пакеты будут удалены), что, вероятно, не то, что вы намереваетесь.--purge
также вызывает удаление системных файлов конфигурации, связанных с удаляемыми пакетами. Он должен сопровождаться командой, такой как remove
или autoremove
. --purge
Флаг изменяет действие команды; оно не действует само по себе.purge
означает то же самое, что и --purge remove
(то же самое, что и remove --purge
). Неверно говорить purge
дважды; вторая purge
интерпретируется как имя пакета для purge
d, что, вероятно, не то, что вы намереваетесь.Чтобы понять, что делают эти команды и чем они отличаются, полезно (и, вероятно, даже важно) понять две концепции:
Установленный пакет устанавливается вручную или автоматически .
Когда вы указываете пакет для установки, и он установлен, он устанавливается вручную .
Но другие пакеты также могут быть установлены. Большинство пакетов имеют зависимости - другие пакеты, которые должны быть установлены, чтобы эти пакеты работали, как предполагалось. При установке пакета устанавливаются его зависимости (т. Е. Другие пакеты, от которых он зависит), за исключением тех, которые были установлены ранее.
Если пакет не указан вами для установки, а вместо этого устанавливается как зависимость пакета, который вы указали для установки, он устанавливается автоматически .
Обратите внимание, что если у вас установлено два пакета, и один из них является зависимостью от другого, это не означает, что эта зависимость устанавливается автоматически. Также возможно, что зависимость была установлена вручную (т. Е. Указана вами, например, установлена до или одновременно с пакетом, который от нее зависит).
В заключение:
apt-mark
команды), независимо от того, как или при каких обстоятельствах они были фактически установлены.Как правило, для каждого автоматически установленного пакета у вас будет как минимум один установленный вручную пакет, который зависит от него (и который стал причиной его автоматической установки). Однако если вы затем удалите все установленные вручную пакеты, которые зависят от автоматически установленного пакета, автоматически установленный пакет больше не потребуется, но все равно будет установлен.
apt-get autoremove
удаляет автоматически установленные пакеты, которые больше не имеют пакетов, установленных вручную, в зависимости от них.
Пакет предоставляет файлы, которые должны быть и должны оставаться одинаковыми в каждой системе, где установлена эта версия этого пакета. Такие файлы предоставляют исполняемые файлы, ресурсы, документацию и другие «ресурсы» для установленных программ. Мы обычно просто называем эти «файлы», которые предоставляет пакет.
Но пакет предоставляет и другие файлы, которые предназначены (возможно) для изменения. Они называются глобальными (или общесистемными) файлами конфигурации. Они почти всегда установлены в /etc
каталоге, и они могут быть автоматически и вручную изменены , чтобы изменить поведение установленных программ. Например, sudo
имеет файл конфигурации /etc/sudoers
и каталог для дополнительных файлов конфигурации /etc/sudoers.d
. Этот файл и любые файлы , добавленные в этот каталог, указать , кому разрешено использовать sudo
в каких отношениях.
Обычно желательно, чтобы удаление пакета и последующая его установка не изменили его поведение (если только файлы пакета не были повреждены, и поэтому вы, конечно, переустановили его). Поэтому, как правило, когда пакет удаляется, его файлы пакета удаляются, но его общесистемные файлы конфигурации остаются нетронутыми.
Когда вы удаляете пакет без указания того, что его системные файлы конфигурации также должны быть удалены, это называется «удалением» пакета.
Если вы также хотите удалить общесистемные файлы конфигурации пакета при удалении пакета, это называется «очисткой» пакета.
apt-get remove
удалит пакет; то есть, он будет удалить пакет, но оставить свои общесистемные конфигурационные файлы.
apt-get purge
очистит пакет; то есть он удалит пакет, а также обязательно удалит его системные файлы конфигурации.
Другой способ удалить пакеты - использовать --purge
флаг. Это не говорит, apt-get
что делать; вместо этого он изменяет то, что термины (или «команды»), как remove
говорят, это делать. Этот --purge
флаг приводит к тому, что любые деинсталляции пакетов сопровождаются удалением общесистемных файлов конфигурации для деинсталлируемых пакетов. Другими словами, --purge
флаг превращает абсорбцию в чисток.
Почему у нас есть --purge
флаг, когда у нас есть purge
команда? В конце концов, не sudo apt-get --purge remove packagename
эквивалентно sudo apt-get purge packagename
. Они эквивалентны. Когда --purge
вам нужно изменить поведение команд, отличных от remove
.
Например, предположим, что вы хотите удалить автоматически установленные пакеты, которые больше не нужны (поскольку в зависимости от них больше нет установленных вручную пакетов), но вы не просто хотите удалить эти автоматически установленные пакеты, вы также хотите удалить их общесистемные конфигурационные файлы. Тогда вы могли бы работать:
sudo apt-get --purge autoremove
Давайте рассмотрим еще один использование --purge
. Существует флаг --reinstall
, который превращает установки в переустановки. Это говорит о том, что, как правило, при попытке установить пакет , который уже установлен, либо ничего не произойдет, или (если пакет помечается автоматически установлен) пакет будет маркирован установлен вручную. Но с --reinstall
флагом установка пакета, который уже установлен, вызывает его удаление, а затем установку обратно :
sudo apt-get --reinstall install packagename
Но предположим, что вы хотите удалить общесистемные файлы конфигурации пакета, который вы переустанавливаете. Это несколько распространено; когда пакет не работает, и вы не знаете, почему, вы можете попробовать переустановить его, а также удалить его файлы конфигурации, чтобы его конфигурация была сброшена до значения по умолчанию. Для этого вы можете запустить:
sudo apt-get --purge --reinstall install packagename
Установка --reinstall
превращает установку в повторную установку (т.е. удаление, а затем установку), а --purge
часть удаления повторной установки превращается в продувку.
Теперь должно быть ясно, что именно делает каждая из ваших примеров apt-get
команд:
sudo apt-get autoremove --purge packagenames
Это удаляет автоматически установленные пакеты, у которых больше нет установленных вручную пакетов, которые зависят от них. То есть он удаляет эти пакеты (что влечет за собой удаление файлов их пакетов), а также удаляет их общесистемные файлы конфигурации.
Здесь packagenames
ничего не делает. В частности, если вы намеревались просто удалить пакеты, имена которых перечислены там, то это будет не так , как вы намерены.
sudo apt-get remove --purge packagenames
Это очищает packagenames
; Предполагая packagenames
, что список имен пакетов разделен пробелами, он удалит их все. То есть, он будет удалять их (что влечет за собой удаление их файлы пакета), а также удалять их общесистемные конфигурационные файлы.
Если какой-либо из перечисленных пакетов packagenames
не установлен, его присутствие в списке не окажет никакого влияния (за исключением того, что вы будете проинформированы о том, что он не был установлен). Если вы перечислите имена пакетов, которые не являются именами какого-либо фактического пакета, команда завершится с ошибкой.unable to locate packagename
sudo apt-get purge purge packagenmaes
Если вы удалите одно из вхождений purge
этой команды, оно будет эквивалентно предыдущему. В существующем состоянии он пытается очистить вызываемый пакет purge
, а также очистить пакеты, перечисленные в packagenames
. Поскольку purge
это не имя какого-либо пакета, произойдет сбой с сообщением об ошибке.
sudo apt-get remove packagenames
Это удаляет пакеты, перечисленные в packagenames
, что влечет за собой удаление их файлов пакета. Это не удаляет их общесистемные файлы конфигурации (потому что это просто удаление, а не очистка).
sudo apt-get autoremove
Это удаляет автоматически установленные пакеты, у которых больше нет установленных вручную пакетов, которые зависят от них. Это влечет за собой удаление их файлов пакета, но не их системных файлов конфигурации (то есть это удаление, но не очистка).
Для получения дополнительной информации о том, как использовать apt-get
, я рекомендую его страницу руководства . Для получения более общей информации см. Это руководство .