服务器在“ yum remove python”后擦拭[关闭]


65

运行命令后,我刚刚发生了灾难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命令不起作用,因此从管理面板重新启动),现在它不再启动。

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


33
顺便说一句,apt-get remove apt可以正常工作。我还没有尝试过dpkg-删除dpkg。我敢打赌,这真的很糟糕。
joshudson

19
你有备份吧?
vasin1987 '17

21
@joshudson我刚刚在VM中生成了Debian 8.4 live CD并尝试了它。结果:# dpkg --remove dpkg吐出dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed。如果我--force-all在dpkg的命令行中添加了内容,dpkg则会吐出一整套警告并继续删除自身,同时破坏大约两个依赖的其他软件包dpkg。在一个真实的系统上,我很确定您从中恢复时会遇到一些麻烦,但是您可能可以(对.debs来说没有什么魔术);CentOS在这方面可能相似,也可能不相似。
CVn

6
@joshudson之所以起作用,是因为当您发出命令时,内存中正在运行apt的副本...一旦完成(程序终止),您将无法再使用apt。
SnakeDoc

2
我相信,Yum本身是用Python实现的。
peufeu

Answers:


67

对此我深表歉意:让服务器无法启动/无法使用我会感到痛苦。

但是,我在阅读该书时迷路了:

之后,它询问了有关删除依赖项的信息,看起来好像没有什么我想念的,所以我单击了[Y]

作为RHEL / CentOS的重要组成部分,肯定要删除的软件包列表确实非常庞大python。您永远不要确认您不太了解的警告信息。

正如已经建议的,您可以做的最好的事情是通过恢复介质(即livecd)启动,提取所需的数据文件,并使用较新的CentOS版本重新安装您的计算机(由于CentOS 6的版本很旧,建议您以CentOS 7为基础。


2
对于未来:在LVM LV上使用OS来构建服务器(ISTR是RHEL的默认值)。在没有任何机会破坏系统之前,请创建快照。如果确实破坏了系统,则可以在几分钟内恢复到快照。否则,如果一切正常,则可以删除快照。unix.stackexchange.com/questions/18913。NB快照不是备份。对于快照无法保存您的情况,您仍然需要备份。
nigel222 '17

在Debian / Ubuntu上,他可以启动恢复映像(例如finnix),使用debootstrap,chroot和apt-get install ubuntu-desktop解压缩基本系统。不知道centos / rhel是否具有等效的debootstrap。
Edheldil

1
支持CentOS 6直至202011月。不必急于升级(尽管升级到7确实有很多优势)。
psmears

106

坦白说,因为您做了一些您没有完全理解的事情。Python是操作系统的重要组成部分,您认为不重要的事情非常重要。从备份还原。


删除Python时,会yum向您显示一长串也会被删除的软件包。这个列表包含要领等作为yum本身coreutilsnet-tools和其他人。您确认要百胜,您知道自己在做什么,并且仍然想继续进行。结果是系统无法正常工作。这不足为奇。

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


3
哈哈,这很快就升级了(请删除python ==只是擦除整个机器:D)。您是否认为我至少可以恢复/ var / www中的文件,或者完全是foobard?
tadoman

8
@tadoman:如果您可以启动某种救援系统,则可以挂载磁盘并从中恢复数据(这应该是您的所有用户数据,包括配置文件)。您必须联系您的提供商以讨论他们的环境中可能发生的情况。
Sven

6
@RussellBorogove:我什么都不说。yum通过沿依存关系图走动并删除包,直到满足所有依存关系为止。如果程序包A依赖于程序包B,而程序包B依赖于程序包C,yum则在尝试删除程序包C 时也将删除程序包B,进而删除程序包A以满足所有依赖性。对于中央程序包(如python),这可能会导致大量看似无关的已删除软件包。
斯文

4
@RussellBorogove:是的,虽然coreutils不是python直接依赖于CentOS 5,但是通过一个或多个中间包,结果是一样的:删除。
斯文

4
coreutils的中间软件包的数量似乎是两个。python -> cracklib -> pam -> coreutils 之所以存在这种依赖关系,是因为存在与cracklib的python绑定,pam是用cracklib构建的,而su是与pam集成的。当然,它也删除了许多重要的内容,例如,yum安装了更多软件包……
John Mahowald

15

您做了一些事情却没有完全了解后果

该安装是不可恢复的,需要大量工作才能重新安装centos5。那是一个坏计划,因为

  1. CentOS 5已停产,因此没有更新。考虑到它听起来像是在公共Internet上提供内容的网络服务器,并且您使用面板应用程序来控制它,因此这是特别严重的。
  2. CentOS> 5会阻止您进行此更新并杀死该设备。那是一个不错的安全气囊。
  3. CentOS 7声称已支持主要版本升级。我从未使用过它,但是能够在发行时从7跳到8会非常好。Debian从一开始就拥有此功能,但是Redhat始终需要重新安装才能升级主要版本。

最好的选择是创建一个新的VPS,重新安装CentOS7,然后重新附加旧的centos5磁盘卷并将其以只读方式安装。然后,将数据从旧驱动器复制(而不移动)到新驱动器。

请注意,这将是我使用AWS的方法。如果您的VPS提供程序无法将磁盘连接到不同的VM,则必须调整计划。

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


9

怎么会这样 好吧,很简单:删除对服务器至关重要的部件。

面向您的下一步:重新部署新的操作系统并从备份中还原数据。


1
卸载软件包永远不要删除数据。除非确实有一些软件包维护者搞砸了,否则确实不需要恢复任何东西。
约尔格W¯¯米塔格

6
如果OP按照我的建议还原了全新的操作系统,则肯定会需要还原数据和配置。
EEAA

@JörgWMittag我想您可能误解了“恢复”一词的用法。EEAA意味着必须重新配置系统,并将现有数据放置在新计算机上的某个位置。尽管我可以看到有人使用该数据库的还原功能,但“还原”可能并不是最好的选择。
jpmc26

@JörgWMittag哦,很有可能他的数据还在。只是由于他的系统无法运行,他无法访问它。
Shadur

4

正如Dragon788和其他人在评论中所指出的那样,在Gentoo中,开发人员还维护了一组tinderbox软件包,这些软件包只是针对此类情况的操作系统核心软件包集的预构建二进制版本。如果您丢失了核心软件包,则只​​需将系统引导至LiveCD / DVD,然后将损坏的服务器的OS驱动器安装好,然后将tinderbox软件包解压缩到文件系统中,然后进行卸载,重新启动,如果启动正确,将软件包重新构建为服务器的规格和配置。

因此,要在CentOS中执行类似的操作,我认为您需要找到已卸载的RPM的正确版本,然后启动到LiveCD / DVD,安装OS驱动器并插入ch​​root(也许...如果您熟悉,如何使用rpm的“ --relocate ”标志,您可能不需要chroot),然后重新安装这些软件包,然后卸载并重新启动。

当然,由于对CentOS 5的支持已于上个月结束,因此,在正确重启系统后,可以将其更新为当前版本。

HTH。


0

通常,您可以从安装介质启动,然后chroot运行命令或进入当前的安装并恢复文件或重新安装软件包。


4
您将无法在/ usr / bin等目录中没有有用的二进制文件的情况下将chroot更改为根目录。这样做的结果与引导进入无效系统的结果相同。也不需要Chroot,因为一旦挂载了文件系统,就可以从/ var / www复制要恢复的文件。
qris

绝对正确,我回想起安装Gentoo / Arch的地方,通常那里有一些有用的二进制文件。我从来没有先卸载一切。;)
dragon788
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.