Я встановив деякий пакет об / хв на своєму Fedora 17. Деякі пакети мали багато залежностей. Я видалив деякі пакунки, але забув видалити невикористані залежності за допомогою yum remove.
Як я можу це зробити зараз?
Я встановив деякий пакет об / хв на своєму 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
Ви також можете застосувати команду autoremove з певним пакетом
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, шеф-кухар, ляльковий, бродячий
У новіших Fedoras dnf, ви можете використовувати їх dnf repoquery --unneededяк заміну package-cleanup --leaves.
yum: linux.die.net/man/8/yum ?