Come posso rimuovere i pacchetti orfani in Fedora?


42

Sono appena passato da Ubuntu a Fedora14. In Ubuntu abbiamo avuto la apt-get autoremovecosa di rimuovere i pacchetti orfani / inutilizzati. Qual è la controparte in Fedora?

Risposte:


36

package-cleanup --quiet --leavesdal pacchetto yum-utils elencherà i pacchetti della libreria a cui non fanno affidamento altri pacchetti. Sfortunatamente tende ad essere un po 'eccessivo. Sul mio sistema, ad esempio, ha suggerito di rimuovere libvirt. L'aggiunta --exclude-bindell'argomento aiuta. Se sei soddisfatto del suggerimento, quindi per ripulire i pacchetti, fai:

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

1
Provato dopo l'installazione, la rimozione netbeans-platforme la pulizia dei pacchetti elenca alcune cose ma in realtà nessuna delle netbeans-platformdipendenze precedentemente installate (usando Fedora 17).
maxschlepzig,

2
Non funziona, come sottolineato da @maxschlepzig
c0da

30

DNF, il sostituto di yum da Fedora 22, fornisce anche un autoremovesottocomando modellato sull'autoremove apt-get / yum.

Esempi:

# dnf autoremove

che tenta di rimuovere tutti i pacchetti di dipendenze installati automaticamente e altrimenti non utilizzati - dovrebbe essere praticamente equivalente a apt-get autoremove.

# dnf autoremove examplepackage

che rimuove esempiopackage e tutte le sue dipendenze installate automaticamente (e altrimenti non utilizzate).

yum

Yum ha il comando autoremove da Fedora 19, ed è documentato da Fedora 20 / RHEL 7.

L'uso è analogo all'implementazione di dnf, ad esempio:

# yum autoremove

o

# yum autoremove examplepackage

Cambia il comportamento di yum rimuove

Yum supporta un'opzione di configurazione per modificare il comportamento predefinito del removesottocomando (ad es. Tramite /etc/yum.conf):

clean_requirements_on_remove=yes

yum.conf (5)

Quando impostato, il successivo yum removetenta anche di rimuovere le dipendenze installate automaticamente se non sono necessarie per altri pacchetti.

Puoi anche provare temporaneamente questa opzione tramite qualcosa come:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

Soluzione alternativa per la vecchia versione di Fedora

(Per le versioni Fedora in cui il sottocomando yum autoremove non è disponibile e / o clean_requirements_on_removenon funziona.)

Sebbene durante l'installazione dei pacchetti le dipendenze installate siano contrassegnate come tali (sembra essere una funzionalità relativamente nuova di rpm / yum).

Puoi trovare dipendenze non necessarie tramite:

$ package-cleanup --leaves -q --all \
    | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
    | grep -- '- dep' \
    | cut -d' ' -f1 > tmp

Questa riga di comando è ispirata alla sceneggiatura di fenris02 .

Dopo l'ispezione di tmp(e forse la cura) potresti rimuoverli tramite qualcosa del genere:

# xargs yum remove < tmp

Ha generato l'errore "Motivo queryum yumdb non valido per pkg installato: adobe-release-x86_64-1.0-1.noarch". Cos'è questo adesso?
circa

@ c0da, suppongo che la funzione che yum registra nel suo database il "motivo" dell'installazione (ad es. ep "o" utente ") per ciascun pacchetto sia relativamente nuova. Forse la tua istanza di Fedora precede l'introduzione di quella funzione in modo tale che tu abbia ancora (alcuni) pacchetti installati senza quel set di tag.
maxschlepzig,

Ho installato Fedora 18 qualche giorno fa. Quindi penso che il tag richiesto dovrebbe essere lì.
circa

1
@ c0da, forse il 'motivo' non è stato registrato perché hai installato il pacchetto adobe-releasetramiteyum localinstall
maxschlepzig il

16

devi installare il plugin yum "remove-with-leaves":

# yum install yum-plugin-remove-with-leaves.noarch

una volta installato:

# yum remove --remove-leaves package

in bocca al lupo!


3
e come eseguirlo per tutte le app installate?
CND


1
RHEL / CentOS / Oracle Linux 6 richiede l' yum-plugin-remove-with-leaves.noarchinstallazione del pacchetto per l'usopackage-cleanup
Terry Wang

8
# package-cleanup --orphans >/tmp/junk

modificare il /tmp/junkfile e rimuovere la prima riga che è informativa dalla riga di comando immettere quanto segue:

for file in `cat /tmp/junk`
do
  yum remove $file
done

1
package-cleanup (1) dice: '--orphans Elenca i pacchetti installati che non sono disponibili dai repository attualmente configurati.' Questo non equivale a quello che apt-get autoremovefa. apt-get (8) dice: "autoremove è usato per rimuovere i pacchetti che sono stati installati automaticamente per soddisfare le dipendenze di alcuni pacchetti e che non sono più necessari."
maxschlepzig,

1
Non funziona! Devo essermi sbagliato in precedenza. Grazie @maxschlepzig
c0da

Questo funzionava per me, ma in CentOS 6.6 in realtà elenca tutti i pacchetti installati, non solo gli orfani.
Gaia,

4

NOTA: questa risposta è corretta ma si applica solo a RHEL 7+ e Fedora 20+ (dove autoremove è stato aggiunto come nuova funzionalità).

# yum autoremove

Basta confermare per rimuovere i pacchetti selezionati.


0

Basandosi sulla risposta di Larry Mohr :

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

(Include il salto per il mirroring più veloce, se ti chiedi.)


0

In Fedora, il pacchetto orfano non significa nessun candidato candidato da aggiornare!

  1. Se i pacchetti orfani sono stati generati da te, disabiliti yum.repos.d / some.conf.

    yum distro-sync
    
  2. Altri pacchetti orfani, il comando può essere pericoloso.

    yum remove $(package-cleanup --orphans)
    

    oppure, basta usare il comando di sicurezza.

    yum remove name-of-page
    

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.