Mir ist gerade eine Katastrophe eingefallen, 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 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/www
aber 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/www
was mir wirklich wichtig ist). Danach habe ich versucht, das vps neu zu starten (über das Admin-Panel, da der reboot
Befehl 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?
# dpkg --remove dpkg
spuckt ausdpkg: error processing dpkg (--remove): this is an essential package; it should not be removed
. Wenn ich--force-all
zur Kommandozeile von dpkg hinzufüge ,dpkg
spucke ich ein ganzes Bündel Warnungen aus und entferne mich selbst, zusammen mit etwa zwei Dutzend anderen Paketen, die davon abhängendpkg
. 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.deb
s); CentOS kann in dieser Hinsicht ähnlich sein oder auch nicht.Antworten:
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:
Die Liste der zu entfernenden Pakete war sicherlich sehr umfangreich, da dies
python
ein 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.
quelle
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
yum
Ihnen eine lange Liste von Paketen angezeigt, die ebenfalls entfernt werden würden. Diese Liste enthält eine solche essentials wieyum
selbstcoreutils
,net-tools
und 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.
quelle
yum
Gehen 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,yum
wird 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 entfernenpython
), das in einer Folge haben kann große Anzahl entfernter Pakete, die scheinbar nichts miteinander zu tun haben.coreutils
hängt aber nichtpython
direkt von CentOS 5 ab, sondern von einem oder mehreren Zwischenpaketen - das Ergebnis ist jedoch dasselbe: Entfernen.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 ...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
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.
quelle
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.
quelle
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.
quelle
Sie können in der Regel vom Installationsmedium booten und anschließend
chroot
Befehle ausführen oder die aktuellen Installations- und Wiederherstellungsdateien eingeben oder eine Neuinstallation von Paketen durchführen.quelle