Une catastrophe s’est produite récemment après l’exécution de la commande yum remove python
et 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/www
mais 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/www
bit qui est vraiment important pour moi). Après cela, j'ai essayé de redémarrer le vps (à partir du panneau d'administration car la reboot
commande 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?
# dpkg --remove dpkg
recrachedpkg: 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,dpkg
crache tout un paquet d'avertissements et procède à sa suppression, en plus de détruire environ deux douzaines d'autres paquets qui en dépendentdpkg
. 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 à.deb
s); CentOS peut être ou ne pas être semblable à cet égard.Réponses:
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:
La liste des paquets à supprimer était sûrement très longue, tout comme
python
une 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).
la source
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,
yum
vous a montré une longue liste de paquets qui seraient également supprimés. Cette liste contient les éléments essentiels commeyum
elle - même,coreutils
,net-tools
et 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.
la source
yum
fonctionne 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,yum
le 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 (commepython
), cela peut entraîner grand nombre de paquets supprimés qui ne sont apparemment pas liés.coreutils
cela ne dépende paspython
directement de CentOS 5, mais via un ou plusieurs packages intermédiaires - le résultat est le même si: Suppression.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 ...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
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.
la source
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.
la source
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.
la source
Vous pouvez généralement démarrer à partir du support d'installation, puis
chroot
exécuter des commandes ou accéder à l'installation en cours et récupérer des fichiers ou effectuer une réinstallation de packages.la source