После того, как я выполнил команду, со мной произошла катастрофа, 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
команда не работала), и теперь он больше не загружается.
Теперь мой вопрос: как такая команда может уничтожить мой сервер, как этот?
# 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 может или не может быть похожим в этом отношении.Ответы:
Я искренне сожалею: я чувствую боль, когда сервер не загружается / не работает.
Тем не менее, я потерял, читая, что:
Список подлежащих удалению пакетов, безусловно, был действительно огромным, так как
python
является неотъемлемой частью RHEL / CentOS. Вы никогда не должны подтверждать какое-либо предупреждающее сообщение, которое вы действительно не понимаете.Лучшее, что вы можете сделать, как уже предлагалось, - это загрузиться с носителя для восстановления (например, livecd), извлечь необходимые файлы данных и переустановить вашу машину с новым выпуском CentOS (а поскольку CentOS 6 довольно старый, я настоятельно предлагаю вам сделать ребаз на CentOS 7).
источник
Честно говоря, потому что вы сделали что-то, что вы не до конца поняли. Python является неотъемлемой частью операционной системы, и вещи, которые вы считаете неважными, очень важны. Восстановить из резервной копии.
Когда вы удалили Python,
yum
показал вам длинный список пакетов, которые также будут удалены. Этот список содержит такие основы какyum
себяcoreutils
, такnet-tools
и другие. Вы подтвердили, что знаете, что делаете, и хотите продолжить. Результатом этого является нерабочая система. Это не должно удивлять.Напомним, что в более новой версии CentOS это больше невозможно, поскольку некоторые пакеты теперь помечены как защищенные и не могут быть удалены, только переустановлены или обновлены. И поскольку CentOS 5 теперь EOL, сейчас самое время перейти на более новую версию.
источник
yum
работает, идя по графу зависимостей, и удаляет пакеты, пока все зависимости не будут удовлетворены. Если пакет A зависит от пакета B, а пакет B зависит от пакета C,yum
он также удалит пакет B и, в свою очередь, пакет A, чтобы удовлетворить все зависимости, если вы попытаетесь удалить пакет C. Для центральных пакетов (напримерpython
) это может привести к большое количество удаленных пакетов, которые, по-видимому, не связаны.coreutils
это не зависитpython
напрямую от CentOS 5, но через один или несколько промежуточных пакетов - результат тот же: Удаление.python -> cracklib -> pam -> coreutils
Зависимость существует, потому что есть привязки Python к cracklib, pam был построен с cracklib, и этот su интегрирован с pam. Конечно, для этого потребовалось много важных вещей, таких как yum, чтобы установить больше пакетов ...Вы сделали что-то без полного понимания последствий
Эта установка необратима, для переустановки centos5 потребуется много работы. И это плохой план, потому что
Решение
Лучше всего создать новый VPS, заново установить CentOS7, а затем заново подключить старый том диска centos5 и смонтировать его только для чтения. Затем работайте, чтобы скопировать (а не переместить) ваши данные со старого диска на новый.
Обратите внимание, что это мой метод с использованием AWS. Если ваш VPS-провайдер не может подключить диски к разным виртуальным машинам, вам придется изменить план.
Независимо от того, что вы делаете, рассмотрите возможность создания автоматических резервных копий в будущем. Это не спасет вас, но сделает восстановление более гибким. Прямо сейчас вам нужны данные на этом диске на новом рабочем сервере. Не теряйте существующий диск.
источник
Как такое могло произойти? Ну, довольно просто: удалив части, которые были критически важны для вашего сервера.
Следующие шаги для вас: повторно разверните новую ОС и восстановите ваши данные из резервных копий.
источник
Как отмечают dragon788 и другие в комментариях, в Gentoo разработчики также поддерживают набор пакетов tinderbox, которые являются просто предварительно созданными, двоичными версиями набора базовых пакетов ОС для именно таких ситуаций. Если вы теряете основной пакет, вы просто загружаете систему на LiveCD / DVD, монтируете диск операционной системы сломанного сервера и распаковываете пакет (ы) tinderbox в файловую систему, размонтируете, перезагружаете и, если он загружается правильно, Перестройте пакеты обратно в спецификации и настройки вашего сервера.
Итак, чтобы выполнить нечто подобное в CentOS, я думаю, вам нужно будет найти правильные версии RPM, которые были удалены, затем загрузиться с LiveCD / DVD, смонтировать диск с ОС и выполнить загрузку (возможно ... если вы знакомы с использованием флага « --relocate » для rpm , вам может не потребоваться выполнить chroot), затем переустановить эти пакеты, размонтировать и перезагрузить.
Конечно, поскольку поддержка CentOS 5 прекратилась в прошлом месяце, после того, как вы правильно перезагрузите систему, вы можете обновить ее до текущей версии.
НТН.
источник
Обычно вы можете загрузиться с установочного носителя, а затем
chroot
запустить команды или войти в текущую установку и восстановить файлы или выполнить переустановку пакетов.источник