It’s FOSS: В чём разница между командами apt remove или apt purge?

apt remove и apt purge – две очень похожие команды. Обе отвечают за удаление программ в операционных системах на базе Debian/Ubuntu. А в чём тогда разница?

apt remove или apt purge: в чём разница?

Для удаления ненужного софта в операционных системах на базе Debian/Ubuntu обычно используют команду apt remove:

sudo apt remove package_name

Однако на специализированных форумах частенько можно встретить предложение вместо apt remove использовать команду apt purge. И многих новичков это может сбить с толку, ведь по сути обе эти команды выполняют очень похожие действия.

sudo apt purge package_name

Итак, зачем в Linux две одинаковые команды? Или чем-то они всё-таки отличаются. Тогда в чём разница? Давайте разбираться.

В чём разница между apt remove и apt purge?

И apt remove, и apt purge делают одно и то же – удаляют ненужные пакеты, но команда apt purge удаляет не только сам пакет, но и связанные с ним файлы конфигурации. Вот и вся разница. Ни одна из этих команд не затрагивает пользовательские файлы в домашнем каталоге.

Если же вы удалите программу командой apt remove, а затем снова её установите, вы заметите, что все ваши настройки остались нетронутыми.

Что удаляется при выполнении данных команд?

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

Вот список файлов, связанных с MPlayer:

Файлы, связанные с MPlayer

Теперь запустим команду apt remove:

Удаление MPlayer командой apt remove

И вот какие файлы остались в системе после удаления MPlayer:

Файлы, оставшиеся после удаления MPlayer

Как видите, файлы MPlayer остались в двух директориях: в /etc и в /home/abhishek.

Теперь снова установим MPlayer и удалим его командой apt purge:

Удаление MPlayer командой apt purge

Снова найдём файлы, связанные с MPlayer:

Файлы, оставшиеся после удаления MPlayer

Как видите, файлов MPlayer в каталоге /etc больше нет.

А как насчёт домашнего каталога пользователя? Удалит ли команда apt purge файлы, которые хранились в директории /home?Нет, не удалит. Но если хотите избавится и от них, сделать это придётся вручную. Правда, весят они довольно мало, и особого смысла их удалении нет.

Важно: далеко не все приложения сохраняют файлы конфигурации в директории /etc и домашнем каталоге /home.

Эффект от использования apt remove и apt purge

Теперь в качестве примера воспользуемся клиентом Discord. Устанавливать его будем из deb-файла, скаченного с официального сайта. Запускаем Discord, входим в учётную запись, затем удаляем Discord и устанавливаем снова из того же deb-файла. Теперь снова запускаем Discord, и происходит магия: входить в учётную запись уже не нужно, Discord и так вас помнит. Чудеса?

Хоть вы этого и не замечаете, некоторые программы обновляются совсем не так, как вы привыкли: сперва они полностью удаляются из вашей системы, а затем автоматически устанавливают новую версию. А поскольку файлы конфигурации остаются нетронутыми, никаких дополнительных действий от пользователя не требуется. Например, так работает уже обозначенный Discord и VirtualBox.

Если вы удаляете ненужное приложение командой apt remove, файлы конфигурации остаются в системе, и, если позже вы снова установите тот же пакет, настраивать его заново вам уже не придётся.

Вот только в некоторых случаях это вообще не то, чего вы хотите. Какой вообще смысл в том, чтобы удалять приложение, которое вы потом почти сразу переустановите? Скорее всего, что-то пошло не так, и, удаляя приложение, вы надеетесь сбросить и его настройки. А раз так, вам нужна совершенно другая команда – apt purge.

Удалит ли apt purge другие приложения с похожими названиями?

Удаляя пакет командой apt purge, вы заметите, что в терминале упоминается и удаление других пакетов с таким же названием – package-name*. То есть удалятся вообще все пакеты, название которых начинается также, как и то приложение, которое вы хотели удалить.

Команда apt purge может удалить и другие пакеты с похожим названием

Определённого ответа на вопрос «Почему это происходит?» я так и не нашёл. Но я провёл небольшой тест: установил пакеты espeak и espeak-ng, а затем удалил espeak командой apt purge. Теоретически вместе с ним из системы должен исчезнуть и espeak-ng.

На деле же espeak-ng почему-то остался нетронутым. То есть в системе есть какой-то механизм, защищающий её от удаления никак не связанных с программой пакетов.

Итак, какую команду использовать?

Команда apt purge не так популярна, как apt remove. И, по-моему, зачастую, удаляя ненужное приложение, вы пытаетесь сделать то, за что отвечает команда apt remove. А вот если своими действиями вы что-то сломали и теперь хотите сбросить настройки приложения, стоит воспользоваться командой apt purge.

И в том, и в другом случае удалять файлы конфигурации из домашнего каталога придётся вручную. Ну или можно воспользоваться командой apt autoremove, которая автоматически удалит оставшиеся зависимости.

Но в целом вопрос дискуссионный, и определённого ответа на него нет. А раз так, есть повод обсудить предпочтения в комментариях.

Абхишек Пракаш,
It’s FOSS
25 мая 2023

Comment