Frage Server gelöscht nach "yum remove python" [geschlossen]


Mir ist gerade ein Desaster passiert, nachdem ich den Befehl ausgeführt habe yum remove python und jetzt kann ich den Server nicht mehr hochfahren.

Wie es passiert ist: Ich habe versucht, einige Apps über yum auf meinem CentOS 5 VPS zu aktualisieren und der Befehl ist aufgrund eines seltsamen Python 2.4 Fehlers fehlgeschlagen. Ich bemerkte, dass meine Version von Python alt war und ich versuchte es neu zu installieren, indem ich es zuerst entfernte, und so tat ich es yum remove python.

Danach fragte ich etwas über das Entfernen von Abhängigkeiten und es sah so aus, als ob ich nichts verpassen könnte, also klickte ich Y.

Die Folge davon war, dass ich keinen Befehl mehr ausführen konnte. Ich habe es sogar versucht cd /var/www aber es sagte so etwas wie "command does not exist in /usr/bin". Als ich gebraucht habe Tab Um Vorschläge zur Ordner - Navigation zu sehen, schien die Dateistruktur noch da zu sein (zumindest die /var/www Bit, das mir wirklich wichtig ist). Danach habe ich versucht, die vps (seit dem Admin Panel) neu zu starten reboot Befehl hat nicht funktioniert) und jetzt bootet es nicht mehr.

Jetzt ist meine Frage: Wie kann ein solcher Befehl meinen Server so zerstören?


62
2018-04-15 18:54


Ursprung


Übrigens funktioniert apt-get remove apt. Ich habe dpkg --remove dpkg noch nicht ausprobiert. Ich wette, das ist wirklich schlimm. - joshudson
Sie haben ein Backup, oder? - vasin1987
@joshudson Ich habe gerade eine Debian-8.4-Live-CD in einer VM hochgespielt und ausprobiert. Ergebnis: # dpkg --remove dpkg ausspucken dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Wenn ich hinzufüge --force-all zu dpkg Befehlszeile, dpkg spuckt ein ganzes Bündel von Warnungen aus und fährt fort, sich selbst zu entfernen, zusammen mit dem Zerbrechen von ungefähr zwei Dutzend anderen Paketen, von denen es abhängt dpkg. Auf einem echten System bin ich mir ziemlich sicher, dass Sie Schwierigkeiten haben werden, sich davon zu erholen, aber Sie wahrscheinlich könnte (Es gibt wenig Magie zu .debs); CentOS kann in dieser Hinsicht ähnlich sein oder auch nicht. - α CVn
@joshudson Es funktioniert, weil es eine Kopie von apt im Speicher gibt, wenn Sie den Befehl ausgeben ... sobald es fertig ist (und das Programm beendet wird), können Sie apt nicht mehr verwenden. - SnakeDoc
Yum selbst ist in Python implementiert, glaube ich ... Also, Python zu entfernen, schießt deinen eigenen Fuß ziemlich gut! - peufeu


Antworten:


Es tut mir aufrichtig leid: Ich kann den Schmerz spüren, dass ein Server nicht mehr bootfähig / unbrauchbar ist.

Allerdings bin ich beim Lesen verloren:

Danach hat es mich etwas über das Entfernen von Abhängigkeiten und es gefragt   sah aus wie nichts, das ich vermissen könnte, also habe ich [Y] geklickt

Die Liste der zu entfernenden Pakete war sicherlich Ja wirklich riesig, als python ist ein wesentlicher Bestandteil von RHEL / CentOS. Du solltest noch nie Bestätigen Sie einige Warnmeldungen, die Sie nicht wirklich verstehen.

Das Beste, was Sie tun können, ist, wie bereits erwähnt, das Booten über ein Wiederherstellungsmedium (zB: livecd), das Extrahieren der benötigten Datendateien und die Neuinstallation Ihres Rechners mit einer neueren CentOS-Version (und CentOS 6 ist ziemlich alt, stark empfehle Ihnen, auf CentOS 7 zu rebasen).


67
2018-04-16 11:04



Für die Zukunft: Erstellen Sie Server mit dem Betriebssystem auf LVM-LVs (wobei der ISTR-Wert der RHEL-Standard ist). Vor allem, was die geringste Chance hat, das System zu zerstören, erstellen Sie Snapshot (s). Wenn das System dadurch beschädigt wird, können Sie den Snapshot in Minuten wiederherstellen. Andernfalls, wenn alles in Ordnung ist, können Sie den Schnappschuss entfernen. unix.stackexchange.com/questions/18913. NB Snapshots sind keine Backups. Sie benötigen weiterhin Sicherungen für Situationen, in denen der Snapshot Sie nicht speichern kann. - nigel222
Unter Debian / Ubuntu konnte er ein Wiederherstellungsabbild booten (z. B. finnix), das Basissystem mit debootstrap, chroot und apt-get install ubuntu-desktop entpacken. Keine Ahnung, ob Centos / Rhel gleich Bootstrap haben. - Edheldil
CentOS 6 wird bis unterstützt November 2020. Es gibt keine Eile zu aktualisieren (obwohl zu 7 hat viele Vorteile). - psmears


