Domanda Qual è il modo corretto per rimuovere completamente un'applicazione?


Ho cercato la rete per tali informazioni e ho trovato diverse linee di comando, come queste:

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*

Quindi, qual è il modo corretto? È necessario usare quello "*"?

Dopo di ciò, ho trovato anche questi comandi:

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

478
2017-09-14 21:54


origine


Alcune delle tue domande potrebbero trovare risposta in questo post: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application*a volte può dare risultati inattesi, ad esempio se nella directory corrente è presente un nome application_information, la shell lo espande prima che sia passato ad apt-get. Se questo sta accadendo e vuoi l'asterisco letterale, puoi usare application\* o 'application*' - Izkata
application* è ancora più pericoloso dove non ci sono file nella directory corrente: apt-get usa espressioni regolari, nessun pattern glob. Le persone hanno quasi cancellato l'intero sistema cercando di rimuoverlo wine*. - Andrea Corbellini
Puoi accettare una risposta? Essere grati alle persone che ti hanno risposto - m-ric
Nessuno dei due application* né application\* è salvo! citando * con \ o '  ' solo aumenta il rischio, garantendo * è passato così com'è apt-get (anche se di solito è comunque!), cause apt-get interpretare l'argomento come un'espressione regolare. In una regex * significa "zero o più del carattere precedente". Una forma comune dell'errore è disinstallare wine*, rimuovendo tutti i pacchetti con win (non wine, win) dovunque nei loro nomi e tutti i pacchetti a seconda di loro. Vedere questa spiegazione e possibili correzioni. @Izkata - Eliah Kagan


risposte:


  • apt-get remove packagename

    rimuoverà i file binari, ma non i file di configurazione o di dati del pacchetto packagename. Inoltre lascerà intatte le dipendenze installate al momento dell'installazione.

  • apt-get purge packagename o apt-get remove --purge packagename

    rimuoverò circa qualunque cosa per quanto riguarda il pacchetto packagename, ma non le dipendenze installate con esso durante l'installazione. Entrambi i comandi sono equivalenti.

    Particolarmente utile quando si desidera "ricominciare tutto" con un'applicazione perché si è incasinato la configurazione. Tuttavia, non rimuove la configurazione oi file di dati che risiedono nelle directory home degli utenti, di solito in quelle nascoste. Non esiste un modo semplice per ottenere anche quelli rimossi.

  • apt-get autoremove

    rimuove i pacchetti orfani, ovvero i pacchetti installati che prima erano installati come dipendenza, ma non lo sono più. Usalo dopo aver rimosso un pacchetto che ha installato dipendenze che non ti interessano più.

  • aptitude remove packagename o aptitude purge packagename (allo stesso modo)

    tenterà anche di rimuovere altri pacchetti richiesti da packagename ma non sono richiesti dai pacchetti rimanenti. Nota che aptitude memorizza solo le informazioni sulla dipendenza per i pacchetti che ha installato.

E molti altri esistono. Livello inferiore dpkgi comandi possono essere utilizzati (avanzati) o strumenti della GUI come Muon, Synaptic, Software Center, ecc. Non esiste un unico "modo corretto" per rimuovere applicazioni o eseguire altre attività che interagiscono con la gestione dei pacchetti.

La lista che hai trovato sono solo esempi. Assicurati di aver compreso i significati e prova cosa vuole fare prima di accettare l'azione (devi premere Y prima che esegua effettivamente le azioni come proposto).

La versione dell'asterisco nella domanda è probabilmente sbagliato; apt-get accetta un'espressione regolare e non un modello glob come la shell. Quindi cosa succede con

sudo apt-get remove application*

è il seguente:

  1. La shell prova ad espandersi application* guardando i file nella directory corrente. Se (come avviene normalmente) non trova nulla, restituisce il modello glob inalterato (supponiamo bash con comportamento predefinito qui --- zsh errore).

  2. apt-get rimuoverà i pacchetti di cui nome contiene una stringa che soddisfa l'espressione regolare application*, questo è, applicatio seguito da un numero arbitrario di n: applicatio, application, applicationn, libapplicatio, eccetera.

  3. Per vedere come questo può essere pericoloso, prova (senza root per la doppia sicurezza) apt-get -s remove "wine*" (-s simulerà la cosa invece di farlo) --- dirà che sta per rimuovere tutti i pacchetti che ha "win" nel loro nome e il dipendente, quasi l'intero sistema ...

Probabilmente, il comando che è stato inteso è davvero

 sudo apt-get remove "^application.*"

(nota le virgolette e il punto) che rimuoverà tutti i pacchetti il ​​cui nome inizia con application.

Questi comandi,

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.

sono completamente al di fuori della portata della gestione dei pacchetti. Non rimuovere i file appartenenti ai pacchetti senza usare il gestore pacchetti! Si confonderà ed è il sbagliato modo di fare le cose.

Se non sai a quale pacchetto appartiene un file, prova questo:

dpkg -S /path/to/file

638
2017-09-14 22:04



