当我运行此命令时
$ 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
您正在尝试删除一些必需的软件包,如果删除这些软件包,将会破坏您的系统:
python
:yum
是用 Python 编写的,因此不能删除该包,否则您将丢失包管理器。binutils
:systemd
需要这个包,systemd 是你的 init 系统,这对于使用 CentOS 7 至关重要。gawk
:很多事情都依赖于gawk
,包括yum
和systemd
。
您不能删除那些关键的系统包,因此请从要删除的包列表中排除python
、binutils
和。gawk
请注意,您仍在尝试删除一些有用的软件包,如gettext
、sudo
和wget
,这些软件包可能不会严重破坏您的系统,但可能会降低可用性。
答案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 在删除软件包组时应该检查每个软件包的依赖关系,并且只删除其他软件包或组不需要的软件包。