Сервер уничтожен после «yum remove python» [закрыто]

65

После того, как я выполнил команду, со мной произошла катастрофа, yum remove pythonи теперь я больше не могу загружать сервер.

Как это произошло: я попытался обновить некоторые приложения с помощью yum на моем CentOS 5 VPS, и команда не выполнялась из-за какой-то странной ошибки Python 2.4. Я заметил, что моя версия python была старой, и я попытался переустановить ее, сначала удалив, и я так и сделал yum remove python.

После этого он спросил меня об удалении зависимостей и выглядел так, будто я ничего не мог пропустить, поэтому я нажал Y.

Таким образом, последствием этого было то, что я не мог выполнить какую-либо команду, как раньше. Я даже пытался, cd /var/wwwно он сказал что-то вроде " command does not exist in /usr/bin". Когда я привык tabвидеть предложения по навигации по папкам, файловая структура все еще существовала (по крайней мере, часть, /var/wwwкоторая действительно важна для меня). После этого я попытался перезапустить vps (из панели администратора, так как rebootкоманда не работала), и теперь он больше не загружается.

Теперь мой вопрос: как такая команда может уничтожить мой сервер, как этот?

tadoman
источник
33
Кстати, apt-get remove apt работает. Я еще не пробовал dpkg --remove dpkg. Могу поспорить, что это действительно плохо.
Джошудсон
19
У вас есть резервная копия, верно?
vasin1987
21
@joshudson Я просто развернул live-диск Debian 8.4 на виртуальной машине и попробовал его. Результат: # dpkg --remove dpkgвыплевывает dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Если я добавлю --force-allв командную строку dpkg, dpkgвыложит целый пакет предупреждений и продолжит удаление, вместе с нарушением порядка двух десятков других пакетов, от которых зависит dpkg. В реальной системе я почти уверен, что у вас будут некоторые проблемы с восстановлением после этого, но вы, вероятно, могли бы (немного магии .deb); CentOS может или не может быть похожим в этом отношении.
CVn
6
@joshudson Это работает, потому что при запуске команды в памяти работает копия apt ... как только она завершится (и программа завершится), вы больше не сможете использовать apt.
SnakeDoc
2
Я полагаю, что сам Yum реализован в Python ... Так что удаление Python довольно хорошо!
peufeu

Ответы:

67

Я искренне сожалею: я чувствую боль, когда сервер не загружается / не работает.

Тем не менее, я потерял, читая, что:

После этого он спросил меня об удалении зависимостей и выглядел так, будто я ничего не мог пропустить, поэтому я нажал [Y]

Список подлежащих удалению пакетов, безусловно, был действительно огромным, так как pythonявляется неотъемлемой частью RHEL / CentOS. Вы никогда не должны подтверждать какое-либо предупреждающее сообщение, которое вы действительно не понимаете.

Лучшее, что вы можете сделать, как уже предлагалось, - это загрузиться с носителя для восстановления (например, livecd), извлечь необходимые файлы данных и переустановить вашу машину с новым выпуском CentOS (а поскольку CentOS 6 довольно старый, я настоятельно предлагаю вам сделать ребаз на CentOS 7).

shodanshok
источник
2
На будущее: создайте серверы с ОС на LVM LV (который ISTR является RHEL по умолчанию). Прежде чем что-либо, что имеет хоть малейший шанс сломать систему, создайте снимок (и). Если это действительно нарушает работу системы, вы можете вернуться к снимку за считанные минуты. В противном случае, когда все в порядке, вы можете удалить снимок. unix.stackexchange.com/questions/18913 . NB снимки не являются резервными копиями. Вам все еще нужны резервные копии для ситуаций, когда снимок не может вас спасти.
nigel222
В Debian / Ubuntu он может загрузить образ для восстановления (например, finnix), распаковать базовую систему с помощью debootstrap, chroot и apt-get install ubuntu-desktop. Понятия не имею, есть ли у centos / rhel эквивалент debootstrap.
Edheldil
1
CentOS 6 поддерживается до ноября 2020 года . Там нет спешки для обновления (хотя переход к 7 имеет много преимуществ).
psmears
106

Честно говоря, потому что вы сделали что-то, что вы не до конца поняли. Python является неотъемлемой частью операционной системы, и вещи, которые вы считаете неважными, очень важны. Восстановить из резервной копии.


Когда вы удалили Python, yumпоказал вам длинный список пакетов, которые также будут удалены. Этот список содержит такие основы как yumсебя coreutils, так net-toolsи другие. Вы подтвердили, что знаете, что делаете, и хотите продолжить. Результатом этого является нерабочая система. Это не должно удивлять.

Напомним, что в более новой версии CentOS это больше невозможно, поскольку некоторые пакеты теперь помечены как защищенные и не могут быть удалены, только переустановлены или обновлены. И поскольку CentOS 5 теперь EOL, сейчас самое время перейти на более новую версию.