L'opzione --purge è anche utile quando si tenta di rimuovere completamente tutte le dipendenze rimanenti inclusi i loro file di configurazione: apt-get-autoremove --purge  È anche importante notare che i file di configurazione nella tua home directory non sono influenzati dall'opzione --purge. Questi dovranno essere rimossi manualmente. - Glutanimate
C'è stato un errore qui: apt-get accetta RE, non globs; così apt-get remove pack * rimuoverà tutti i pacchetti che iniziano con pac seguito da zero o più k ... che normalmente è inaspettato. Ho modificato l'anser. Guarda anche askubuntu.com/questions/210976/... - Rmano
Penso che questa risposta non sia più accurata. O apt remove -s texlive* o suo apt-get linee di ritorno di contropartita come Note, selecting 'texlive-font-utils' for glob 'texlive*' (sottintendendo che effettivamente accettano i glob), seguito dal solito Package 'texlive-common' is not installed, so not removed, e infine Remv linee, come Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
@JonathanY. Dovresti anche selezionare i pacchetti non installati. Ad ogni modo, potresti per favore fare una NUOVA domanda ed elaborare un po 'più in dettaglio qual è la tua situazione nella domanda. Sarei felice di guardarlo :) - gertvdijk
Non sto facendo una nuova domanda. Sto indicando un possibile cambiamento da quando è stata fatta questa risposta che rende errati alcuni dettagli. A quanto pare, sembrerebbe quello apt-get remove packa* prende davvero il glob packa* invece di guardarlo come regex: corrisponde package ma no pack. - Jonathan Y.


Per Ubuntu 12.04 e forse più alto, il metodo corretto è:

sudo apt-get --purge autoremove packagename

Come dettagliato Qui.

Non usare packagename* in quanto ciò può eliminare pacchetti involontari e causare più problemi di quanti ne risolva. O se è necessario, almeno eseguirlo con a -s, --simulate, --dry-run segnala prima per vedere esattamente cosa farà senza farlo.


92
2017-11-20 20:01



questa è la risposta corretta, breve e concisa: - Anwar


Puoi usare questo comando:

sudo apt-get purge --auto-remove packagename

Elimina i pacchetti richiesti insieme alle dipendenze installate con tali pacchetti. Il --auto-remove opzione (essendo uno pseudonimo di autoremove) funziona in modo simile a sudo apt-get autoremove. Usando questo comando possiamo eseguire un singolo comando:

sudo apt-get purge --auto-remove packagename

Invece di:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



Anche se sei corretto, ma puoi anche usarlo sudo apt-get --purge autoremove packagename. Lo stesso comando 1 qui - Anwar
Il comando completo può anche essere scritto come apt-get autoremove --purge invece di apt-get purge --auto-remove ? - felwithe
Qualcuno può spararmi? - Martin Andersson


Puoi tranquillamente usare sudo apt-get remove --purge application o sudo apt-get remove applications 99% delle volte. Quando usi il purge flag, rimuove semplicemente tutti i file di configurazione. Quale può o non può essere quello che vuoi, a seconda se vuoi reinstallare la suddetta applicazione. Il application* corrisponderà a tutte le applicazioni che iniziano con application, che di solito sono plug-in, funzionalità aggiuntive, ecc. dell'applicazione principale che stai rimuovendo. cioè

sudo apt-get remove gedit*

rimuovere gedit, gedit-plugins e gedit-common. In genere non è necessario farlo, poiché la maggior parte dei plugin / programmi associati dipendono dall'applicazione principale e verranno automaticamente rimossi (o contrassegnati per la rimozione) quando si disinstalla l'applicazione principale.

Il tuo ultimo comando è solo quello di rimuovere gli avanzi dalle applicazioni che sono noti per avere disinstallatori disordinati, e sta solo rimuovendo qualsiasi residuo dell'applicazione.


7
2017-09-14 22:05





Ho ricevuto alcuni messaggi di errore durante la rimozione di un pacchetto, l'unico modo in cui ho trovato che funzionava era questo:

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

Ho trovato che, pur usando solo

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

non rimuove il pacchetto mi mostra il percorso corretto per il file da spostare con:

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

Pacchetto sostitutivo con il nome dell'applicazione. Usa sudo in Ubuntu, diventa root in Debian.


5
2018-02-26 09:26





Ho trovato questo comando su internet.

dpkg --purge --force-depends application

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


3
2017-09-14 22:10





Dipende dall'applicazione che vuoi rimuovere. Assicurati sempre di controllare le sue dipendenze prima di emettere il comando yes. Quando rimuovi qualcosa dalla riga di comando, a volte mostrerà una manciata di librerie che non sono più necessarie. Questi possono essere rimossi con apt-get autoremove.

Fate attenzione che usando comandi come sudo apt-get remove --purge applicationname può rimuovere alcune dipendenze che sono necessarie ad altre applicazioni e, in quanto tale, potrebbe violare il vostro sistema.

Se vuoi farlo nel modo più sicuro, puoi sempre rimuoverlo usando solo il software center o apt-get remove applicationname. Se le dipendenze non sono più necessarie, rilascia apt-get autoremove più tardi.


1
2017-09-14 22:10



Penso che l'intero sistema di pacchetti Debian sia stato progettato specificamente per non rimuovi un pacchetto se ci sono altri pacchetti che dipendono da esso. Potresti essere (utile) chiesto se vuoi rimuovere anche tutti i pacchetti dipendenti, ed è qui che dovresti effettivamente leggere la lista del pacchetto che sta per essere rimosso, che è credo cosa stai cercando di dire. - Xen2050