Каков правильный способ полностью удалить приложение?

423

Я искал сеть для такой информации и нашел разные командные строки, такие как:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

Итак, каков правильный путь? Нужно ли использовать этот «*»?

После этого я также нашел следующие команды:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
    
задан user48949 14.09.2012 в 21:54
источник

7 ответов

561
  • apt-get remove packagename

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

  • apt-get purge packagename или apt-get remove --purge packagename

    удалит около все в отношении пакета packagename , но не зависимости, установленные с ним при установке. Обе команды эквивалентны.

    Особенно полезно, когда вы хотите «начать все» с приложения, потому что вы испортили конфигурацию. Однако он не удаляет файлы конфигурации или данных, находящиеся в домашних каталогах пользователей, обычно в скрытых папках. Также нет простого способа удалить их.

  • apt-get autoremove

    удаляет потерянные пакеты, то есть установленные пакеты, которые раньше устанавливались как зависимые, но не более. Используйте это после удаления пакета с установленными зависимостями, которые вам больше не интересны.

  • aptitude remove packagename или aptitude purge packagename (аналогично)

    также попытается удалить другие пакеты, которые требуются packagename , но не требуются никакими оставшимися пакетами. Обратите внимание, что aptitude запоминает только информацию о зависимостях для установленных ею пакетов.

И еще много существует. Более низкие уровни dpkg -команды могут использоваться (расширенные) или инструменты графического интерфейса, такие как Muon, Synaptic, Software Center и т. Д. Нет единого «правильного пути» для удаления приложений или выполнения других задач, взаимодействующих с вашим управлением пакетами .

Список, который вы нашли, - это просто примеры. Удостоверьтесь, что вы понимаете значения и проверяете, что он хочет сделать, прежде чем принимать действие (вам нужно нажать Y , прежде чем он фактически выполнит действия, как было предложено).

Версия звездочки в вопросе вероятно неверна ; apt-get принимает регулярное выражение, а не шаблон glob в качестве оболочки. Итак, что происходит с

sudo apt-get remove application*

:

  1. Оболочка пытается развернуть application* , глядя на файлы в текущем каталоге. Если (как это обычно бывает), он ничего не находит, он возвращает шаблон шара неизмененным (предположим, что bash с поведением по умолчанию здесь --- zsh будет выходить из строя).

  2. apt-get удалит пакеты, имя которых содержит строку , которая удовлетворяет регулярному выражению application* , то есть applicatio , за которым следует произвольное число n : applicatio , application , applicationn , libapplicatio и т. д.

  3. Чтобы узнать, как это может быть опасно, попробуйте (без root для двойной безопасности) apt-get -s remove "wine*" ( -s будет имитировать вещь вместо этого) --- он скажет, что удалит все пакеты который имеет «выигрыш» от своего имени и зависимую, почти всю систему ...

Возможно, команда, которая имела в виду, действительно

 sudo apt-get remove "^application.*"

(обратите внимание на кавычки и точку), которые удалят все пакеты, имя которых начинается с application .

Эти команды

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

полностью выходят за рамки управления пакетами. Не удаляйте файлы, принадлежащие пакетам, без использования диспетчера пакетов! Он будет запутан и будет неправильным способом делать что-то.

Если вы не знаете, к какому пакету принадлежит файл, попробуйте следующее:

dpkg -S /path/to/file
    
ответ дан gertvdijk 14.09.2012 в 22:04
источник
79

Для Ubuntu 12.04 и, возможно, выше, правильный метод:

sudo apt-get --purge autoremove packagename

Как подробно описано здесь .

Не используйте packagename* , поскольку это может удалить непреднамеренные пакеты и вызвать больше проблем, чем решает. Или, если вам нужно, по крайней мере, запустить его с -s , --simulate , --dry-run , чтобы увидеть, что именно будет делать, не делая этого.

    
ответ дан Kurtosis 20.11.2013 в 20:01
источник
15

Вы можете использовать эту команду:

sudo apt-get purge --auto-remove packagename

Он очистит необходимые пакеты вместе с зависимостями, которые установлены с этими пакетами. Опция --auto-remove (являющаяся псевдонимом autoremove ) работает аналогично sudo apt-get autoremove . Используя эту команду, мы можем запустить одну команду:

sudo apt-get purge --auto-remove packagename

Вместо:

sudo apt-get purge packagename
sudo apt-get autoremove
    
ответ дан pl_rock 16.09.2015 в 20:08
источник
6

Вы можете безопасно использовать sudo apt-get remove --purge application или sudo apt-get remove applications 99% времени. Когда вы используете флаг purge , он просто удаляет все файлы конфигурации. Что может быть или не быть тем, что вы хотите, в зависимости от того, хотите ли вы переустановить указанное приложение. % Co_de% будет соответствовать всем приложениям, начинающимся с application* , которые обычно являются плагинами, дополнительными функциями и т. Д. Основного приложения, которое вы удаляете. т. е.

sudo apt-get remove gedit*

удалят application , gedit и gedit-plugins . Как правило, это не обязательно делать, потому что большинство подключаемых модулей / связанных программ зависят от основного приложения и автоматически удаляются (или помечены для удаления) при удалении основного приложения.

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

    
ответ дан reverendj1 14.09.2012 в 22:05
источник
5

У меня есть сообщения об ошибках, удаляющие пакет, единственный способ, которым я нашел, что это было:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

Я обнаружил, что хотя использование только

dpkg --remove --force-remove-reinstreq package

не удаляет пакет, он показывает мне правильный путь к файлу для перемещения с помощью:

mv /var/lib/dpkg/info/package.* /tmp/

Заменить пакет с вашим именем приложения. Используйте sudo в Ubuntu, станьте root в Debian.

    
ответ дан DangerFireBob 26.02.2015 в 09:26
источник
1

Это зависит от приложения, которое вы хотите удалить. Всегда проверяйте его зависимости перед выдачей команды yes. Когда вы удаляете что-то по командной строке, оно иногда отображает несколько библиотек, которые больше не нужны. Их можно удалить с помощью apt-get autoremove.

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

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

ответ дан gustavokrm 14.09.2012 в 22:10
источник
1

Я нашел эту команду в Интернете.

dpkg --purge --force-depends application

Ссылка .

    
ответ дан vrcmr 14.09.2012 в 22:10
источник

Ознакомьтесь с другими вопросами по меткам