Qual è il modo corretto di rimuovere completamente un'applicazione?

503

Ho cercato in rete tali informazioni e ho trovato diverse righe 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 quel "*"?

Dopo ho trovato anche questi comandi:

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

8 risposte

661
  • 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 tutto 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ù. Utilizzalo 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 che erano richiesti da packagename ma non richiesti da nessun pacchetto rimanente. Nota che aptitude memorizza solo le informazioni sulle dipendenze per i pacchetti che ha installato.

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

L'elenco che hai trovato è solo un esempio. Assicurati di aver compreso i significati e prova cosa vuole fare prima di accettare l'azione (devi premere Y prima di eseguire effettivamente le azioni come proposto).

La versione asterisco nella domanda è probabilmente errata ; 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 espandere application* guardando i file nella directory corrente. Se (come avviene di solito) non trova nulla, restituisce inalterato il pattern glob (supponendo bash con comportamento predefinito qui --- zsh errore out).

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

  3. Per vedere come 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 "vinto" nel loro nome e il dipendente, quasi l'intero sistema ...

Probabilmente, il comando che si intendeva è veramente

 sudo apt-get remove "^application.*"

(annota 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à e sarà il sbagliato modo di fare le cose.

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

dpkg -S /path/to/file
    
risposta data gertvdijk 15.09.2012 - 00:04
fonte
96

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

sudo apt-get --purge autoremove packagename

Come dettagliato qui .

Non utilizzare packagename* in quanto può eliminare pacchetti non intenzionali e causare più problemi di quanti ne risolva. Oppure, se devi, eseguilo almeno con un -s , --simulate , --dry-run prima per vedere esattamente cosa farà senza farlo.

    
risposta data Kurtosis 20.11.2013 - 21:01
fonte
17

Puoi usare questo comando:

sudo apt-get purge --auto-remove packagename

Elimina i pacchetti richiesti insieme alle dipendenze installate con quei pacchetti. L'opzione --auto-remove (essendo un alias 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
    
risposta data pl_rock 16.09.2015 - 22:08
fonte
7

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

sudo apt-get remove gedit*

rimuoverà application , gedit e gedit-plugins . 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.

    
risposta data reverendj1 15.09.2012 - 00:05
fonte
5

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

L'ho trovato anche se utilizzavo solo

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

non rimuove il pacchetto che mi mostra il percorso corretto del file con cui spostarsi:

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

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

    
risposta data DangerFireBob 26.02.2015 - 10:26
fonte
3

Ho trovato questo comando in internet.

dpkg --purge --force-depends application

link .

    
risposta data vrcmr 15.09.2012 - 00:10
fonte
1

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.

Attenzione, 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 sistema.

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

    
risposta data gustavokrm 15.09.2012 - 00:10
fonte
1

Volevo solo chiarire una cosa che sembra essere fonte di confusione qui. L'utilità dpkg non conosce o tiene traccia delle dipendenze dei pacchetti in relazione l'una con l'altra, il che era una grande ragione per cui è stato sviluppato apt , credo. Puoi leggere al riguardo nella sezione 8.6 in questa pagina Domande frequenti su Debian GNU / Linux - Gli strumenti di gestione dei pacchetti Debian

  • Con apt: se volevo eliminare il pacchetto A e ha una dipendenza chiamato pacchetto B, e il pacchetto B non aveva altri pacchetti dipendenti, quindi i pacchetti A e B verranno eliminati. Se il pacchetto B DID ha altri dipendenti pacchetti, quindi verrà cancellato solo il pacchetto A.

  • Con dpkg: quale dipendenza? Mi hai appena detto di eliminare quel dannato? pacchetto così è quello che ho fatto! Pessima pianificazione da parte tua non
    costituire un'emergenza da parte mia.

Detto questo, ecco due one-liner che possono essere utilizzati per ogni metodo di eliminazione:

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

Rimuovi --dry-run per eseguire l'operazione di eliminazione effettiva invece di segnalare quali azioni avrebbe dovuto intraprendere.

    
risposta data Travis R. 24.08.2018 - 01:32
fonte

Leggi altre domande sui tag