Как правильно полностью удалить приложение?
Я искал в сети такую информацию и нашел разные командные строки, например:
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*
является следующим:
Оболочка пытается расшириться
application*
просматривая файлы в текущем каталоге. Если (как это обычно бывает) он ничего не находит, он возвращает шаблон глобуса без изменений (предположим,bash
с поведением по умолчанию здесь ---zsh
будет ошибка).apt-get
удалит пакеты, имя которых содержит строку, удовлетворяющую регулярному выражениюapplication*
, то есть,applicatio
с последующим произвольным числомn
:applicatio
,application
,applicationn
,libapplicatio
, так далее.Чтобы увидеть, как это может быть опасно, попробуйте (без рута для двойной безопасности)
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