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

65

Mir ist gerade eine Katastrophe eingefallen, nachdem ich den Befehl ausgeführt habe yum remove pythonund 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 schlug aufgrund eines seltsamen Python 2.4-Fehlers fehl. Mir ist aufgefallen, dass meine Version von Python veraltet ist, und ich habe versucht, sie neu zu installieren, indem ich sie zuerst entfernt habe yum remove python.

Danach fragte es mich etwas über das Entfernen von Abhängigkeiten und es sah nach nichts aus, was ich verpassen konnte, also klickte ich Y.

Das hatte zur Folge, dass ich überhaupt keinen Befehl ausführen konnte. Ich habe es sogar versucht, cd /var/wwwaber es sagte etwas wie " command does not exist in /usr/bin". Wenn ich tabOrdnernavigationsvorschläge sah, schien die Dateistruktur immer noch vorhanden zu sein (zumindest das, /var/wwwwas mir wirklich wichtig ist). Danach habe ich versucht, das vps neu zu starten (über das Admin-Panel, da der rebootBefehl nicht funktioniert hat) und jetzt bootet es nicht mehr.

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

Tadoman
quelle
33
Apt-get remove apt funktioniert übrigens. Ich habe dpkg noch nicht ausprobiert --dpkg entfernen. Ich wette, das ist wirklich schlimm.
Joshudson
19
Du hast doch ein Backup, oder?
Vasin1987
21
@joshudson Ich habe gerade eine Debian 8.4-Live-CD in einer VM hochgefahren und ausprobiert. Ergebnis: # dpkg --remove dpkgspuckt aus dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Wenn ich --force-allzur Kommandozeile von dpkg hinzufüge , dpkgspucke ich ein ganzes Bündel Warnungen aus und entferne mich selbst, zusammen mit etwa zwei Dutzend anderen Paketen, die davon abhängen dpkg. Ich bin mir ziemlich sicher, dass Sie auf einem realen System Probleme haben werden, sich davon zu erholen, aber Sie könnten es wahrscheinlich (es gibt wenig Magie für .debs); CentOS kann in dieser Hinsicht ähnlich sein oder auch nicht.
einen Lebenslauf vom
6
@joshudson Es funktioniert, weil eine Kopie von apt im Speicher ausgeführt wird, wenn Sie den Befehl absetzen. Sobald der Befehl beendet ist (und das Programm beendet wird), können Sie apt nicht mehr verwenden.
SnakeDoc
2
Yum selbst ist in Python implementiert, glaube ich. Das Entfernen von Python schießt also ziemlich gut auf Ihren eigenen Fuß!
Peufeu

Antworten:

67

Es tut mir aufrichtig leid: Ich kann den Schmerz fühlen, einen Server nicht mehr booten / warten zu können.

Beim Lesen bin ich jedoch verloren:

Danach fragte es mich etwas über das Entfernen von Abhängigkeiten und es sah nach nichts aus, was ich verpassen konnte, also klickte ich auf [Y].

Die Liste der zu entfernenden Pakete war sicherlich sehr umfangreich, da dies pythonein wesentlicher Bestandteil von RHEL / CentOS ist. Sie sollten niemals eine Warnmeldung bestätigen, die Sie nicht wirklich verstehen.

Das Beste, was Sie tun können, ist, wie bereits vorgeschlagen, über ein Wiederherstellungsmedium (dh livecd) zu booten, die erforderlichen Datendateien zu extrahieren und Ihren Computer mit einer neueren CentOS-Version neu zu installieren (und da CentOS 6 ziemlich alt ist, bin ich stark schlagen Sie vor, auf CentOS 7) zurückzugreifen.

Shodanshok
quelle
2
Für die Zukunft: Bauen Sie Server mit dem Betriebssystem auf LVM-LVs (wobei ISTR die RHEL-Standardeinstellung ist). Erstellen Sie vor allem, was die geringste Chance hat, das System zu beschädigen, einen oder mehrere Schnappschüsse. Wenn das System tatsächlich beschädigt wird, können Sie in wenigen Minuten zum Snapshot zurückkehren. Andernfalls können Sie den Schnappschuss entfernen, wenn alles in Ordnung ist. unix.stackexchange.com/questions/18913 . NB Snapshots sind keine Backups. Sie benötigen weiterhin Sicherungen für Situationen, in denen der Snapshot Sie nicht retten kann.
Nigel222
Unter Debian / Ubuntu konnte er ein Wiederherstellungs-Image (zB finnix) booten, das Basissystem mit Debootstrap, Chroot und Apt-Get Install Ubuntu-Desktop entpacken. Keine Ahnung, ob Centos / Rhel ein Debootstrap-Äquivalent haben.
Edheldil
1
CentOS 6 wird bis November 2020 unterstützt . Ein Upgrade ist ohne Eile möglich (obwohl ein Upgrade auf 7 viele Vorteile bietet).
Psmears
106

