Ho installato alcuni pacchetti rpm sul mio Fedora 17. Alcuni pacchetti avevano molte dipendenze. Ho rimosso alcuni pacchetti ma ho dimenticato di rimuovere le dipendenze non utilizzate con yum remove.
Come posso farlo adesso?
Ho installato alcuni pacchetti rpm sul mio Fedora 17. Alcuni pacchetti avevano molte dipendenze. Ho rimosso alcuni pacchetti ma ho dimenticato di rimuovere le dipendenze non utilizzate con yum remove.
Come posso farlo adesso?
Risposte:
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-cleanup
comando dal yum-utils
pacchetto 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 --all
alla 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.
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!
yum history
. Grazie!
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=1
ma, per alcune ragioni, non è ancora documentato.
yum remove --setopt=clean_requirements_on_remove=1
funziona per me in centOS
package-cleanup --leaves && yum autoremove
libvorbis rimossa e così ha fatto morire l'applicazione "Ices" in streaming via radio su Internet - probabilmente perché non è in repository e ho dovuto compilarla.
yum autoremove
funziona anche su CentOS 7.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.
package-cleanup
genera "Impostazione di yum" sulla mia macchina, che ha comportato la rimozione di Yum. Ora sto cercando di capire come risolverlo.
-q
un'opzione per la pulizia del pacchetto. Questo è successo anche a me: D
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
salterà silenziosamente xargs se l'output di pulizia del pacchetto è vuoto, utile per script automatici come ansible, chef, burattino, vagabondo
In Fedora più recenti con dnf
, è possibile utilizzare dnf repoquery --unneeded
come sostituto di package-cleanup --leaves
.
yum
manpage: linux.die.net/man/8/yum ?