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

Я искал в сети такую ​​информацию и нашел разные командные строки, например:

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)

9 ответов

  • 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-команды могут быть использованы (расширенные) или инструменты GUI, такие как Muon, Synaptic, Software Center и т. д. Не существует единого "правильного" способа удаления приложений или выполнения других задач, взаимодействующих с управлением пакетами.

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

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

sudo apt-get remove application*

является следующим:

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

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

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

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

 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

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

sudo apt-get --purge autoremove packagename

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

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

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

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

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

sudo apt-get remove gedit*

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

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

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

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems.

Я получил несколько сообщений об ошибке при удалении пакета. Единственный способ, который я нашел, это сработало:

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.

Я просто хотел уточнить одну вещь, которая кажется здесь источником путаницы. dpkg Утилита не знает и не отслеживает зависимости пакетов по отношению друг к другу, что было большой причиной того, что apt был разработан, я верю. Вы можете прочитать об этом в разделе 8.6 на этой странице FAQ по Debian GNU/Linux - Инструменты управления пакетами Debian

  • С помощью apt: Если я хотел очистить пакет A, и у него есть зависимость, называемая пакетом B, а у пакета B не было других зависимых пакетов, то пакеты A и B будут удалены. Если пакет B DID имеет другие зависимые пакеты, то будет очищен только пакет A.

  • С dpkg: какая зависимость? Вы только что сказали мне, чтобы очистить проклятый
    пакет так вот что я сделал! Плохое планирование с вашей стороны не
    представляют собой чрезвычайную ситуацию с моей стороны.

С учетом сказанного, вот два однострочника, которые можно использовать для каждого метода очистки:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print $2}')

Удалить --dry-run выполнить фактическую операцию очистки вместо того, чтобы сообщать, какие действия она бы предприняла.

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

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

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

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

      apt-get remove --purge packagename
Другие вопросы по тегам