Prohledal jsem takové informace na síti a našel 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*
Jaký je tedy správný způsob? Je nutné použít toto „*“?
Poté jsem také našel tyto příkazy:
Sudo updatedb
Sudo locate application
Sudo rm -rf (file/folder name)
apt-get remove packagename
odstraní binární soubory, ale ne konfigurační nebo datové soubory balíčku packagename
. Zůstanou také nainstalované závislosti na době instalace nedotčeny.
apt-get purge packagename
nebo apt-get remove --purge packagename
odstraní asi vše týkající se balíčku packagename
, ale ne závislostí nainstalovaných při instalaci. Oba příkazy jsou rovnocenné.
Zvláště užitečné, když chcete „začít znovu“ s aplikací, protože jste zmatili konfiguraci. Neodstraňuje však konfigurační ani datové soubory uložené v domovských adresářích uživatelů, obvykle ve skrytých složkách. Neexistuje žádný snadný způsob, jak je odstranit také.
apt-get autoremove
odstraní osamocené balíčky, tj. nainstalované balíčky, které byly dříve instalovány jako závislost, ale již nejsou. Použijte to po odstranění balíčku, který měl nainstalované závislosti, o které už nemáte zájem.
aptitude remove packagename
nebo aptitude purge packagename
(podobně)
se také pokusí odebrat další balíčky, které byly vyžadovány programem packagename
, ale nejsou vyžadovány žádnými zbývajícími balíčky. Všimněte si, že aptitude
si pamatuje pouze informace o závislostech pro balíčky, které nainstaloval.
A mnoho dalších existuje. Příkazy dpkg
- na nižší úrovni lze použít (pokročilé) nebo nástroje GUI, jako je Muon, Synaptic, Software Center atd. Neexistuje jediný „správný způsob“ odebírání aplikací nebo provádění jiných interakcí s úkoly s vaší správou balíčků.
Seznam, který jste našli, je pouze příkladem. Před přijetím akce se ujistěte, že rozumíte významům a vyzkoušejte, co chce dělat (před provedením akcí podle návrhu musíte stisknout tlačítko Y
).
Verze hvězdičky v otázce je pravděpodobně nesprávná; apt-get
přijímá regulární výraz a ne globální vzorec jako Shell. Tak co se stane
Sudo apt-get remove application*
je následující:
Shell se snaží rozšířit application*
při pohledu na soubory v aktuálním adresáři. Pokud (jak je tomu normálně) nic nenajde, vrátí globální vzorec nezměněný (předpokládá se, že bash
s výchozím chováním --- zsh
dojde k chybě).
apt-get
odstraní balíčky, jejichž název obsahuje řetězec, který vyhovuje regulárnímu výrazu application*
, tj. applicatio
následované libovolným počtem n
: applicatio
, application
, applicationn
, libapplicatio
, atd.
Chcete-li vidět, jak to může být nebezpečné, zkuste (bez root pro dvojitou bezpečnost) apt-get -s remove "wine*"
(-s
místo toho to bude simulovat) --- řekne, že odebere všechny balíčky, které mají ve svém názvu „win“ a závislý, téměř celý systém ...
Pravděpodobně příkaz, který měl být, je opravdu
Sudo apt-get remove "^application.*"
(poznamenejte si uvozovky a tečku), které odstraní všechny balíčky, jejichž název začíná na application
.
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 patřící k balíčkům bez použití správce balíčků! Bude to zmatené a je to špatný způsob, jak věci dělat.
Pokud nevíte, do kterého balíčku soubor patří, zkuste toto:
dpkg -S /path/to/file
Pro Ubuntu 12.04 a možná vyšší je správná metoda:
Sudo apt-get --purge autoremove packagename
Podrobně zde .
Nepoužívat packagename*
protože to může odstranit nechtěné balíčky a způsobit více problémů, než to vyřeší. Nebo pokud musíte, alespoň to spusťte pomocí -s
, --simulate
, --dry-run
označte nejprve, abyste přesně viděli, co bude dělat, aniž byste to udělali.
Tento příkaz můžete použít:
Sudo apt-get purge --auto-remove packagename
Vymaže požadované balíčky spolu se závislostmi nainstalovanými s těmito balíčky. Možnost --auto-remove
(Jako alias autoremove
) funguje podobně jako Sudo apt-get autoremove
. Pomocí tohoto příkazu můžeme spustit jediný příkaz:
Sudo apt-get purge --auto-remove packagename
Namísto:
Sudo apt-get purge packagename
Sudo apt-get autoremove
Můžete bezpečně použít Sudo apt-get remove --purge application
nebo Sudo apt-get remove applications
99% času. Pokud použijete příznak purge
, odstraní také jednoduše všechny konfigurační soubory. Což může, ale nemusí být to, co chcete, v závislosti na tom, zda chcete uvedenou aplikaci přeinstalovat. The application*
bude odpovídat všem aplikacím, které začínají application
, což jsou obvykle pluginy, další funkce atd. hlavní aplikace, kterou odstraňujete. tj.
Sudo apt-get remove gedit*
odstraní gedit
, gedit-plugins
a gedit-common
. Obvykle to není nutné, protože většina zásuvných modulů/přidružených programů závisí na hlavní aplikaci a při odinstalování hlavní aplikace bude automaticky odebrána (nebo označena k odstranění).
Posledním příkazem je pouze odstranění zbytků z aplikací, o kterých je známo, že mají chaotický odinstalační program, a pouze odstranění veškerých zbytků aplikace.
Při odstraňování balíčku jsem dostal několik chybových zpráv, jediný způsob, jak jsem zjistil, že fungoval, bylo toto:
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íček, který mi ukazuje správnou cestu k souboru, s nímž se pohybuji:
mv /var/lib/dpkg/info/package.* /tmp/
Nahraďte balíček názvem aplikace. Použijte Sudo v Ubuntu, staňte se rootem v Debianu.
Tento příkaz jsem našel na internetu.
dpkg --purge --force-depends application
http://www.debian-administration.org/article/Reinstal_packages_to_fix_problems .
Chtěl jsem jen objasnit jednu věc, která se zde zdá být zdrojem zmatku. Nástroj dpkg
neví ani nesleduje závislosti balíčků ve vztahu k sobě, což byl velký důvod, proč věřím, že byl vyvinut program apt
. Můžete si o tom přečíst v sekci 8.6 na této stránce Debian GNU/Linux FAQ - Nástroje pro správu balíků Debian
S apt: Pokud jsem chtěl vymazat balíček A a má závislost nazývanou balíček B a balíček B neměl žádné další závislé balíčky, pak balíček A a B bude vymazán. Pokud má balíček B DID) další závislé balíčky, bude vymazán pouze balíček A.
S dpkg: Jaká závislost? Právě jsi mi řekl, abych tu zatracenou očistil
balíček, tak jsem to udělal! Špatné plánování z vaší strany ne
představují z mé strany nouzový stav.
Zde jsou dvě jednoplášťové vložky, které lze použít pro každou proplachovací metodu:
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}')
Odstranit --dry-run
provést skutečnou operaci proplachování namísto hlášení, jaké akce by provedl.
Závisí to na aplikaci, kterou chcete odebrat. Před vydáním příkazu yes vždy zkontrolujte jeho závislosti. Když něco odstraníte příkazovým řádkem, někdy se ukáže hrstka knihoven, které již nepotřebujete. Tyto mohou být odstraněny pomocí apt-get autoremove.
Dejte si pozor, že pomocí příkazů, jako je Sudo apt-get remove --purge název_aplikace, může odstranit některé závislosti, které jsou vyžadovány jinými aplikacemi, a jako takové může poškodit váš systém.
Pokud to chcete udělat bezpečnějším způsobem, můžete jej kdykoli odebrat pouze pomocí softwarového centra nebo pomocí příkazu apt-get remove applicationname. Pokud závislosti již nepotřebujete, vydejte apt-get autoremove později.