![在 Gentoo 中安全卸载软件包](https://linux22.com/image/23819/%E5%9C%A8%20Gentoo%20%E4%B8%AD%E5%AE%89%E5%85%A8%E5%8D%B8%E8%BD%BD%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
我想卸载 Gentoo 中的某个特定包,并浏览了emerge 手册页。我找到了这个--unmerge
选项:
警告:此操作可能会删除重要的包!删除所有匹配的包。这不会检查依赖关系,因此它可能会删除系统正常运行所需的包。它的参数可以是atoms或ebuilds。对于依赖项感知版本 --取消合并, 使用--depclean或者- 修剪。
但是,我想检查系统中任何其他已安装的软件包是否需要我要卸载的软件包。--depclean
并且--prune
不提供该功能:
--depclean
删除作为依赖项安装但不再需要的软件包--prune
“从系统中删除除最高安装版本之外的所有软件包”
是否没有依赖项检查版本--unmerge
?
答案1
我不认为depclean
按照你描述的方式工作。没有任何参数它确实如此,但如果你向它传递一个包名称,它的工作方式就像unmerge
进行额外的依赖项检查。从emerge(1)
:
Depclean 充当
--unmerge
.当给定一个或多个原子时,它将取消合并没有反向依赖关系的匹配包。--depclean
与 一起使用--verbose
来显示反向依赖关系。
我总是使用--depclean
( -c
) 来取消合并单个包;效果很好
答案2
实现相同结果的另一种方法(尽管它不是通过依赖项检查取消合并的命令):emerge --deselect package
,它从世界文件中删除包。现在,运行emerge --depclean
将删除该包,前提是任何其他包都不需要它。
答案3
gentoolkit 可以提供帮助:
equery d <atom>
您可以先检查依赖关系,然后在检查其依赖关系后继续删除包。
答案4
有时,emerge --unmerge
会给出以下警告消息:
* This action can remove important packages! In order to be safer, use
* `emerge -pv --depclean <atom>` to check for reverse dependencies before
* removing packages.
似乎这是在取消合并包之前进行依赖项检查的推荐方法。不过,我仍然希望有一种更好、更自动化的方法来实现这一目标。