Я встановив деякий пакет об / хв на своєму 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 ?