Вопрос: Сервер вытерт после «yum remove python» [закрыт]


Мне пришла в голову катастрофа после запуска команды 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«Когда я использовал табуляция чтобы увидеть предложения по навигации по папкам, структура файла все еще, казалось, была там (по крайней мере, /var/www бит, что действительно важно для меня). После этого я попытался перезапустить vps (с панели администратора с тех пор reboot команда не работала), и теперь она больше не загружается.

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


62
2018-04-15 18:54


Источник


Кстати, apt-get удаляет apt works. Я еще не пробовал dpkg --remove dpkg. Держу пари, это очень плохо. - joshudson
У вас есть резервная копия, верно? - vasin1987
@joshudson Я только что развернул Live CD 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 может быть или не быть подобным в этом отношении. - Michael Kjörling
@joshudson Это работает, потому что есть копия apt, работающая в памяти при выдаче команды ... как только она закончится (и программа завершается), вы больше не сможете использовать apt. - SnakeDoc
Сам Yum реализован в Python, я верю ... Так что удаление Python очень хорошо стреляет в вашу ногу! - peufeu


Ответы:


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

Тем не менее, я теряюсь, читая это:

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

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

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


66
2018-04-16 11:04



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


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


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

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


105
2018-04-15 19:23



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


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

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

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

Решение

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

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

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


15
2018-04-16 21:31





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

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


9
2018-04-15 19:22



Удаление пакета должно никогда удалить данные. Там действительно не должно быть необходимости восстанавливать что-либо, если только какой-то сторонник пакета не поправился. - Jörg W Mittag
Если OP восстанавливает новую ОС, как я рекомендовал, восстановление данных и конфигурации, безусловно, потребуется. - EEAA♦
@ JörgWMittag Я думаю, вы, возможно, неправильно поняли использование слова «восстановить». EEAA означает, что система должна быть переконфигурирована, а существующие данные размещены где-то на новой машине. «Восстановить» может не быть лучшим словом для этого, хотя я мог видеть, что кто-то использует функцию восстановления базы данных для этой части. - jpmc26
@ JörgWMittag О, его данные все еще там, скорее всего. Просто, когда его система нефункциональна, у него нет доступа к ней. - Shadur


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

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

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

НТН.


4
2018-04-17 19:28





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


0
2018-04-16 03:56



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