Vraag Wat is de juiste manier om een ​​applicatie volledig te verwijderen?


Ik heb op het net naar dergelijke informatie gezocht en heb verschillende opdrachtregels gevonden, zoals deze:

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*

Dus wat is de juiste manier? Is het nodig om die "*" te gebruiken?

Daarna vond ik ook deze opdrachten:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

478
2017-09-14 21:54


oorsprong


Sommige van uw vragen kunnen in deze post worden beantwoord: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application* kan soms onverwachte resultaten opleveren, bijvoorbeeld als u een bestand in de huidige map met de naam application_information, de shell zou het uitbreiden voordat het is doorgegeven aan apt-get. Als dit gebeurt en je de letterlijke asterisk wilt, kun je gebruiken application\* of 'application*' - Izkata
application* is nog gevaarlijker als er geen bestanden in de huidige map staan: apt-get gebruikt reguliere expressies, geen glob-patronen. Mensen hebben bijna het hele systeem weggevaagd met proberen te verwijderen wine*. - Andrea Corbellini
Kun je een antwoord accepteren? Om mensen dankbaar te zijn die jou hebben beantwoord. - m-ric
Geen van beide application* noch application\* is veilig! citeren * met \ of '  ' enkel en alleen toeneemt het risico, ervoor zorgen * wordt doorgegeven zoals het is apt-get (hoewel het meestal toch wel zo is!), oorzaken apt-get om het argument als een regex te interpreteren. In een regex * betekent "nul of meer van het voorgaande teken". Een veel voorkomende vorm van de fout is om de installatie ongedaan te maken wine*, alle pakketten verwijderen met win (niet wine, win) overal in hun naam en alle pakketten afhankelijk van een van hen. Zien deze uitleg en mogelijke oplossingen. @Izkata - Eliah Kagan


antwoorden:


  • apt-get remove packagename

    verwijdert de binaire bestanden, maar niet de configuratie- of gegevensbestanden van het pakket packagename. Het laat ook afhankelijkheden bij de installatie onaangetast.

  • apt-get purge packagename of apt-get remove --purge packagename

    zal ongeveer verwijderen alles met betrekking tot het pakket packagename, maar niet de bijbehorende afhankelijkheden bij de installatie. Beide opdrachten zijn equivalent.

    Vooral handig wanneer u helemaal opnieuw wilt beginnen met een toepassing omdat u de configuratie hebt verpest. Het verwijdert echter geen configuratie- of gegevensbestanden die zich in de homedirectory van gebruikers bevinden, meestal in verborgen mappen daar. Er is geen gemakkelijke manier om die ook verwijderd te krijgen.

  • apt-get autoremove

    verwijdert zwevende pakketten, d.w.z. geïnstalleerde pakketten die voorheen als een afhankelijkheid werden geïnstalleerd, maar niet langer zijn. Gebruik dit na het verwijderen van een pakket met afhankelijkheden waarin u niet langer geïnteresseerd bent.

  • aptitude remove packagename of aptitude purge packagename (hetzelfde)

    zal ook proberen andere pakketten te verwijderen die vereist waren door packagename maar worden niet vereist door resterende pakketten. Let daar op aptitude onthoudt alleen afhankelijkheidsinformatie voor pakketten die het heeft geïnstalleerd.

En er zijn er nog veel meer. Lager niveau dpkg-commando's kunnen worden gebruikt (geavanceerd), of GUI-tools zoals Muon, Synaptic, Software Center, enz. Er is geen enkele 'juiste manier' om applicaties te verwijderen of andere taken uit te voeren die interageren met uw pakketbeheer.

De lijst die u hebt gevonden zijn slechts voorbeelden. Zorg ervoor dat u de betekenis begrijpt en probeer wat het wil doen voordat u de actie accepteert (u moet op drukken Y voordat het daadwerkelijk de acties uitvoert zoals voorgesteld).

De asterisk-versie in de vraag is waarschijnlijk verkeerd; apt-get accepteert een reguliere expressie en geen glob-patroon als de shell. Dus wat gebeurt er met

sudo apt-get remove application*

