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-cleanup
polecenia z yum-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:
$ 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 --all
do 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. autoremove
jest w dużej mierze pseudonimem, remove --setopt=clean_requirements_on_remove=1
ale z pewnych powodów jest wciąż nieudokumentowane.
yum remove --setopt=clean_requirements_on_remove=1
działa dla mnie w centOS
package-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.
$ 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-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: D
package-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, Vagrant
W nowszych Fedorach z dnf
możesz użyć dnf repoquery --unneeded
jako zamiennika package-cleanup --leaves
.
yum
: linux.die.net/man/8/yum ?