小智 120
如果你安装一个包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!
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
然后您可以撤消该交易:
$ 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!
Run Code Online (Sandbox Code Playgroud)
小智 80
从 Fedora 18 开始,你可以简单地使用这个命令
yum autoremove
Run Code Online (Sandbox Code Playgroud)
或者
yum remove --setopt=clean_requirements_on_remove=1
Run Code Online (Sandbox Code Playgroud)
您还可以对特定包应用 autoremove 命令
yum autoremove <package>
Run Code Online (Sandbox Code Playgroud)
这将从该安装的包中删除不需要的依赖项。autoremove是非常多的别名,remove --setopt=clean_requirements_on_remove=1但由于某些原因,仍然没有记录。
lar*_*sks 44
这是不容易的。您如何区分“我已经删除的文件需要的文件”和“我真正想要的其他文件不需要的文件”?
您可以使用包中的package-cleanup命令yum-utils在包依赖关系图中列出“叶节点”。这些是可以在不影响其他任何东西的情况下删除的包:
$ package-cleanup --leaves
Run Code Online (Sandbox Code Playgroud)
这将生成一个“库”列表,没有其他依赖。在大多数情况下,您可以安全地删除这些包。如果添加--all到命令行:
$ package-cleanup --leaves --all
Run Code Online (Sandbox Code Playgroud)
您还将获得不被视为库的软件包,但此列表将很长,可能没有用处。
小智 10
我把 larsks 的回答往前迈了一步。
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
Run Code Online (Sandbox Code Playgroud)
这会抓取所有可以在不影响其他任何东西的情况下删除的依赖项,然后删除它们。不如一一通过。
"-q" 在某些打印 "Setting up yum" 的系统上很有用,否则会导致此命令删除 yum。这不是你想要的。