it-swarm-eu.dev

Jak mohu odstranit osiřelé balíčky ve Fedoře?

Právě jsem přešel z Ubuntu na Fedora14. V Ubuntu jsme měli apt-get autoremove věc k odstranění osiřelých/nepoužitých balíčků. Co je protějšek ve Fedoře?

43
c0da

package-cleanup --quiet --leaves z balíčku yum-utils zobrazí seznam knihovních balíčků, na které se ostatní balíčky nespoléhají. Bohužel to bývá trochu přehnané. Například v mém systému bylo navrženo odstranění libvirt. Přidání --exclude-bin argument pomáhá. Pokud jste s návrhem spokojeni, pak balíčky vyčistěte:

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

DNF, náhrada yum od Fedory 22, také poskytuje podpříkaz autoremove, který je modelovaný po apt-get/yum autoremove.

Příklady:

# dnf autoremove

který se pokouší odstranit všechny automaticky nainstalované a jinak nepoužité balíčky závislostí - by měl být skoro ekvivalentní s apt-get autoremove.

# dnf autoremove examplepackage

který odstraňuje příkladový balíček a všechny jeho automaticky nainstalované (a jinak nevyužité) závislosti.

Yum

Yum má autoremove příkaz od Fedory 19 a je dokumentován od Fedory 20/RHEL 7.

Použití je analogické s implementací dnf, např .:

# yum autoremove

nebo

# yum autoremove examplepackage

Změnit chování yum odstraní

Yum podporuje možnost konfigurace ke změně výchozího chování dílčího příkazu remove (např. Prostřednictvím /etc/yum.conf):

clean_requirements_on_remove=yes

yum.conf (5)

Když je toto nastaveno, další yum remove se také pokouší odstranit automaticky nainstalované závislosti, pokud to ostatní balíčky nepotřebují.

Tuto možnost můžete také dočasně otestovat pomocí například:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

Řešení staré verze Fedory

(Pro verze Fedory, kde dílčí příkaz yum autoremove není k dispozici a/nebo clean_requirements_on_remove nefunguje.)

Přestože během instalace balíčků jsou nainstalované závislosti jako takové označeny (zdá se, že je to relativně nová funkce rpm/yum).

Nepotřebné závislosti můžete najít prostřednictvím:

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

Tento příkazový řádek je inspirován skript fenris02 .

Po prohlídce tmp (a možná kuraci) je můžete odstranit pomocí něčeho podobného:

# xargs yum remove < tmp
33
maxschlepzig

musíte nainstalovat yum plugin "remove-with-leaves":

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

po instalaci:

# yum remove --remove-leaves package

hodně štěstí!

16
mrc
# package-cleanup --orphans >/tmp/junk

upravit /tmp/junk file a odeberte první řádek, který je informační z příkazového řádku, zadejte následující:

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

POZNÁMKA: Tato odpověď je správná, ale platí pouze pro RHEL 7+ a Fedora 20 + (kde byla autoremove přidána jako nová funkce).

# yum autoremove

Stačí potvrdit odebrání vybraných balíčků.

4
Chilly Milly

Dalším způsobem, jak tyto problémy nezpůsobit, je použití transakcí.

Po nastavení základního systému při instalaci pomocí yum vytvoří transakce. Když máte v úmyslu věci odstranit, zrušte transakce.

https://docs.fedoraproject.org/en-US/Fedora/24/html/System_Administrators_Guide/sec-DNF-Transaction_History.html

0
Vamsi

Ve Fedoře znamená balíček Orphan žádný kandidát repozitáře, který by se aktualizoval!

  1. Pokud byly balíčky osiřelých generovány vámi, zakažte yum.repos.d/some.conf.

    yum distro-sync
    
  2. U ostatních osamocených balíčků může být příkaz nebezpečný.

    yum remove $(package-cleanup --orphans)
    

    nebo použijte pouze bezpečnostní příkaz.

    yum remove name-of-page
    
0
firo

Staví na Larry Mohrova odpověď :

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

(Pokud vás zajímá, zahrnuje přeskočení pro nejrychlejší zrcadlo.)

0
Bengt