在 Gentoo 中安全卸载软件包

在 Gentoo 中安全卸载软件包

我想卸载 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.

似乎这是在取消合并包之前进行依赖项检查的推荐方法。不过,我仍然希望有一种更好、更自动化的方法来实现这一目标。

相关内容