Я установил несколько пакетов 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 ?