is de volgende:

  1. De schelp probeert uit te breiden application* kijken naar de bestanden in de huidige map. Als (zoals normaal het geval is) het niets vindt, retourneert het het glob-patroon ongewijzigd (veronderstel bash met standaardgedrag hier --- zsh zal foutmelding geven).

  2. apt-get verwijdert de pakketten waarvan de naam bevat een string dat voldoet aan de reguliere expressie application*, dat is, applicatio gevolgd door een willekeurig aantal n: applicatio, application, applicationn, libapplicatio, enz.

  3. Om te zien hoe dit gevaarlijk kan zijn, probeer (zonder root voor dubbele veiligheid) apt-get -s remove "wine*" (-s zal het ding simuleren in plaats van het te doen) --- het zal zeggen dat het alle pakketten gaat verwijderen die "win" in hun naam hebben en het afhankelijke, bijna het hele systeem ...

Waarschijnlijk is het commando dat werd bedoeld echt

 sudo apt-get remove "^application.*"

(let op de aanhalingstekens en de punt) die alle pakketten waarvan de naam begint, verwijdert application.

Deze commando's,

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.

vallen volledig buiten het bereik van het pakketbeheer. Verwijder geen bestanden die bij pakketten horen zonder de pakketbeheerder te gebruiken! Het raakt in de war en is de fout manier om dingen te doen.

Als je niet weet tot welk pakket een bestand behoort, probeer dit dan:

dpkg -S /path/to/file

638
2017-09-14 22:04



De optie - purge is ook handig wanneer u alle resterende afhankelijkheden, inclusief hun configuratiebestanden, volledig wilt verwijderen: apt-get-autoremove --purge  Het is ook belangrijk op te merken dat configuratiebestanden in je thuismap niet worden beïnvloed door de optie --purge. Deze moet je handmatig verwijderen. - Glutanimate
Er is hier een fout opgetreden: apt-get accepteert RE, geen klodders; zo apt-get remove pack * verwijdert alle pakketten die met pac beginnen gevolgd door nul of meer k ... wat normaal onverwacht is. Ik heb de anser bewerkt. Zie ook askubuntu.com/questions/210976/... - Rmano
Ik denk dat dit antwoord niet langer juist is. Een van beide apt remove -s texlive* of zijn apt-get tegenwaarde retourregels zoals Note, selecting 'texlive-font-utils' for glob 'texlive*' (wat inhoudt dat ze inderdaad globs accepteren), gevolgd door het gebruikelijke Package 'texlive-common' is not installed, so not removed, en tenslotte Remv lijnen, zoals Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
@JonathanY. U zou ook niet-geïnstalleerde pakketten selecteren. Hoe dan ook, kun je alsjeblieft een NIEUWE vraag stellen en meer gedetailleerd uitwerken wat je situatie in de vraag is. Ik zou het graag willen bekijken :) - gertvdijk
Ik stel geen nieuwe vraag. Ik wijs op een mogelijke wijziging sinds dit antwoord is gemaakt waardoor sommige details onjuist zijn. Met andere woorden, het lijkt erop dat apt-get remove packa* neemt inderdaad de glob packa* in plaats van ernaar te kijken als regex: het komt overeen package maar niet pack. - Jonathan Y.


Voor Ubuntu 12.04 en misschien hoger, is de juiste methode:

sudo apt-get --purge autoremove packagename

Zoals gedetailleerd hier.

Gebruik niet packagename* omdat dit onbedoelde pakketten kan verwijderen en meer problemen kan veroorzaken dan het oplost. Of als je moet, voer het dan tenminste uit met een -s, --simulate, --dry-run vlag eerst om precies te zien wat het zal doen zonder het te doen.


92
2017-11-20 20:01



dit is het juiste antwoord, kort en bondig: - Anwar


U kunt deze opdracht gebruiken:

sudo apt-get purge --auto-remove packagename

Het verwijdert de vereiste pakketten samen met de afhankelijkheden die met die pakketten zijn geïnstalleerd. De --auto-remove optie (een alias van autoremove) werkt vergelijkbaar met sudo apt-get autoremove. Door deze opdracht te gebruiken, kunnen we een enkele opdracht uitvoeren:

sudo apt-get purge --auto-remove packagename

In plaats van:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



Hoewel je gelijk hebt, maar ook kan gebruiken sudo apt-get --purge autoremove packagename. Dezelfde opdracht 1 hier - Anwar
Kan het volledige commando ook worden geschreven als apt-get autoremove --purge in plaats van apt-get purge --auto-remove ? - felwithe
Kan iemand me alsjeblieft neerschieten? - Martin Andersson


