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

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

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)
667
задан 23 June 2015 в 23:51

9 ответов

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

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
26
ответ дан 23 June 2015 в 23:51

Ubuntu 12.04 და შესაძლოა უფრო მაღალი ვერსიისთვის, სწორი მეთოდია:

sudo apt-get --purge autoremove packagename

დაწვრილებით აქ .

ნუ გამოიყენებთ პაკეტის სახელს * , რადგან ამან შეიძლება წაშალოთ არასასურველი პაკეტები და უფრო მეტი პრობლემა გამოიწვიოს ვიდრე გადაწყვეტს. ან თუ მოგიწევთ, მინიმუმ გაუშვით -s , - სიმულაცია , - მშრალი გაშვებული დროშით, რომ ნახოთ ზუსტად რას გააკეთებს ამის გარეშე.

140
ответ дан 23 June 2015 в 23:51

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

sudo apt-get remove gedit*

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

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

7
ответ дан 23 June 2015 в 23:51

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

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
ответ дан 23 June 2015 в 23:51

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

dpkg --purge --force-depends application

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

4
ответ дан 23 June 2015 в 23:51
  • apt-get delete packagename

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

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

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

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

  • apt-get autoremove

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

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

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

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

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

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

sudo apt-get remove application*

следующим:

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

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

  3. Чтобы посмотреть, как это может быть опасно, попробуйте (без root для двойной безопасности) apt-get -s удалит "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
794
ответ дан 23 June 2015 в 23:51

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

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

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

1
ответ дан 23 June 2015 в 23:51

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

  • With apt: Если бы я хотел очистить пакет A, и у него есть зависимость называется пакетом Б, и у пакета Б не было других зависимых пакетов, то есть пакет А и Б будет очищен. Если у пакета 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}')
    

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

2
ответ дан 23 June 2015 в 23:51

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

apt-get remove --purge packagename
0
ответ дан 5 January 2021 в 23:35

Другие вопросы по тегам:

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