我怎样告诉 yum 不要删除自身?

我怎样告诉 yum 不要删除自身?

当我运行此命令时

$ sudo yum erase git make gcc g++ zlib1g-dev libssl-dev wget subversion file python apt-utils binfmt-support vim apt-file xz-utils sudo subversion zlib1g-dev gawk flex unzip bzip2 gettext build-essential libncurses5-dev libncursesw5-dev libssl-dev binutils cpp psmisc docbook-to-man gcc-multilib g++-multilib

我收到此错误:

Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected

但那些不是我提供的包。我尝试-t容忍错误,并-x yum -x systemd专门排除这两个,但仍然出现错误。

$ sudo yum -x yum -x systemd erase git make gcc ...

答案1

您正在尝试删除一些必需的软件包,如果删除这些软件包,将会破坏您的系统:

  • pythonyum是用 Python 编写的,因此不能删除该包,否则您将丢失包管理器。
  • binutilssystemd需要这个包,systemd 是你的 init 系统,这对于使用 CentOS 7 至关重要。
  • gawk:很多事情都依赖于gawk,包括yumsystemd

您不能删除那些关键的系统包,因此请从要删除的包列表中排除pythonbinutils和。gawk

请注意,您仍在尝试删除一些有用的软件包,如gettextsudowget,这些软件包可能不会严重破坏您的系统,但可能会降低可用性。

答案2

尝试 $sudo yum remove@groupname

或者

$sudo yum groupremove 组名

当您告诉 yum 删除软件包组时,它将删除该组中的所有软件包,即使这些软件包是其他软件包组的成员或已安装的其他软件包的依赖项。但是,您可以通过将 groupremove_leaf_only=1 指令添加到 /etc/yum.conf 配置文件的 [main] 部分来指示 yum 仅删除其他软件包或组不需要的软件包。

groupremove_leaf_only=值

…其中值是以下之一:0 — yum 在删除软件包组时不应检查每个软件包的依赖关系。使用此设置,yum 将删除软件包组中的所有软件包,无论这些软件包是否是其他软件包或组所需的。

groupremove_leaf_only=0 是默认值。

1 — yum 在删除软件包组时应该检查每个软件包的依赖关系,并且只删除其他软件包或组不需要的软件包。

相关内容