Сервер витирається після "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команда не працювала), і тепер вона більше не завантажується.

Тепер моє запитання: як така команда може знищити мій сервер так?


33
До речі, apt-get remove apt працює. Я ще не пробував dpkg - зніміть dpkg. Б'юсь об заклад, що це справді погано.
Джошудсон

19
У вас є резервна копія, правда?
vasin1987

21
@joshudson Я просто закрутила живий компакт-диск 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).


2
На майбутнє: будуйте сервери з ОС на LVM LV (що за замовчуванням ISTR є RHEL). Перш ніж все, що має навіть найменший шанс зламати систему, створіть знімки. Якщо вона дійсно зламає систему, ви можете повернутися до знімка за лічені хвилини. В іншому випадку, коли все в порядку, ви можете видалити знімок. unix.stackexchange.com/questions/18913 . Знімки NB не є резервними копіями. Ви все ще потребуєте резервного копіювання в ситуаціях, коли знімок не може врятувати вас.
nigel222

На Debian / Ubuntu він може завантажувати зображення для відновлення (наприклад, finnix), розпаковувати базову систему з debootstrap, chroot та apt-get install ubuntu-desktop. Не маю уявлення, чи є центос / рель еквівалент 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?
тадоман

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 Залежність існує, оскільки існують прив'язки пітона до cracklib, пам була побудована з cracklib, і це su інтегровано з pam. Звичайно, це також зайняло багато важливих речей, як, наприклад, yum для встановлення більше пакетів ...
Джон Mahowald

15

Ви щось зробили, не розуміючи повністю наслідків

Ця установка не може бути відновлена, вимагає багато роботи для перевстановлення centos5. І це поганий план, тому що

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

Рішення

Ваша найкраща ставка - створити новий VPS, свіжий встановити CentOS7, а потім знову встановити старий обсяг диска centos5 і встановити його лише для читання. Потім працюйте над копіюванням (не переміщенням) своїх даних зі старого диска на новий.

Зауважте, це був би мій метод з використанням AWS. Якщо ваш постачальник VPS не може приєднувати диски до різних VM, тоді вам доведеться підготувати план.

Незалежно від того, чим займаєтесь, будь ласка, роздумайте про створення автоматичних резервних копій у майбутньому. Це не заощадить вас, але зробить відновлення дещо гнучкішим. Зараз вам потрібні дані на цьому диску на новому працюючому сервері. Не втрачайте наявний диск.


9

Як це могло статися? Ну, досить просто: видаливши критичні для вашого сервера частини.

Наступні кроки для вас: повторно розгорніть нову ОС та відновіть дані із резервного копіювання.


1
Видалення пакета ніколи не повинна видаляти дані. Справді нічого не слід реставрувати, якщо тільки якийсь сервісний пакет не по-справжньому перекручений.
Йорг W Міттаг

6
Якщо ОП відновить свіжу ОС, як я рекомендував, відновлення даних та конфігурації буде найбезпечнішим.
EEAA

@ JörgWMittag Я думаю, ви могли неправильно зрозуміти вживання слова "відновити". EEAA означає, що систему доведеться перенастроювати, а наявні дані розміщувати десь на новій машині. "Відновити", можливо, не найкраще слово для цього, хоча я міг бачити, як хтось використовує функцію відновлення бази даних для цього фрагмента.
jpmc26

@ JörgWMittag О, його дані все ще є, швидше за все. Просто у його нефункціональної системи він не має доступу до неї.
Шадур

4

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

Отже, щоб виконати щось подібне в CentOS, я думаю, вам знадобиться знайти правильні версії RPM, які були видалені, а потім завантажтесь на LiveCD / DVD, встановіть дисковод ОС і chroot (можливо ... якщо ви знайомі з тим, як використовувати прапор " --relocate " для rpm , можливо, вам не потрібно буде chroot), а потім перевстановіть ці пакунки, відключіть і перезавантажте.

Звичайно, оскільки підтримка CentOS 5 закінчилася минулого місяця, після належної перезавантаження системи ви можете оновити її до поточної версії.

HTH.


0

Зазвичай ви можете завантажуватися з інсталяційного носія, а потім chrootвиконувати команди або входити в поточну установку та відновлення файлів або виконувати перевстановлення пакетів.


4
Ви не зможете хронізувати в кореневий каталог без корисних бінарних файлів у / usr / bin тощо. Це дало б такий самий результат, як завантаження в мертву систему. Chroot також не потрібен, оскільки після встановлення файлової системи ви можете скопіювати файли, які ви хочете врятувати з / var / www.
qris

Безумовно, правда, я пригадую встановлення Gentoo / Arch там, де зазвичай є корисні бінарні файли. Я ніколи не спочатку все видаляв. ;)
dragon788
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.