Rimuovere i pacchetti non utilizzati


Risposte:


39

Non è facile. Come si fa a distinguere tra "un file richiesto da qualcosa che ho rimosso" da "un file non richiesto da qualcos'altro che voglio veramente"?

È possibile utilizzare il package-cleanupcomando dal yum-utilspacchetto per elencare "nodi foglia" nel grafico delle dipendenze del pacchetto. Questi sono pacchetti che possono essere rimossi senza influenzare nient'altro:

$ package-cleanup --leaves

Questo produrrà un elenco di "librerie" da cui nient'altro dipende. Nella maggior parte dei casi è possibile rimuovere in sicurezza questi pacchetti. Se aggiungi --allalla riga di comando:

$ package-cleanup --leaves --all

Riceverai anche pacchetti che non sono considerati librerie, ma questo elenco sarà così lungo che probabilmente non sarà utile.


9
APT (l'equivalente Debian di Yum) ha una nozione di "pacchetto installato automaticamente". Se un pacchetto non è stato esplicitamente richiesto ma è stato inserito solo come dipendenza, verrà automaticamente rimosso (con una richiesta di conferma) se i pacchetti che dipendono da esso vengono tutti rimossi. Senza un'indicazione di questo tipo, non è davvero facile.
Gilles 'SO- smetti di essere malvagio' il

101

Se installi un pacchetto con yum install, diciamo pdftk, attirerà molte dipendenze:

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk rimuoverà solo quel pacchetto e non tutte le dipendenze.

Ma puoi guardare tutte le "transazioni" (installa, rimuovi ecc.):

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

E quindi puoi annullare quella transazione:

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!

14
+1 Soluzione eccezionale e molto facile da fare. Non ne ho mai sentito parlare yum history. Grazie!
Stefan Lasiewski,

8
E se 89 dipendesse da java_cup o libgcj?
WernerCD,

2
Non dovrebbe essere una risposta accettata?
Celdor

62

A partire da Fedora 18, puoi semplicemente usare questo comando

yum autoremove

o

yum remove --setopt=clean_requirements_on_remove=1

È inoltre possibile applicare il comando autoremove con un pacchetto specifico

yum autoremove <package>

Che rimuoverà le dipendenze non necessarie da quel pacchetto installato. autoremoveè un vero alias remove --setopt=clean_requirements_on_remove=1ma, per alcune ragioni, non è ancora documentato.


5
comando yum remove --setopt=clean_requirements_on_remove=1funziona per me in centOS
BMW

Per me la package-cleanup --leaves && yum autoremovelibvorbis rimossa e così ha fatto morire l'applicazione "Ices" in streaming via radio su Internet - probabilmente perché non è in repository e ho dovuto compilarla.
Nakilon,

Il comando yum autoremovefunziona anche su CentOS 7.6.
scrutari

yum autoremove non riesce a rimuovere 4 vecchi kernel su CentOS 7
user1133275 il

6

Ho portato Larry a rispondere ancora di un passo.

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

Questo afferra tutte le dipendenze che possono essere rimosse senza influenzare nient'altro e quindi le rimuove. Meglio quindi passare uno per uno.

"-q" è utile su alcuni sistemi che stampano "Impostazione di yum" altrimenti, facendo sì che questo comando rimuova yum. E non è quello che vuoi.


2
package-cleanupgenera "Impostazione di yum" sulla mia macchina, che ha comportato la rimozione di Yum. Ora sto cercando di capire come risolverlo.
Paul Lammertsma,

@PaulLammertsma basta aggiungere -qun'opzione per la pulizia del pacchetto. Questo è successo anche a me: D
Ealhad,

1
package-cleanup -q --leaves | xargs -r -l1 yum -y removesalterà silenziosamente xargs se l'output di pulizia del pacchetto è vuoto, utile per script automatici come ansible, chef, burattino, vagabondo
Ilya Sheershoff,

questa è la risposta.
xCovelus

1

In Fedora più recenti con dnf, è possibile utilizzare dnf repoquery --unneededcome sostituto di package-cleanup --leaves.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.