Je kunt veilig gebruiken sudo apt-get remove --purge application of sudo apt-get remove applications 99% van de tijd. Wanneer u de purge vlag, verwijdert het gewoon alle configuratiebestanden. Wat wel of niet is wat je wilt, afhankelijk van of je die app opnieuw wilt installeren. De application* zal overeenkomen met alle applicaties die beginnen application, die meestal plug-ins, extra functies, enzovoort zijn van de hoofdtoepassing die u verwijdert. d.w.z.

sudo apt-get remove gedit*

zou verwijderen gedit, gedit-plugins en gedit-common. Meestal is dit niet nodig, omdat de meeste plug-ins / bijbehorende programma's afhankelijk zijn van de hoofdtoepassing en automatisch worden verwijderd (of gemarkeerd voor verwijdering) wanneer u de hoofdtoepassing verwijdert.

Uw laatste opdracht is alleen maar om restjes te verwijderen van toepassingen waarvan bekend is dat ze rommelige verwijderaars hebben, en het verwijdert alleen eventuele restanten van de toepassing.


7
2017-09-14 22:05





Ik kreeg een aantal foutmeldingen bij het verwijderen van een pakket, de enige manier die ik vond dat werkte was dit:

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

Ik vond dat hoewel alleen gebruiken

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

verwijdert het pakket niet en toont me het juiste pad naar het bestand om mee te verplaatsen:

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

Vervang het pakket door uw applicatie naam. Gebruik sudo in Ubuntu, word root in Debian.


5
2018-02-26 09:26





Ik vond dit commando op internet.

dpkg --purge --force-depends application

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


3
2017-09-14 22:10





Het hangt af van de toepassing die u wilt verwijderen. Controleer altijd de afhankelijkheden voordat u het ja-commando geeft. Wanneer u iets verwijdert op een opdrachtregel, toont het soms een handvol bibliotheken die niet langer nodig zijn. Deze kunnen worden verwijderd met apt-get autoremove.

Pas op dat door het gebruik van commando's zoals sudo apt-get remove --purge applicationname sommige afhankelijkheden die nodig zijn voor andere applicaties kunnen verwijderen en daardoor uw systeem kunnen breken.

Als u het op een veiliger manier wilt doen, kunt u het altijd verwijderen met alleen het softwarecentrum of apt-get remove applicationname. Als de afhankelijkheden niet meer nodig zijn, geeft u apt-get autoremove later uit.


1
2017-09-14 22:10



Ik denk dat het hele Debian-pakket specifiek is ontworpen voor niet verwijder een pakket als er andere pakketten van afhankelijk zijn. U wordt mogelijk (behulpzaam) gevraagd of u ook alle afhankelijke pakketten wilt verwijderen, en dat is waar u eigenlijk zou moeten zijn lezen de lijst met pakketten die moeten worden verwijderd, namelijk I denk wat je probeert te zeggen. - Xen2050


Ik wilde alleen iets verduidelijken dat hier een bron van verwarring lijkt te zijn. De dpkgutility kent de afhankelijkheden van pakketten niet in relatie tot elkaar, wat een belangrijke reden was apt was ontwikkeld geloof ik. Je kunt erover lezen in sectie 8.6 op deze pagina Veelgestelde vragen over Debian GNU / Linux - De Debian-pakketten voor pakketbeheer

  • Met apt: als ik pakket A wil opschonen, en het heeft een afhankelijkheid pakket B genoemd, en pakket B had toen geen andere afhankelijke pakketten pakket A en B worden gewist. Als pakket B DID anders heeft pakketten, dan wordt alleen pakket A verwijderd.

  • Met dpkg: welke afhankelijkheid? Je zei net dat ik de verdomde moest zuiveren
    pakket dus dat is wat ik deed! Slechte planning van uw kant niet
    vormen een noodsituatie van mijn kant.

Met dat gezegd, hier zijn twee one-liners die voor elke zuiveringsmethode kunnen worden gebruikt:

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

Verwijder de --dry-run om de eigenlijke zuiveringsoperatie uit te voeren in plaats van te rapporteren welke acties het zou hebben ondernomen.


1
2017-08-23 23:32