Я установил несколько пакетов rpm на мою Fedora 17. Некоторые пакеты имели много зависимостей. Я удалил некоторые пакеты, но забыл удалить неиспользуемые зависимости с помощью команды yum remove.
Это не просто. Как вы различаете «файл, который требовался от того, что я с тех пор удалил», от «файла, который не требуется ни от чего другого, что я действительно хочу»?
Вы можете использовать package-cleanupкоманду из yum-utilsпакета, чтобы вывести «листовые узлы» на графике зависимостей вашего пакета. Это пакеты, которые можно удалить, не затрагивая ничего другого:
$ package-cleanup --leaves
Это создаст список «библиотек», от которых больше ничего не зависит. В большинстве случаев вы можете безопасно удалить эти пакеты. Если вы добавите --allв командную строку:
$ package-cleanup --leaves --all
Вы также получите пакеты, которые не считаются библиотеками, но этот список будет настолько длинным, что, вероятно, он будет бесполезен.
APT (эквивалент Yum для Debian) имеет понятие «автоматически установленный пакет». Если пакет не был явно запрошен, а только извлечен как зависимость, он будет автоматически удален (с запросом подтверждения), если все пакеты, которые зависят от него, будут удалены. Без указания этого типа это действительно не легко.
Жиль "ТАК - перестань быть злым"
101
Если вы установите пакет yum install, скажем pdftk, он будет включать много зависимостей:
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
Вы также можете применить команду автоматического удаления с конкретным пакетом
yum autoremove <package>
Что удалит ненужные зависимости из этого установленного пакета. autoremoveэто псевдоним, remove --setopt=clean_requirements_on_remove=1но по некоторым причинам до сих пор не документирован.
yum remove --setopt=clean_requirements_on_remove=1у меня работает команда в centOS
BMW
Для меня package-cleanup --leaves && yum autoremoveудаленный libvorbis и так сделал приложение интернет-радио потокового "Ices" умирает - вероятно, потому что его нет в репозиториях, и мне пришлось его скомпилировать.
Накилон
Команда yum autoremoveработает и на CentOS 7.6.
scrutari
yum autoremove не может удалить 4 старых ядра на CentOS 7
yum
: linux.die.net/man/8/yum ?Ответы:
Это не просто. Как вы различаете «файл, который требовался от того, что я с тех пор удалил», от «файла, который не требуется ни от чего другого, что я действительно хочу»?
Вы можете использовать
package-cleanup
команду изyum-utils
пакета, чтобы вывести «листовые узлы» на графике зависимостей вашего пакета. Это пакеты, которые можно удалить, не затрагивая ничего другого:Это создаст список «библиотек», от которых больше ничего не зависит. В большинстве случаев вы можете безопасно удалить эти пакеты. Если вы добавите
--all
в командную строку:Вы также получите пакеты, которые не считаются библиотеками, но этот список будет настолько длинным, что, вероятно, он будет бесполезен.
источник
Если вы установите пакет
yum install
, скажемpdftk
, он будет включать много зависимостей:yum remove pdftk
удалит только этот пакет, а не все зависимости.Но вы можете посмотреть все «транзакции» (установить, удалить и т. Д.):
И тогда вы можете отменить эту транзакцию:
источник
yum history
. Спасибо!Начиная с Fedora 18, вы можете просто использовать эту команду
или же
Вы также можете применить команду автоматического удаления с конкретным пакетом
Что удалит ненужные зависимости из этого установленного пакета.
autoremove
это псевдоним,remove --setopt=clean_requirements_on_remove=1
но по некоторым причинам до сих пор не документирован.источник
yum remove --setopt=clean_requirements_on_remove=1
у меня работает команда в centOSpackage-cleanup --leaves && yum autoremove
удаленный libvorbis и так сделал приложение интернет-радио потокового "Ices" умирает - вероятно, потому что его нет в репозиториях, и мне пришлось его скомпилировать.yum autoremove
работает и на CentOS 7.6.Я взял ответ жаворонка на шаг дальше.
Это захватывает все зависимости, которые могут быть удалены, не затрагивая что-либо еще, а затем удаляет их. Лучше тогда проходить один за другим.
«-q» полезен в некоторых системах, в которых иначе выводится «Настройка yum», в результате чего эта команда удаляет yum. И это не то, что вы хотите.
источник
package-cleanup
выводит «Настройка yum» на моей машине, в результате чего Yum удаляется сам. Я сейчас пытаюсь выяснить, как с этим разобраться.-q
опцию для очистки пакета. Это случилось и со мной: Dpackage-cleanup -q --leaves | xargs -r -l1 yum -y remove
будет молча пропускать xargs, если выходные данные очистки пакета пусты, полезно для автоматизированных сценариев, таких как ansible, chef, puppet,В новых Fedora с
dnf
, вы можете использоватьdnf repoquery --unneeded
в качестве заменыpackage-cleanup --leaves
.источник