Jaký je správný způsob úplné odebrání aplikace?

483

Hledal jsem síť pro takové informace a našel jsem různé příkazové řádky, jako jsou tyto:

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*

Takže, jaký je správný způsob? Je nutné použít "*"?

Poté jsem také tyto příkazy našel:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)
    
dané user48949 14.09.2012 23:54

8 odpovědí

647
  • apt-get remove packagename

    odstraní binární soubory, ale ne konfigurační nebo datové soubory balíčkupackagename. Zálohy budou také instalovány bez instalace.

  • apt-get purge packagename neboapt-get remove --purge packagename

    odebere vše týkající se balíčkupackagename, ale ne závislostí nainstalovaných s ním při instalaci. Oba příkazy jsou ekvivalentní.

    Zvláště užitečné, když chcete aplikaci spustit po celou dobu, protože jste konfigurovali konfiguraci. Neodstraňuje však konfigurační nebo datové soubory umístěné v domovských adresářů uživatelů, obvykle v skrytých složkách. Neexistuje snadný způsob, jak je odstranit.

  • apt-get autoremove

    odstraňuje osamocené balíčky, tj. nainstalované balíčky, které byly instalovány jako závislost, ale již nejsou. Použijte to po odstranění balíčku, který má nainstalované závislosti, o které už nemáte zájem.

  • aptitude remove packagename neboaptitude purge packagename (podobně)

    se také pokusí odstranit další balíčky, které byly vyžadovány vpackagename, ale nevyžadují žádné zbývající balíčky. Všimněte si, žeaptitude si pamatuje informace o závislostech pouze pro nainstalované balíčky.

Existuje mnoho dalších. Nízkoúrovňovédpkg -commands mohou být použity (pokročilé) nebo GUI nástroje jako Muon, Synaptic, Software Center atd. Není jediný "správný způsob" odebrání aplikací nebo provádění jiných úkolů, .

Seznam, který jste našli, jsou jen příklady. Ujistěte se, že chápete významy a vyzkoušejte, co chcete udělat před přijetím akce (je třeba stisknoutY předtím, než skutečně provede akce podle návrhu).

Hvězdička v otázce je pravděpodobně špatná ; apt-get akceptuje regulární výraz a ne globální vzorek jako shell. Takže co se stane s

sudo apt-get remove application*

je následující:

  1. Skořepina se pokusí rozšířitapplication* při prohlížení souborů v aktuálním adresáři. Pokud (jak je to normálně) nenalezne nic, vrátí globální vzorek nezměněný (předpokládá sebash s výchozím chováním zde ---zsh bude chybět).

  2. apt-get odstraní balíčky, jejichž jméno obsahuje řetězec , který vyhovuje regulárnímu výrazuapplication*, tjapplicatio následovaný libovolným počtemn applicatio,application,applicationn,libapplicatio atd.

  3. Chcete-li zjistit, jak to může být nebezpečné, zkuste (bez root pro dvojitou bezpečnost)apt-get -s remove "wine*" (-s bude simulovat věc namísto toho) --- to řekne, že odebere všechny balíčky která má "vítězství" ve svém jménu a závislé, téměř celý systém ...

Pravděpodobně příkaz, který byl určen, je opravdu

 sudo apt-get remove "^application.*"

(všimněte si uvozovek a teček), které odstraní všechny balíčky, jejichž jméno začíná sapplication.

Tyto příkazy

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.

jsou zcela mimo rozsah správy balíčků. Neodstraňujte soubory, které patří do balíčků bez použití správce balíčků! Bude se zmást a je špatný způsob, jak dělat věci.

Pokud nevíte, do kterého balíčku patří soubor, zkuste to:

dpkg -S /path/to/file
    
odpověděl gertvdijk 15.09.2012 00:04
94

Pro Ubuntu 12.04 a možná vyšší je správná metoda:

sudo apt-get --purge autoremove packagename

Podrobné zde .

Nepoužívejtepackagename*, protože můžete odstranit neúmyslné balíčky a způsobit další problémy, než řeší. Nebo je-li to nutné, nejprve spusťte nejprve s příznakem-s,--simulate,--dry-run, abyste viděli přesně, co bude dělat, aniž byste to udělali.

    
odpověděl Kurtosis 20.11.2013 21:01
17

