Serveur effacé après “yum remove python” [fermé]

65

Une catastrophe s’est produite récemment après l’exécution de la commande yum remove pythonet je ne peux plus redémarrer le serveur.

Comment cela s’est passé: j’ai essayé de mettre à jour certaines applications via yum sur mon CentPS 5 VPS et la commande échouait à cause d’une erreur bizarre de python 2.4. J'ai remarqué que ma version de python était ancienne et j'ai essayé de la réinstaller en la retirant d'abord, et c'est ce que j'ai fait yum remove python.

Après cela, il m'a demandé quelque chose à propos de la suppression des dépendances et il ne semblait rien rater, alors j'ai cliqué Y.

La conséquence de cela fut que je n’ai pas été en mesure d’exécuter quoi que ce soit. J'ai même essayé cd /var/wwwmais cela disait quelque chose comme " command does not exist in /usr/bin". Auparavant, lorsque je tabvoyais des suggestions de navigation dans les dossiers, la structure de fichier semblait toujours être là (du moins le /var/wwwbit qui est vraiment important pour moi). Après cela, j'ai essayé de redémarrer le vps (à partir du panneau d'administration car la rebootcommande ne fonctionnait pas) et maintenant, il ne démarre plus.

Ma question est la suivante: comment une telle commande peut-elle détruire mon serveur de cette manière?

tadoman
la source
33
Incidemment, apt-get remove apt works. Je n'ai pas encore essayé dpkg - supprime dpkg. Je parie que c'est vraiment mauvais.
joshudson
19
Vous avez une sauvegarde, non?
vasin1987
21
@joshudson Je viens de créer un CD live Debian 8.4 dans une machine virtuelle et de l'essayer. Résultat: # dpkg --remove dpkgrecrache dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Si j'ajoute --force-allà la ligne de commande de dpkg, dpkgcrache tout un paquet d'avertissements et procède à sa suppression, en plus de détruire environ deux douzaines d'autres paquets qui en dépendent dpkg. Sur un système réel, je suis sûr que vous auriez du mal à se remettre de certains, mais vous avez probablement pu (il y a peu de magie à .debs); CentOS peut être ou ne pas être semblable à cet égard.
un CVn
6
@joshudson Cela fonctionne car il y a une copie d'apt en cours d'exécution en mémoire lorsque vous exécutez la commande ... dès que c'est terminé (et le programme se termine), vous ne pourrez plus utiliser apt.
SnakeDoc
2
Yum lui-même est implémenté en Python, je crois ... Donc, enlever Python tire bien votre propre pied!
Peufeu

Réponses:

67

Je suis sincèrement désolé: je peux sentir la douleur d’avoir un serveur non amorçable / inutilisable.

Cependant, je suis perdu en lisant cela:

Après cela, il m'a demandé quelque chose à propos de la suppression des dépendances et il ne semblait rien rater, alors j'ai cliqué sur [Y]

La liste des paquets à supprimer était sûrement très longue, tout comme pythonune partie essentielle de RHEL / CentOS. Vous ne devriez jamais confirmer un message d'avertissement que vous ne comprenez pas vraiment.

Comme il a déjà été suggéré, la meilleure chose à faire est de démarrer via un support de récupération (par exemple, livecd), d’extraire les fichiers de données requis et de réinstaller votre ordinateur avec une version plus récente de CentOS (et comme CentOS 6 est assez ancien, je vous le recommande vivement. vous suggérons de vous baser sur CentOS 7).

Shodanshok
la source
2
Pour l’avenir: construisez des serveurs avec le système d’exploitation sur LVM LV (ISTR étant le paramètre RHEL par défaut). Avant tout ce qui a la moindre chance de casser le système, créez un ou plusieurs instantanés. Si cela casse effectivement le système, vous pouvez alors revenir à l'instantané en quelques minutes. Sinon, lorsque tout va bien, vous pouvez supprimer l'instantané. unix.stackexchange.com/questions/18913 . NB Les instantanés ne sont pas des sauvegardes. Vous avez toujours besoin de sauvegardes dans les situations où l'instantané ne peut pas vous enregistrer.
nigel222
Sur Debian / Ubuntu, il pourrait démarrer l’image de récupération (par exemple, finnix), décompresser le système de base avec debootstrap, chroot et apt-get install ubuntu-desktop. Aucune idée si centos / rhel ont l'équivalent debootstrap.
Edheldil
1
CentOS 6 est pris en charge jusqu'en novembre 2020 . Il n'y a pas de hâte de passer à la version supérieure (bien que passer à 7 offre de nombreux avantages).
psmears le
106

Franchement, parce que vous avez fait quelque chose que vous n'avez pas bien compris. Python est une partie essentielle du système d’exploitation et ce que vous considérez comme sans importance est très important. Restore depuis une sauvergarde.


Lorsque vous avez supprimé Python, yumvous a montré une longue liste de paquets qui seraient également supprimés. Cette liste contient les éléments essentiels comme yumelle - même, coreutils, net-toolset d' autres. Vous avez confirmé que vous savez ce que vous faites et souhaitez continuer malgré tout. Le résultat est un système qui ne fonctionne pas. Cela ne devrait pas être surprenant.

Pour mémoire, avec la nouvelle version de CentOS, cela n’est plus possible, car certains paquets sont maintenant marqués comme protégés et ne peuvent pas être supprimés, seulement réinstallés ou mis à niveau. Et puisque CentOS 5 est maintenant devenu EOL, c’est le bon moment pour passer à une version plus récente.

Sven
la source
3
Haha bien qui a dégénéré rapidement (miam enlever python == il suffit d'essuyer la machine entière: D). Est-ce que vous pensez s'il est possible de restaurer au moins les fichiers qui se trouvaient dans / var / www ou est-ce aussi complètement inutile?
tadoman
8
@tadoman: Si vous pouvez démarrer sur un système de secours, vous pourrez monter le disque et en récupérer les données ( toutes les données de l'utilisateur, y compris les fichiers de configuration, doivent être incluses). Vous devez contacter votre fournisseur pour discuter de ce qui est possible dans son environnement.
Sven
6
@RussellBorogove: Je ne dis rien non plus. yumfonctionne en parcourant le graphique de dépendance et supprime les packages jusqu'à ce que toutes les dépendances soient satisfaites. Si le package A dépend du package B et que le package B dépend du package C, yumle package B sera également supprimé et, à son tour, le package A satisfera toutes les dépendances si vous essayez de supprimer le package C. Pour les packages centraux (comme python), cela peut entraîner grand nombre de paquets supprimés qui ne sont apparemment pas liés.
Sven
4
@RussellBorogove: Oui, exactement, bien que coreutilscela ne dépende pas pythondirectement de CentOS 5, mais via un ou plusieurs packages intermédiaires - le résultat est le même si: Suppression.
Sven
4
Le nombre de colis intermédiaires à coreutils semble être deux. python -> cracklib -> pam -> coreutils La dépendance existe parce qu'il existe des liaisons python à cracklib, pam a été construit avec cracklib et que su est intégré à pam. Bien sûr, il a fallu beaucoup de choses importantes, comme installer de nouveaux paquets, par exemple ...
John Mahowald
15

Vous avez fait quelque chose sans comprendre pleinement les conséquences

Cette installation est irrécupérable. La réinstallation de centos5 nécessiterait beaucoup de travail. Et c'est un mauvais plan parce que

  1. CentOS 5 est en fin de vie et n'a donc aucune mise à jour. C'est d'autant plus grave que cela ressemble à un serveur Web servant du contenu sur Internet et que vous utilisez des applications de panneau pour le contrôler.
  2. CentOS> 5 vous aurait empêché de faire cette mise à jour et de tuer la boîte. C'est un bon airbag à avoir.
  3. CentOS 7 prétend prendre en charge les mises à niveau majeures des versions en place. Je ne l'ai jamais utilisé, mais être capable de passer de 7 à 8 quand il sortira sera très bon. Cela a toujours été le cas de Debian, mais Redhat a toujours nécessité une réinstallation pour les sauts de version majeurs.

Solution

Votre meilleur choix est de créer un nouveau VPS, d'installer à nouveau CentOS7, puis de rattacher l'ancien volume de disque centos5 et de le monter en lecture seule. Travaillez ensuite pour copier (et non pas déplacer) vos données de l’ancien disque vers le nouveau.

Notez que ceci serait ma méthode utilisant AWS. Si votre fournisseur VPS ne peut pas connecter des disques à différentes machines virtuelles, vous devrez modifier le plan.

Quoi que vous fassiez, envisagez de configurer des sauvegardes automatiques à l'avenir. Cela ne vous épargnerait pas, mais cela rendrait la récupération un peu plus flexible. Pour le moment, vous avez besoin des données sur ce disque dans un nouveau serveur en fonctionnement. Ne perdez pas le disque existant.

Criggie
la source
9

Comment cela pourrait-il arriver? Très simple: en supprimant les éléments critiques pour votre serveur.

Prochaines étapes pour vous: redéployez un nouveau système d’exploitation et restaurez vos données à partir de sauvegardes.

EEAA
la source
1
La désinstallation d'un paquet ne devrait jamais supprimer des données. Il ne devrait vraiment pas être nécessaire de restaurer quoi que ce soit, à moins que certains responsables de paquets ne se soient carrément trompés.
Jörg W Mittag
6
Si l'OP restaure un nouveau système d'exploitation comme je le recommande, la restauration des données et la configuration seront assurément nécessaires.
EEAA
@ JörgWMittag Je pense que vous avez peut-être mal compris l'utilisation du mot "restaurer". EEAA signifie que le système devra être reconfiguré et que les données existantes seront placées quelque part sur la nouvelle machine. "Restaurer" n'est peut-être pas le meilleur mot pour cela, bien que je puisse voir quelqu'un utiliser la fonctionnalité de restauration de base de données pour ce morceau.
jpmc26
@ JörgWMittag Oh, ses données sont toujours là, très probablement. C'est juste qu'avec son système non fonctionnel, il n'a aucun moyen d'y accéder.
Shadur
4

Comme indiqué par dragon788 et d’autres dans les commentaires, sous Gentoo, les développeurs gèrent également un ensemble de paquetages tinderbox qui ne sont que des versions binaires pré-construites d’un ensemble de paquetages de base du système d’exploitation. Si vous perdez un paquet principal, vous devez simplement démarrer le système sur le LiveCD / DVD, monter le lecteur de système d'exploitation du serveur défectueux et décompresser le (s) paquet (s) de Tinderbox sur le système de fichiers, démonter, redémarrer et, s'il démarre correctement, reconstruisez les paquets selon les spécifications et la configuration de votre serveur.

Donc, pour effectuer quelque chose de similaire dans CentOS, je pense que vous devriez trouver les bonnes versions des RPM qui ont été désinstallés, puis démarrez sur un LiveCD / DVD, montez le lecteur du système d'exploitation et lancez-le chroot (peut-être ... si vous êtes familier comment utiliser l’ indicateur " --relocate " pour rpm , vous n’aurez peut-être pas besoin de chroot), puis réinstallez ces paquets, démontez-les et redémarrez.

Bien entendu, puisque la prise en charge de CentOS 5 a pris fin le mois dernier, une fois le système redémarré correctement, vous pouvez le mettre à jour avec la version actuelle.

HTH.

B.Kaatz
la source
0

Vous pouvez généralement démarrer à partir du support d'installation, puis chrootexécuter des commandes ou accéder à l'installation en cours et récupérer des fichiers ou effectuer une réinstallation de packages.

dragon788
la source
4
Vous ne pourrez pas accéder à un répertoire racine dépourvu de fichiers binaires utiles dans / usr / bin, etc. Cela donnerait le même résultat que de démarrer dans le système hors service. Chroot n’est pas non plus nécessaire, car une fois le système de fichiers monté, vous pouvez copier les fichiers que vous souhaitez récupérer depuis / var / www.
Qris
Vraiment vrai, je me souviens de l'installation de Gentoo / Arch où des fichiers binaires utiles sont généralement disponibles. Je n'ai jamais tout désinstallé en premier. ;)
dragon788