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.
Jak mogę to teraz zrobić?
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.
Jak mogę to teraz zrobić?
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-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.
Jeśli zainstalujesz pakiet yum install, powiedzmy pdftk, spowoduje on wiele zależności:
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 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
Następnie możesz cofnąć tę transakcję:
$ 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. Dzięki!
Począwszy od Fedory 18, możesz po prostu użyć tego polecenia
yum autoremove
lub
yum remove --setopt=clean_requirements_on_remove=1
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.
yum remove --setopt=clean_requirements_on_remove=1działa dla mnie w centOS
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ć.
yum autoremovedziała również na CentOS 7.6.
Odpowiedziałem Lararsowi o krok dalej.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
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.
package-cleanupwypisuje „Konfigurowanie yum” na moim komputerze, co spowodowało, że Yum sam się usunął. Teraz próbuję wymyślić, jak to rozwiązać.
-qopcję do czyszczenia pakietu. To samo mi się przydarzyło: D
package-cleanup -q --leaves | xargs -r -l1 yum -y removedyskretnie pominąć xargs jeśli wyjście package-cleanup jest pusta, przydatne dla automatycznych skryptów takich jak ansibla, kucharz, marionetka, Vagrant
W nowszych Fedorach z dnfmożesz użyć dnf repoquery --unneededjako zamiennika package-cleanup --leaves.
yum: linux.die.net/man/8/yum ?