Tento příkaz můžete použít:

sudo apt-get purge --auto-remove packagename

Vyčistí požadované balíčky spolu se závislostmi, které jsou nainstalovány s těmito balíčky. Možnost--auto-remove (což je aliasautoremove) funguje podobně jakosudo apt-get autoremove. Pomocí tohoto příkazu můžeme spustit jeden příkaz:

sudo apt-get purge --auto-remove packagename

Namísto:

sudo apt-get purge packagename
sudo apt-get autoremove
    
odpověděl pl_rock 16.09.2015 22:08
7

Můžete bezpečně použítsudo apt-get remove --purge application nebosudo apt-get remove applications 99% času. Pokud používáte příznakpurge, jednoduše odstraní všechny konfigurační soubory. Který může nebo nemusí být to, co chcete, v závislosti na tom, zda chcete tuto aplikaci znovu nainstalovat. % Co_kde% bude odpovídat všem aplikacím začínajícím sapplication*, což jsou obvykle pluginy, další funkce atd. Hlavní aplikace, kterou odstraňujete. tj.

sudo apt-get remove gedit*

odstraníapplication,gedit agedit-plugins. Obvykle to není nutné, protože většina pluginů / přidružených programů závisí na hlavní aplikaci a při odinstalaci hlavní aplikace bude automaticky odstraněna (nebo označena pro odstranění).

Váš poslední příkaz je pouze odstranit zbytky z aplikací, o kterých je známo, že mají chaotické odinstalační programy, a právě odstraňuje zbytky aplikace.

    
odpověděl reverendj1 15.09.2012 00:05
5

Mám nějaké chybové zprávy o odstranění balíčku, jediný způsob, jak jsem zjistil, že to fungovalo, bylo:

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

Zjistil jsem, že i když používám pouze

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

neodstraní balík, který mi ukazuje správnou cestu k souboru, který se má pohybovat:

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

Náhradní balíček s názvem aplikace. Použijte sudo v Ubuntu, stávej se rootem v Debianu.

    
odpověděl DangerFireBob 26.02.2015 10:26
3

Našel jsem tento příkaz na internetu.

dpkg --purge --force-depends application

Odkaz .

    
odpověděl vrcmr 15.09.2012 00:10
1

Záleží na aplikaci, kterou chcete odebrat. Vždy si ověřte jeho závislost před vydáním příkazu yes. Když něco odeberete příkazovým řádkem, někdy se zobrazí několik knihoven, které již nejsou potřebné. Ty lze odstranit pomocí příkazu apt-get autoremove.

Dejte si pozor, abyste pomocí příkazů jako sudo apt-get remove --purge applicationname mohli odstranit některé závislosti, které jsou potřebné jinými aplikacemi a jako takové by mohly přerušit váš systém.

Chcete-li to udělat bezpečněji, můžete jej vždy odstranit pouze pomocí softwarového centra nebo apt-get remove applicationname. Pokud závislost již není zapotřebí, udělejte apt-get autoremove později.

    
odpověděl gustavokrm 15.09.2012 00:10
1

Chtěl jsem jen objasnit jednu věc, která se zdá být zdrojem zmatku. Nástrojdpkg neví o závislostech balíků nebo jejich sledování ve vztahu k sobě navzájem, což byl velký důvod, proč seapt vyvinul. O tom si můžete přečíst v sekci 8.6 na této stránce Debian GNU / Linux FAQ - Nástroje pro správu balíků Debianu

  • S apt: Pokud jsem chtěl vyčistit balíček A a má závislost nazývaný balíček B a balíček B neměl žádné jiné závislé balíčky balíček A a B budou vyčištěny. Pokud balíček B DID má jiné závislé balíčky pak bude odstraněn pouze balíček A.

  • S dpkg: Jaká závislost? Právě jsi mi řekl, abych vyčistil ten zatracený život balíček, takže jsem to udělal! Špatné plánování na vaší straně není představují nouzi z mé strany.

Tímto se říká, že zde jsou dvě jednoramenné vložky, které lze použít pro každou metodu čištění:

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 }')

Odstraňte--dry-run k provedení skutečné operace vyčištění namísto hlášení toho, co by provedlo.

    
odpověděl Travis R. 24.08.2018 01:32