Ehrlich gesagt, weil du etwas getan hast, was du nicht ganz verstanden hast. Python ist ein wesentlicher Teil des Betriebssystems und die Dinge, die Sie für unwichtig hielten, sind sehr wichtig. Von der Sicherung wiederherstellen.


Wenn Sie Python entfernt haben, yum zeigte Ihnen eine lange Liste von Paketen, die ebenfalls entfernt wurden. Diese Liste enthält die wichtigsten Grundlagen wie yum selbst, coreutils, net-tools und andere. Du hast bestätigt, dass du weißt, was du machst und trotzdem weitergehen willst. Das Ergebnis ist ein nicht funktionierendes System. Dies sollte nicht überraschend sein.

Zur Erinnerung, auf neueren CentOS-Versionen ist dies nicht mehr möglich, da bestimmte Pakete jetzt als geschützt markiert sind und nicht entfernt, nur neu installiert oder aufgerüstet werden können. Und da CentOS 5 jetzt sowieso EOL ist, ist dies ein guter Zeitpunkt für ein Upgrade auf eine neuere Version.


106
2018-04-15 19:23



Haha gut, dass es schnell eskalierte (yum entferne python == Wipe ganze Maschine nur: D). Rechnen Sie, ob ich die Dateien, die sich in / var / www befanden, irgendwie wiederherstellen kann oder ist das auch komplett foochard? - tadoman
@tadoman: Wenn Sie in eine Art Rettungssystem starten können, können Sie die Festplatte mounten und Daten von ihr wiederherstellen (das sollte sein alles Ihrer Benutzerdaten, einschließlich Konfigurationsdateien). Sie müssen sich an Ihren Anbieter wenden, um zu besprechen, was in seiner Umgebung möglich ist. - Sven♦
@ RussellBorogove: Ich sage das auch nicht. yum arbeitet, indem er das Abhängigkeitsdiagramm heruntergeht und Pakete entfernt, bis alle Abhängigkeiten erfüllt sind. Wenn Paket A von Paket B abhängt und Paket B von Paket C abhängt, yum wird auch Paket B entfernen und wiederum Paket A, um alle Abhängigkeiten zu erfüllen, wenn Sie versuchen, Paket C zu entfernen. Für zentrale Pakete (wie python), kann dies zu einer großen Anzahl entfernter Pakete führen, die scheinbar nichts miteinander zu tun haben. - Sven♦
@ RussellBorogove: Ja, genau, obwohl coreutils kommt nicht darauf an python direkt in CentOS 5, aber über ein oder mehrere Zwischenpakete - das Ergebnis ist das gleiche: Entfernen. - Sven♦
Die Anzahl der Zwischenpakete zu Coreutils scheint zwei zu sein. python -> cracklib -> pam -> coreutils  Die Abhängigkeit besteht, da Python-Bindungen zu cracklib, pam mit cracklib und su mit pam integriert sind. Natürlich hat es auch viele wichtige Dinge rausgeholt, wie yum um weitere Pakete zu installieren ... - John Mahowald


Du hast etwas ohne gemacht die Konsequenzen vollständig verstehen 

Diese Installation ist unwiederbringlich und würde eine Neuinstallation von centos5 erfordern. Und das ist ein schlechter Plan, weil

  1. CentOS 5 ist End of Life und hat daher keine Updates. Dies ist besonders gravierend, da es sich anhört wie ein Webserver, der Inhalte im öffentlichen Internet bereitstellt und mit Panel-Apps gesteuert wird.
  2. CentOS> 5 hätte dich davon abgehalten, dieses Update zu machen und die Box zu töten. Das ist ein schöner Airbag.
  3. CentOS 7 behauptet, größere Versionsupgrades zu unterstützen. Ich habe es nie benutzt, aber es wird sehr gut sein, von 7 auf 8 zu springen, wenn es veröffentlicht wird. Debian hatte dies seit Ewigkeiten, aber Redhat benötigte immer eine Neuinstallation für größere Versionssprünge.

Lösung