Ehrlich gesagt, weil Sie etwas getan haben, das Sie nicht vollständig verstanden haben. Python ist ein wesentlicher Bestandteil des Betriebssystems und die Dinge, die Sie für unwichtig hielten, sind sehr wichtig. Von der Sicherung wiederherstellen.


Wenn Sie Python entfernt haben, wurde yumIhnen eine lange Liste von Paketen angezeigt, die ebenfalls entfernt werden würden. Diese Liste enthält eine solche essentials wie yumselbst coreutils, net-toolsund andere. Sie haben bestätigt, dass Sie wissen, was Sie tun, und trotzdem fortfahren möchten. Das Ergebnis ist ein nicht funktionierendes System. Das sollte nicht überraschen.

Aus diesem Grund ist dies in neueren CentOS-Versionen nicht mehr möglich, da bestimmte Pakete jetzt als geschützt markiert sind und nicht mehr entfernt, sondern nur noch neu installiert oder aktualisiert werden können. Und da CentOS 5 jetzt sowieso EOL ist, ist dies ein guter Zeitpunkt, um auf eine neuere Version zu aktualisieren.

Sven
quelle
3
Haha, das eskalierte schnell (yum remove python == wische einfach die ganze Maschine ab: D). Glauben Sie, dass ich die Dateien, die sich in / var / www befanden, auf irgendeine Weise wiederherstellen kann, oder ist das auch völlig fehlerfrei?
Tadoman
8
@tadoman: Wenn Sie in ein Rettungssystem booten können, können Sie die Festplatte einbinden und Daten von ihr wiederherstellen (dies sollten alle Benutzerdaten sein, einschließlich Konfigurationsdateien). Sie müssen Ihren Provider kontaktieren, um zu besprechen, was in seiner Umgebung möglich ist.
Sven
6
@ RussellBorogove: Ich sage auch nichts davon. yumGehen Sie durch das Abhängigkeitsdiagramm und entfernen Sie Pakete, bis alle Abhängigkeiten erfüllt sind. Wenn das Paket A auf Paket B abhängt und Paket B ist abhängig von Paket C, yumwird auch Paket B und wiederum Paket A entfernen Sie alle Abhängigkeiten zu erfüllen , wenn Sie versuchen , Paket C Für die zentralen Pakete (wie zu entfernen python), das in einer Folge haben kann große Anzahl entfernter Pakete, die scheinbar nichts miteinander zu tun haben.
Sven
4
@RussellBorogove: Ja, genau, coreutilshängt aber nicht pythondirekt von CentOS 5 ab, sondern von einem oder mehreren Zwischenpaketen - das Ergebnis ist jedoch dasselbe: Entfernen.
Sven
4
Die Anzahl der Zwischenpakete zu coreutils scheint zwei zu sein. python -> cracklib -> pam -> coreutils Die Abhängigkeit besteht, weil es Python-Bindungen zu cracklib gibt, pam mit cracklib erstellt wurde und su mit pam integriert ist. Natürlich hat es auch viele wichtige Dinge gekostet, wie yum, um weitere Pakete zu installieren ...
John Mahowald,
15

Sie haben etwas getan, ohne die Konsequenzen vollständig zu verstehen

Diese Installation kann nicht wiederhergestellt werden. Die Neuinstallation von centos5 würde viel Arbeit erfordern. Und das ist ein schlechter Plan, weil

  1. CentOS 5 ist "End of Life" und enthält daher keine Updates. Dies ist insofern besonders gravierend, als es sich um einen Webserver handelt, der Inhalte im öffentlichen Internet bereitstellt und über Panel-Apps gesteuert wird.
  2. CentOS> 5 hätte Sie davon abgehalten, dieses Update durchzuführen und die Box zu töten. Das ist ein schöner Airbag.
  3. CentOS 7 behauptet, wichtige Versions-Upgrades zu unterstützen. Ich habe es noch nie benutzt, aber es wird sehr gut sein, von 7 auf 8 springen zu können, wenn es veröffentlicht wird. Debian hatte dies schon immer, aber Redhat erforderte immer eine Neuinstallation für größere Versionssprünge.