Свен
источник
3
Ха-ха, что быстро обострилось (ням удалить Python == просто стереть всю машину: D). Вы считаете, есть ли какой-нибудь способ, которым я могу хотя бы восстановить файлы, которые были в / var / www, или это тоже полностью foobard?
tadoman
8
@tadoman: Если вы сможете загрузиться в какую-нибудь спасательную систему, вы сможете смонтировать диск и восстановить с него данные (это должны быть все ваши пользовательские данные, включая файлы конфигурации). Вы должны связаться со своим провайдером, чтобы обсудить, что возможно в их среде.
Свен
6
@RussellBorogove: я не говорю ни об этом. yumработает, идя по графу зависимостей, и удаляет пакеты, пока все зависимости не будут удовлетворены. Если пакет A зависит от пакета B, а пакет B зависит от пакета C, yumон также удалит пакет B и, в свою очередь, пакет A, чтобы удовлетворить все зависимости, если вы попытаетесь удалить пакет C. Для центральных пакетов (например python) это может привести к большое количество удаленных пакетов, которые, по-видимому, не связаны.
Свен
4
@RussellBorogove: Да, именно так, хотя coreutilsэто не зависит pythonнапрямую от CentOS 5, но через один или несколько промежуточных пакетов - результат тот же: Удаление.
Свен
4
Количество промежуточных пакетов для coreutils, по-видимому, равно двум. python -> cracklib -> pam -> coreutils Зависимость существует, потому что есть привязки Python к cracklib, pam был построен с cracklib, и этот su интегрирован с pam. Конечно, для этого потребовалось много важных вещей, таких как yum, чтобы установить больше пакетов ...
Джон
15

Вы сделали что-то без полного понимания последствий

Эта установка необратима, для переустановки centos5 потребуется много работы. И это плохой план, потому что

  1. CentOS 5 является концом жизни, и поэтому не имеет обновлений. Это очень серьезно, учитывая, что это звучит как веб-сервер, обслуживающий контент в общедоступном Интернете, и что вы используете приложения панели для управления им.
  2. CentOS> 5 не позволил бы вам сделать это обновление и убить коробку. Это хорошая подушка безопасности.
  3. CentOS 7 заявляет о поддержке основных обновлений версий. Я никогда не использовал его, но возможность перейти с 7 на 8, когда он выйдет, будет очень хорошей. У Debian это было с незапамятных времен, но Redhat всегда требовал переустановки для перехода к основной версии.

Решение

Лучше всего создать новый VPS, заново установить CentOS7, а затем заново подключить старый том диска centos5 и смонтировать его только для чтения. Затем работайте, чтобы скопировать (а не переместить) ваши данные со старого диска на новый.

Обратите внимание, что это мой метод с использованием AWS. Если ваш VPS-провайдер не может подключить диски к разным виртуальным машинам, вам придется изменить план.

Независимо от того, что вы делаете, рассмотрите возможность создания автоматических резервных копий в будущем. Это не спасет вас, но сделает восстановление более гибким. Прямо сейчас вам нужны данные на этом диске на новом рабочем сервере. Не теряйте существующий диск.

Criggie
источник
9

Как такое могло произойти? Ну, довольно просто: удалив части, которые были критически важны для вашего сервера.

Следующие шаги для вас: повторно разверните новую ОС и восстановите ваши данные из резервных копий.

EEAA
источник
1
Удаление пакета никогда не должно удалять данные. На самом деле не должно быть необходимости что-либо восстанавливать, если только какой-то сопровождающий не по-королевски облажался.
Йорг Миттаг
6
Если OP восстанавливает новую ОС, как я рекомендовал, восстановление данных и конфигурации, несомненно, потребуется.
EEAA
@ JörgWMittag Думаю, вы неправильно поняли использование слова «восстановить». EEAA означает, что система должна быть перенастроена, а существующие данные размещены где-то на новом компьютере. «Восстановление», возможно, не лучшее слово для этого, хотя я мог видеть кого-то, кто использовал функцию восстановления базы данных для этой части.
jpmc26
@ JörgWMittag О , скорее всего , его данные все еще там. Просто из-за нефункциональности системы у него нет возможности получить к ней доступ.
Шадур
4

Как отмечают dragon788 и другие в комментариях, в Gentoo разработчики также поддерживают набор пакетов tinderbox, которые являются просто предварительно созданными, двоичными версиями набора базовых пакетов ОС для именно таких ситуаций. Если вы теряете основной пакет, вы просто загружаете систему на LiveCD / DVD, монтируете диск операционной системы сломанного сервера и распаковываете пакет (ы) tinderbox в файловую систему, размонтируете, перезагружаете и, если он загружается правильно, Перестройте пакеты обратно в спецификации и настройки вашего сервера.

Итак, чтобы выполнить нечто подобное в CentOS, я думаю, вам нужно будет найти правильные версии RPM, которые были удалены, затем загрузиться с LiveCD / DVD, смонтировать диск с ОС и выполнить загрузку (возможно ... если вы знакомы с использованием флага « --relocate » для rpm , вам может не потребоваться выполнить chroot), затем переустановить эти пакеты, размонтировать и перезагрузить.

Конечно, поскольку поддержка CentOS 5 прекратилась в прошлом месяце, после того, как вы правильно перезагрузите систему, вы можете обновить ее до текущей версии.

НТН.

B.Kaatz
источник
0

Обычно вы можете загрузиться с установочного носителя, а затем chrootзапустить команды или войти в текущую установку и восстановить файлы или выполнить переустановку пакетов.

dragon788
источник
4
Вы не сможете войти в корневой каталог без полезных двоичных файлов в / usr / bin и т. Д. Это даст тот же результат, что и загрузка в мертвую систему. Chroot также не нужен, потому что после того, как вы смонтировали файловую систему, вы можете скопировать файлы, которые вы хотите спасти, из / var / www.
qris
Определенно верно, я вспоминаю установку Gentoo / Arch, где обычно есть несколько полезных двоичных файлов. Я никогда не удалял все сначала. ;)
dragon788