Zainstalowałem jakiś pakiet rpm na mojej Fedorze 17. Niektóre pakiety miały wiele zależności. Usunąłem niektóre pakiety, ale zapomniałem usunąć nieużywane zależności z yum remove.
To nie jest łatwe. Jak odróżnić „plik, który był wymagany od czegoś, co od tego czasu usunąłem” z „pliku, który nie jest wymagany przez nic innego, czego naprawdę chcę”?
Możesz użyć package-cleanuppolecenia z yum-utilspakietu, aby wyświetlić „węzły liści” na wykresie zależności pakietu. Są to pakiety, które można usunąć bez wpływu na nic innego:
$ package-cleanup --leaves
Spowoduje to utworzenie listy „bibliotek”, od których nie zależy nic więcej. W większości przypadków możesz bezpiecznie usunąć te pakiety. Jeśli dodasz --alldo wiersza poleceń:
$ package-cleanup --leaves --all
Dostaniesz również pakiety, które nie są uważane za biblioteki, ale ta lista będzie tak długa, że prawdopodobnie nie będzie przydatna.
APT (odpowiednik Yum w Debianie) ma pojęcie „automatycznie zainstalowany pakiet”. Jeśli pakiet nie został wyraźnie zażądany, ale został pobrany tylko jako zależność, zostanie automatycznie usunięty (z monitem o potwierdzenie), jeśli wszystkie pakiety, które od niego zależą, zostaną usunięte. Bez wskazania tego typu to naprawdę nie jest łatwe.
Gilles
101
Jeśli zainstalujesz pakiet yum install, powiedzmy pdftk, spowoduje on wiele zależności:
yum remove pdftk usunie tylko ten pakiet, a nie wszystkie zależności.
Ale możesz spojrzeć na wszystkie „transakcje” (instalacja, usuwanie itp.):
$ sudo yum history list pdftk
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
88 | install pdftk | 2012-12-14 13:35 | Install | 11
Możesz także zastosować polecenie autorove z określonym pakietem
yum autoremove <package>
Co usunie niepotrzebne zależności z zainstalowanego pakietu. autoremovejest w dużej mierze pseudonimem, remove --setopt=clean_requirements_on_remove=1ale z pewnych powodów jest wciąż nieudokumentowane.
polecenie yum remove --setopt=clean_requirements_on_remove=1działa dla mnie w centOS
BMW
Dla mnie package-cleanup --leaves && yum autoremoveusunięta libvorbis i tak umarła aplikacja do przesyłania strumieniowego radia internetowego „Ices” - prawdopodobnie dlatego, że nie ma jej w repozytorium i musiałem ją skompilować.
Nakilon,
Command yum autoremovedziała również na CentOS 7.6.
Pobiera to wszystkie zależności, które można usunąć bez wpływu na nic innego, a następnie usuwa je. Lepiej niż jeden po drugim.
„-q” jest użyteczne w niektórych systemach, które w przeciwnym razie wypisują „Konfigurowanie yum”, powodując usunięcie tego polecenia przez to polecenie. I nie tego chcesz.
yum
: linux.die.net/man/8/yum ?Odpowiedzi:
To nie jest łatwe. Jak odróżnić „plik, który był wymagany od czegoś, co od tego czasu usunąłem” z „pliku, który nie jest wymagany przez nic innego, czego naprawdę chcę”?
Możesz użyć
package-cleanup
polecenia zyum-utils
pakietu, aby wyświetlić „węzły liści” na wykresie zależności pakietu. Są to pakiety, które można usunąć bez wpływu na nic innego:Spowoduje to utworzenie listy „bibliotek”, od których nie zależy nic więcej. W większości przypadków możesz bezpiecznie usunąć te pakiety. Jeśli dodasz
--all
do wiersza poleceń:Dostaniesz również pakiety, które nie są uważane za biblioteki, ale ta lista będzie tak długa, że prawdopodobnie nie będzie przydatna.
źródło
Jeśli zainstalujesz pakiet
yum install
, powiedzmypdftk
, spowoduje on wiele zależności:yum remove pdftk
usunie tylko ten pakiet, a nie wszystkie zależności.Ale możesz spojrzeć na wszystkie „transakcje” (instalacja, usuwanie itp.):
Następnie możesz cofnąć tę transakcję:
źródło
yum history
. Dzięki!Począwszy od Fedory 18, możesz po prostu użyć tego polecenia
lub
Możesz także zastosować polecenie autorove z określonym pakietem
Co usunie niepotrzebne zależności z zainstalowanego pakietu.
autoremove
jest w dużej mierze pseudonimem,remove --setopt=clean_requirements_on_remove=1
ale z pewnych powodów jest wciąż nieudokumentowane.źródło
yum remove --setopt=clean_requirements_on_remove=1
działa dla mnie w centOSpackage-cleanup --leaves && yum autoremove
usunięta libvorbis i tak umarła aplikacja do przesyłania strumieniowego radia internetowego „Ices” - prawdopodobnie dlatego, że nie ma jej w repozytorium i musiałem ją skompilować.yum autoremove
działa również na CentOS 7.6.Odpowiedziałem Lararsowi o krok dalej.
Pobiera to wszystkie zależności, które można usunąć bez wpływu na nic innego, a następnie usuwa je. Lepiej niż jeden po drugim.
„-q” jest użyteczne w niektórych systemach, które w przeciwnym razie wypisują „Konfigurowanie yum”, powodując usunięcie tego polecenia przez to polecenie. I nie tego chcesz.
źródło
package-cleanup
wypisuje „Konfigurowanie yum” na moim komputerze, co spowodowało, że Yum sam się usunął. Teraz próbuję wymyślić, jak to rozwiązać.-q
opcję do czyszczenia pakietu. To samo mi się przydarzyło: Dpackage-cleanup -q --leaves | xargs -r -l1 yum -y remove
dyskretnie pominąć xargs jeśli wyjście package-cleanup jest pusta, przydatne dla automatycznych skryptów takich jak ansibla, kucharz, marionetka, VagrantW nowszych Fedorach z
dnf
możesz użyćdnf repoquery --unneeded
jako zamiennikapackage-cleanup --leaves
.źródło