Как я могу удалить пакеты-сироты в Fedora?

Я просто переключился с Ubuntu на Fedora14. В Ubuntu у нас была apt-get autoremove для удаления сиротских / неиспользуемых пакетов. Что такое партнер в Fedora?

package-cleanup --quiet --leaves из пакета yum-utils будут отображать библиотечные пакеты, на которые не полагаются другие пакеты. К сожалению, он, как правило, немного пережит. Например, в моей системе было предложено удалить libvirt. Добавление аргумента --exclude-bin помогает. Если вы довольны его предложением, то, чтобы очистить пакеты, выполните:

 # package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y 

DNF, замена yum с Fedora 22, также предоставляет подкоманду autoremove которая смоделирована после apt-get / yum autoremove.

Примеры:

 # dnf autoremove 

который пытается удалить все автоматически установленные и другие неиспользуемые пакеты зависимостей, должен быть в значительной степени эквивалентен apt-get autoremove .

 # dnf autoremove examplepackage 

который удаляет examplepackage и все его автоматически установленные (и в остальном неиспользуемые) зависимости.

Yum

У Yum есть команда autoremove с Fedora 19, и она задокументирована с Fedora 20 / RHEL 7.

Использование аналогично реализации dnf, например:

 # yum autoremove 

или

 # yum autoremove examplepackage 

Изменение поведения yum удаляет

Yum поддерживает опцию конфигурации, чтобы изменить поведение по умолчанию подкоманды remove (например, через /etc/yum.conf):

 clean_requirements_on_remove=yes 

yum.conf (5)

Когда это установлено, следующий yum remove также пытается удалить автоматически установленные зависимости, если они не нужны другими пакетами.

Вы также можете временно протестировать эту опцию через что-то вроде:

 # yum --setopt=clean_requirements_on_remove=1 remove examplepackage 

Обходной путь для старой версии Fedora

(Для версий Fedora, где подкоманда yum autoremove недоступна и / или clean_requirements_on_remove не работает.)

Хотя во время установки пакетов установленные зависимости отмечены как таковые (кажется, относительно новая особенность rpm / yum).

Вы можете найти ненужные зависимости через:

 $ package-cleanup --leaves -q --all \ | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \ | grep -- '- dep' \ | cut -d' ' -f1 > tmp 

Эта командная строка вдохновлена сценарием fenris02 .

После проверки tmp (и, возможно, curation) вы можете удалить их через что-то вроде этого:

 # xargs yum remove < tmp 

вам нужно установить плагин yum «remove-with-leaves»:

 # yum install yum-plugin-remove-with-leaves.noarch 

после установки:

 # yum remove --remove-leaves package 

удачи!

 # package-cleanup --orphans >/tmp/junk 

отредактируйте файл /tmp/junk и удалите первую строку, которая является информационной из командной строки, введите следующее:

 for file in `cat /tmp/junk` do yum remove $file done 

ПРИМЕЧАНИЕ. Этот ответ правильный, но применим только к RHEL 7+ и Fedora 20+ (где добавлена ​​функция autoremove в качестве новой функции).

 # yum autoremove 

Просто подтвердите удаление выбранных пакетов.

Основываясь на ответе Ларри Мора :

 package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove 

(Включает пропуски для быстрого зеркала, если вам интересно).

В Fedora пакет сироты означает, что для его обновления не будет репозиторий-кандидат!

  1. Если пакеты с сиротой были сгенерированы вами, отключите yum.repos.d / some.conf.

     yum distro-sync 
  2. Другие сироты, команда может быть опасной.

     yum remove $(package-cleanup --orphans) 

    или просто используйте команду безопасности.

     yum remove name-of-page 

Другой способ не вызывать эти проблемы – использовать транзакции.

После установки базовой системы, когда вы устанавливаете с помощью yum, она создает транзакции. Когда вы собираетесь удалить вещи, откатите транзакции.

https://docs.fedoraproject.org/en-US/Fedora/24/html/System_Administrators_Guide/sec-DNF-Transaction_History.html