Lösung

Am besten erstellen Sie einen neuen VPS, installieren CentOS7 neu und bringen dann das alte Centos5-Laufwerk wieder an und hängen es schreibgeschützt an. Arbeiten Sie dann daran, Ihre Daten vom alten Laufwerk auf das neue zu kopieren (nicht zu verschieben).

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

Unabhängig davon, was Sie tun, sollten Sie in Zukunft automatische Sicherungen einrichten. Es würde Sie nicht retten, aber es würde die Wiederherstellung etwas flexibler machen. Im Moment benötigen Sie die Daten auf dieser Festplatte auf einem neuen Arbeitsserver. Verlieren Sie nicht die vorhandene Festplatte.

Criggie
quelle
9

Wie konnte das passieren? Ganz einfach: Entfernen Sie Teile, die für Ihren Server von entscheidender Bedeutung waren.

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

EEAA
quelle
1
Das Deinstallieren eines Pakets sollte niemals Daten entfernen. Es sollte wirklich keine Notwendigkeit geben, irgendetwas wiederherzustellen, es sei denn, ein Paketbetreuer hat es königlich vermasselt.
Jörg W Mittag
6
Wenn das OP ein frisches Betriebssystem wiederherstellt, wie ich es empfohlen habe, müssen die Daten und die Konfiguration mit größter Sicherheit wiederhergestellt werden.
EEAA
@ JörgWMittag Ich glaube, du hast die Verwendung des Wortes "Wiederherstellen" falsch verstanden. EEAA bedeutet, dass das System neu konfiguriert und die vorhandenen Daten irgendwo auf der neuen Maschine abgelegt werden müssen. "Wiederherstellen" ist möglicherweise nicht das beste Wort dafür, obwohl ich jemanden sehen konnte, der die Datenbankwiederherstellungsfunktionalität für dieses Teil verwendet.
jpmc26
@ JörgWMittag Oh, seine Daten sind höchstwahrscheinlich noch da. Es ist nur so, dass er mit seinem nicht funktionierenden System keine Möglichkeit hat, darauf zuzugreifen.
Shadur
4

Wie von dragon788 und anderen in den Kommentaren hervorgehoben, unterhalten die Entwickler in Gentoo auch eine Reihe von tinderbox- Paketen, die nur vorgefertigte Binärversionen einer Reihe von Kernpaketen des Betriebssystems für solche Situationen sind. Wenn Sie ein Kernpaket verlieren, müssen Sie nur das System von der LiveCD / DVD booten lassen, das OS-Laufwerk des defekten Servers einbinden und das / die tinderbox-Paket (e) in das Dateisystem entpacken, das Paket aushängen, neu starten und, falls es korrekt startet, Erstellen Sie die Pakete wieder gemäß den Spezifikationen und Konfigurationen Ihres Servers.

Um etwas Ähnliches in CentOS auszuführen, müssten Sie meines Erachtens die richtigen Versionen der RPMs finden, die deinstalliert wurden, dann von einer LiveCD / DVD booten, das OS-Laufwerk einbinden und chrooten (vielleicht ... wenn Sie damit vertraut sind) Wenn Sie das Flag " --relocate " für rpm verwenden , müssen Sie möglicherweise nicht chroot), dann installieren Sie diese Pakete neu, hängen Sie sie aus und starten Sie sie neu.

Da die Unterstützung für CentOS 5 im letzten Monat eingestellt wurde, können Sie das System nach einem ordnungsgemäßen Neustart auf eine aktuelle Version aktualisieren.

HTH.

B.Kaatz
quelle
0

Sie können in der Regel vom Installationsmedium booten und anschließend chrootBefehle ausführen oder die aktuellen Installations- und Wiederherstellungsdateien eingeben oder eine Neuinstallation von Paketen durchführen.

dragon788
quelle
4
Sie werden nicht in der Lage sein, in ein Stammverzeichnis ohne nützliche Binärdateien in / usr / bin usw. zu chrooten. Dies würde das gleiche Ergebnis liefern wie das Booten des toten Systems. Chroot ist auch nicht erforderlich, da Sie nach dem Mounten des Dateisystems die Dateien, die Sie retten möchten, aus / var / www kopieren können.
Qris
Auf jeden Fall erinnere ich mich, Gentoo / Arch installiert zu haben, wo normalerweise einige nützliche Binärdateien verfügbar sind. Ich habe noch nie alles deinstalliert. ;)
dragon788