Am besten ist es, einen neuen VPS zu erstellen, CentOS7 neu zu installieren und dann den alten centos5-Datenträger wieder anzubringen und ihn schreibgeschützt zu installieren. Arbeiten Sie dann daran, Ihre Daten vom alten Laufwerk auf das neue Laufwerk zu kopieren (nicht zu verschieben).

Beachten Sie, dass dies meine Methode mit AWS wäre. Wenn Ihr VPS-Anbieter keine Festplatten an verschiedene VMs anhängen kann, müssen Sie den Plan optimieren.

Unabhängig davon, was Sie tun, sollten Sie in Zukunft automatische Backups einrichten. Es würde dich nicht retten, aber es würde die Erholung etwas flexibler machen. Im Moment benötigen Sie die Daten auf diesem Datenträger in einem neuen funktionierenden Server. Verlieren Sie nicht die vorhandene Festplatte.


15
2018-04-16 21:31





Wie konnte das passieren? Nun, ganz einfach: Indem Sie Teile entfernen, die für Ihren Server kritisch waren.

Nächste Schritte für Sie: Stellen Sie ein neues Betriebssystem erneut bereit und stellen Sie Ihre Daten aus den Sicherungen wieder her.


9
2018-04-15 19:22



Deinstallieren eines Pakets sollte niemals Daten entfernen Es sollte wirklich nicht nötig sein, etwas zu restaurieren, es sei denn, ein Paketbetreuer hätte es königlich vermasselt. - Jörg W Mittag
Wenn das OP ein neues Betriebssystem wiederherstellt, wie ich es empfohlen habe, ist die Wiederherstellung von Daten und Konfiguration sicher erforderlich. - EEAA
@ JörgWMittag ich denke du hättest die Verwendung des Wortes "restore" vielleicht missverstanden. EEAA bedeutet, dass das System neu konfiguriert werden muss und die vorhandenen Daten irgendwo auf der neuen Maschine platziert werden müssen. "Wiederherstellen" ist möglicherweise nicht das beste Wort dafür, obwohl ich jemanden sehen könnte, der die Datenbankwiederherstellungsfunktionalität für dieses Stück verwendet. - jpmc26
@ JörgWMittag Oh, sein Daten ist immer noch da, höchstwahrscheinlich. Es ist nur so, dass er mit seinem System nicht funktional ist, hat er keine Möglichkeit, darauf zuzugreifen. - Shadur


Wie von dragon788 und anderen in den Kommentaren erwähnt, pflegen die Entwickler in Gentoo auch eine Reihe von Zunderbüchse Pakete, die nur vorinstalliert sind, binäre Versionen einer Reihe von Kern-Pakete des Betriebssystems für genau solche Situationen. Wenn Sie ein Kernpaket verlieren, wird das System nur auf die LiveCD / DVD gebootet, das Betriebssystemlaufwerk des defekten Servers eingehängt und das / die Zunderboxpaket (e) in das Dateisystem entpackt, unmounten, neu gestartet und, wenn es korrekt bootet, Erstellen Sie die Pakete zurück zu den Spezifikationen und Konfigurationen Ihres Servers.

Um etwas Ähnliches in CentOS zu machen, müsste man wahrscheinlich die richtigen Versionen der RPMs finden, die deinstalliert wurden, dann auf eine LiveCD / DVD booten, das OS Laufwerk einhängen und chrooten (vielleicht ... wenn du es kennst mit wie man das "--umziehen"Flagge für U / min, müssen Sie möglicherweise nicht chroot), installieren Sie diese Pakete neu, unmounten und neu starten.

Nachdem die Unterstützung für CentOS 5 letzten Monat beendet wurde, können Sie das System nach einem ordnungsgemäßen Neustart des Systems natürlich auf eine aktuelle Version aktualisieren.

HTH.


4
2018-04-17 19:28





Sie können normalerweise von den Installationsmedien booten und dann chroot um Befehle auszuführen oder in die aktuelle Installation einzutreten und Dateien wiederherzustellen oder eine Neuinstallation von Paketen durchzuführen.


0
2018-04-16 03:56



Sie können nicht in ein Root-Verzeichnis mit keinen nützlichen Binärdateien in / usr / bin usw. chrooten. Es würde das gleiche Ergebnis wie das Booten in das tote System ergeben. Chroot ist auch nicht notwendig, denn sobald Sie das Dateisystem gemountet haben, können Sie die Dateien, die Sie retten wollen, aus / var / www herauskopieren. - qris
Definitiv wahr, ich erinnere mich an die Installation von Gentoo / Arch, wo normalerweise einige nützliche Binärdateien verfügbar sind. Ich habe nie zuerst alles deinstalliert. ;) - dragon788