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

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

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)
550
задан 23.06.2015, 23:51

8 ответов

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

sudo apt-get --purge autoremove packagename

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

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

112
ответ дан 21.10.2019, 09:59
  • 1
    это - корректный ответ, короткий и краткий: – Gigi 23.08.2016, 20:53

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

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
20
ответ дан 21.10.2019, 09:59
  • 1
    Хотя you' корректное ре, но можно также использовать sudo apt-get --purge autoremove packagename. Та же 1 команда здесь – Hans Passant 23.08.2016, 21:03
  • 2
    Полное может управлять также быть записанным как apt-get autoremove --purge вместо apt-get purge --auto-remove? – Sandeep 07.11.2016, 20:41
  • 3
    Кто-то может стрелять в меня? – Eric Lippert 26.12.2017, 20:17

Вы можете безопасно использовать 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. Как правило, в этом нет необходимости, поскольку большинство плагинов / связанных программ зависят от основного приложения и будут автоматически удалены (или помечены для удаления) при удалении основного приложения.

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

7
ответ дан 21.10.2019, 09:59

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

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.

5
ответ дан 21.10.2019, 09:59

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

dpkg --purge --force-depends application

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

3
ответ дан 21.10.2019, 09:59

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

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

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

1
ответ дан 21.10.2019, 09:59
  • 1
    Я думаю, что целая система пакета Debian была специально разработана к не , удаляют пакет, если существуют другие пакеты, зависящие от нее. Вас можно (услужливо) спросить, хотите ли Вы удалить все зависимые пакеты также, и это - то, где Вы должны на самом деле читать список пакета, собирающегося быть удаленными, который является , я думаю что you' ре, пытающееся сказать. – ColossalChris 25.02.2015, 13:07

Я просто хотел уточнить одну вещь, которая кажется здесь источником путаницы. Утилита dpkg не знает и не отслеживает зависимости пакетов по отношению друг к другу, что, по-моему, было большой причиной того, что apt был разработан. Вы можете прочитать об этом в разделе 8.6 на этой странице Часто задаваемые вопросы о 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 для выполнения фактической операции очистки вместо сообщения о том, какие действия это заняло бы.

1
ответ дан 21.10.2019, 09:59
  • 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 и т. Д. Не существует единого «правильного» способа удаления приложений или выполнения других задач, взаимодействующих с управлением пакетами. . [+1162]

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

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

sudo apt-get remove application*

так:

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

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

  3. Чтобы увидеть, как это может быть опасно, попробуйте (без рута для двойной безопасности) 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
708
ответ дан 21.10.2019, 09:59
  • 1
    - опция чистки также удобна при попытке полностью удалить любые остающиеся зависимости включая их файлы конфигурации: apt-get-autoremove --purge It' s также важный, чтобы отметить, что конфигурационные файлы в Вашем корневом каталоге незатронуты - опция чистки. Они необходимо будет удалить вручную. – supercat 15.09.2012, 01:16
  • 2
    Здесь была ошибка: склонный - добираются, принимает РЕ, не шарики; настолько склонный - добираются, удаляют пакет*, удалит все пакеты, который запускается с pac, сопровождаемого нулем или большим количеством k..., который обычно неожидан. Я отредактировал anser. См. также askubuntu.com/questions/210976/… – Joren 09.10.2014, 14:12
  • 3
    Я думаю, что этот ответ больше не точен. Или apt remove -s texlive* или apt-get возвратные линии дубликата такой как Note, selecting 'texlive-font-utils' for glob 'texlive*' (допущение, что они действительно принимают шарики), сопровождаемый обычным Package 'texlive-common' is not installed, so not removed, и наконец Remv строки, такой как Remv texlive-font-utils [2015.20160320-1] [...]. – Anthony Pegram 12.06.2017, 18:34
  • 4
    @JonathanY. Вы также выбрали бы не - установленные пакеты. Так или иначе могли Вы задавать НОВЫЙ вопрос и разрабатывать немного больше подробно, что Ваша ситуация находится в вопросе. Я был бы рад посмотреть на него:) – Justin Niessner 13.06.2017, 23:56
  • 5
    I' m, не задавая новый вопрос. I' m указывающий на возможное изменение, так как этот ответ был сделан, который делает некоторые детали неправильными. К остроумию казалось бы, что apt-get remove packa* действительно берет шарик packa* вместо того, чтобы смотреть на него как regex: это соответствует package, но не pack. – Gigi 14.06.2017, 00:18

Теги

Похожие вопросы