Я установил несколько пакетов rpm на мою Fedora 17. Некоторые пакеты имели много зависимостей. Я удалил некоторые пакеты, но забыл удалить неиспользуемые зависимости с помощью команды yum remove.
Как я могу сделать это сейчас?
Я установил несколько пакетов rpm на мою Fedora 17. Некоторые пакеты имели много зависимостей. Я удалил некоторые пакеты, но забыл удалить неиспользуемые зависимости с помощью команды yum remove.
Как я могу сделать это сейчас?
Ответы:
Это не просто. Как вы различаете «файл, который требовался от того, что я с тех пор удалил», от «файла, который не требуется ни от чего другого, что я действительно хочу»?
Вы можете использовать package-cleanupкоманду из yum-utilsпакета, чтобы вывести «листовые узлы» на графике зависимостей вашего пакета. Это пакеты, которые можно удалить, не затрагивая ничего другого:
$ package-cleanup --leaves
Это создаст список «библиотек», от которых больше ничего не зависит. В большинстве случаев вы можете безопасно удалить эти пакеты. Если вы добавите --allв командную строку:
$ package-cleanup --leaves --all
Вы также получите пакеты, которые не считаются библиотеками, но этот список будет настолько длинным, что, вероятно, он будет бесполезен.
Если вы установите пакет yum install, скажем pdftk, он будет включать много зависимостей:
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 удалит только этот пакет, а не все зависимости.
Но вы можете посмотреть все «транзакции» (установить, удалить и т. Д.):
$ sudo yum history list pdftk
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
88 | install pdftk | 2012-12-14 13:35 | Install | 11
И тогда вы можете отменить эту транзакцию:
$ 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. Спасибо!
Начиная с Fedora 18, вы можете просто использовать эту команду
yum autoremove
или же
yum remove --setopt=clean_requirements_on_remove=1
Вы также можете применить команду автоматического удаления с конкретным пакетом
yum autoremove <package>
Что удалит ненужные зависимости из этого установленного пакета. autoremoveэто псевдоним, remove --setopt=clean_requirements_on_remove=1но по некоторым причинам до сих пор не документирован.
yum remove --setopt=clean_requirements_on_remove=1у меня работает команда в centOS
package-cleanup --leaves && yum autoremoveудаленный libvorbis и так сделал приложение интернет-радио потокового "Ices" умирает - вероятно, потому что его нет в репозиториях, и мне пришлось его скомпилировать.
yum autoremoveработает и на CentOS 7.6.
Я взял ответ жаворонка на шаг дальше.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
Это захватывает все зависимости, которые могут быть удалены, не затрагивая что-либо еще, а затем удаляет их. Лучше тогда проходить один за другим.
«-q» полезен в некоторых системах, в которых иначе выводится «Настройка yum», в результате чего эта команда удаляет yum. И это не то, что вы хотите.
package-cleanupвыводит «Настройка yum» на моей машине, в результате чего Yum удаляется сам. Я сейчас пытаюсь выяснить, как с этим разобраться.
-qопцию для очистки пакета. Это случилось и со мной: D
package-cleanup -q --leaves | xargs -r -l1 yum -y removeбудет молча пропускать xargs, если выходные данные очистки пакета пусты, полезно для автоматизированных сценариев, таких как ansible, chef, puppet,
yum: linux.die.net/man/8/yum ?