“yum remove python”后服务器被擦除

tad*_*man 65 centos yum

在我运行命令后,我发生了一场灾难yum remove python,现在我无法再启动服务器了。

它是如何发生的:我尝试在 CentOS 5 VPS 上通过 yum 更新一些应用程序,但由于一些奇怪的 python 2.4 错误,命令失败。我注意到我的 python 版本很旧,我尝试通过首先删除它来重新安装它,所以我做了yum remove python.

在那之后,它问了我一些关于删除依赖项的问题,看起来我不会错过任何东西,所以我点击了Y

所以后果是我无法运行任何命令。我什至尝试过,cd /var/www但它说的是“ command does not exist in /usr/bin”之类的东西。当我tab以前看到文件夹导航建议时,文件结构似乎仍然存在(至少/var/www对我来说非常重要的一点)。之后我尝试重新启动 vps(从管理面板,因为reboot命令不起作用),现在它不再启动。

现在我的问题是:这样的命令怎么可能像这样破坏我的服务器?

Sve*_*ven 106

坦白说,因为你做了一些你不完全理解的事情。Python 是操作系统的重要组成部分,您认为不重要的东西非常重要。从备份中恢复。


当您删除 Python 时,yum向您展示了一长串也将被删除的包。此列表包含yum自身coreutilsnet-tools和其他等要素。您向 yum 确认您知道自己在做什么并且无论如何都想继续。这样做的结果是一个非工作系统。这应该不足为奇。

作为记录,在较新的 CentOS 版本上,这不再可能,因为某些软件包现在被标记为受保护且无法删除,只能重新安装或升级。由于 CentOS 5 现在已经停产,现在是升级到更新版本的好时机。

  • @tadoman:如果您可以启动到某种救援系统,您将能够挂载磁盘并从中恢复数据(这应该是*所有*的用户数据,包括配置文件)。您必须联系您的提供商,讨论在他们的环境中可能发生的事情。 (8认同)
  • @RussellBorogove:这两个我都不说。`yum` 通过遍历依赖关系图来工作,它会删除包,直到满足所有依赖关系。如果包 A 依赖于包 B 而包 B 依赖于包 C,`yum` 也将删除包 B,反过来,如果你尝试删除包 C,包 A 以满足所有依赖项。对于中央包(如 `python`) ,这可能会导致大量看似无关的被删除包。 (6认同)
  • @RussellBorogove:是的,确实如此,虽然`coreutils` 在CentOS 5 中不直接依赖于`python`,而是通过一个或多个中间包——结果是一样的:删除。 (4认同)
  • coreutils 的中间包数量似乎是两个。`python -> cracklib -> pam -> coreutils` 存在依赖是因为有python绑定到cracklib,pam是用cracklib构建的,而su是和pam集成的。当然它也去掉了很多重要的东西,比如 yum 安装更多的包...... (4认同)
  • 哈哈,升级很快(yum remove python == 只是擦拭整台机器:D)。您认为是否有任何方法可以至少恢复 /var/www 中的文件或者完全是 foobard ? (3认同)

sho*_*hok 67

我真的很抱歉:我能感受到服务器无法启动/无法使用的痛苦。

但是,我在阅读时迷失了:

之后它问了我一些关于删除依赖项的问题,看起来我不会错过任何东西,所以我点击了 [Y]

要删除的软件包列表确实非常庞大,因为它python是 RHEL/CentOS 的重要组成部分。你永远不应该确认一些你并不真正理解的警告消息。

正如已经建议的那样,您可以做的最好的事情是通过恢复媒体(即:livecd)启动,提取所需的数据文件,然后使用较新的 CentOS 版本重新安装您的机器(因为 CentOS 6 已经很旧了,我强烈建议建议您重新基于 CentOS 7)。

  • 未来:使用 LVM LV 上的操作系统构建服务器(ISTR 是 RHEL 的默认设置)。在任何有可能破坏系统的事情发生之前,先创建快照。如果它确实破坏了系统,您可以在几分钟内恢复到快照。否则,当一切正常时,您可以删除快照。https://unix.stackexchange.com/questions/18913。NB 快照不是备份。对于快照无法保存您的情况,您仍然需要备份。 (2认同)

Cri*_*gie 15

你在没有完全理解后果的情况下做了某事

该安装无法恢复,需要大量工作才能重新安装centos5。这是一个糟糕的计划,因为

  1. CentOS 5 生命周期结束,因此没有更新。考虑到这听起来像是在公共互联网上提供内容的网络服务器,并且您使用面板应用程序来控制它,因此这尤为严重。
  2. CentOS > 5 会阻止您进行此更新并杀死该框。这是一个很好的安全气囊。
  3. CentOS 7 声称支持到位的主要版本升级。我从来没有用过它,但是当它发布时能够从 7 跳到 8 会非常好。Debian 一直有这个,但 Redhat 总是需要重新安装以进行主要版本跳转。

解决方案

最好的办法是创建一个新的 VPS,全新安装 CentOS7,然后重新附加旧的 centos5 磁盘卷并将其挂载为只读。然后努力将您的数据从旧驱动器复制(而不是移动)到新驱动器。

请注意,这将是我使用 AWS 的方法。如果您的 VPS 提供商无法将磁盘附加到不同的 VM,那么您将不得不调整计划。

无论您做什么,请考虑在将来设置自动备份。它不会拯救您,但会使恢复更加灵活。现在,您需要在新的工作服务器中该磁盘上的数据。不要松开现有的磁盘。


EEA*_*EAA 9

这怎么会发生?嗯,很简单:通过删除对您的服务器至关重要的部分。

为您准备的后续步骤:重新部署全新的操作系统并从备份中恢复您的数据。

  • 如果 OP 像我推荐的那样恢复新的操作系统,则肯定需要恢复数据和配置。 (6认同)