我已经在Fedora 17上安装了一些rpm软件包。一些软件包有很多依赖性。我已经删除了一些软件包,但是我忘了用yum remove删除未使用的依赖项。
我现在该怎么办?
我已经在Fedora 17上安装了一些rpm软件包。一些软件包有很多依赖性。我已经删除了一些软件包,但是我忘了用yum remove删除未使用的依赖项。
我现在该怎么办?
Answers:
这并不容易。您如何区分“我之后删除的文件所需要的文件”和“我真正想要的其他文件所不需要的文件”?
您可以使用包中的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
这将获取所有可以删除的依赖项,而不会影响其他任何依赖项,然后将其删除。最好然后一个接一个地进行。
在某些打印“设置yum”的系统上,“-q”很有用,否则会导致此命令删除yum。那不是您想要的。
package-cleanup
在我的机器上输出“设置yum”,导致Yum自行删除。我现在正试图弄清楚如何解决这个问题。
-q
在package-cleanup中添加选项即可。这也发生在我身上:D
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
如果package-cleanup输出为空,将无提示地跳过xargs,这对于诸如ansible,chef,puppet,vagrant之类的自动化脚本很有用
yum
联机帮助页:linux.die.net/man/8/yum?