Se me ocurrió un desastre después de ejecutar el comando yum remove python
y ahora ya no puedo arrancar el servidor.
Cómo sucedió: intenté actualizar algunas aplicaciones a través de yum en mi CentOS 5 VPS y el comando fallaba debido a un extraño error de Python 2.4. Noté que mi versión de Python era antigua e intenté reinstalarla quitándola primero, y así lo hice yum remove python
.
Después de eso, me preguntó algo sobre la eliminación de dependencias y parecía que no podía perderme nada, así que hice clic Y
.
Entonces, después de eso, no pude ejecutar ningún comando. Incluso lo intenté cd /var/www
pero decía algo así como " command does not exist in /usr/bin
". Cuando solía tabver sugerencias de navegación de carpetas, la estructura del archivo todavía parecía estar allí (al menos el /var/www
bit que es realmente importante para mí). Después de eso intenté reiniciar el vps (desde el panel de administración ya que el reboot
comando no funcionó) y ahora ya no se inicia.
Ahora mi pregunta es: ¿cómo puede un comando como ese posiblemente destruir mi servidor de esta manera?
# dpkg --remove dpkg
escupedpkg: error processing dpkg (--remove): this is an essential package; it should not be removed
. Si agrego--force-all
a la línea de comando de dpkg,dpkg
escupe un paquete completo de advertencias y procede a eliminarse, junto con romper alrededor de dos docenas de otros paquetes que dependendpkg
. En un sistema real, estoy bastante seguro de que tendría algunos problemas para recuperarse de eso, pero probablemente podría (hay poca magia.deb
); CentOS puede o no ser similar a este respecto.Respuestas:
Lo siento sinceramente: puedo sentir el dolor de tener un servidor que no se puede arrancar / que no se puede reparar.
Sin embargo, estoy perdido al leer eso:
La lista de paquetes que se eliminarán seguramente fue realmente enorme, ya que
python
es una parte esencial de RHEL / CentOS. Usted debe nunca se confirme algún mensaje de advertencia que no entiendo muy bien.Lo mejor que puede hacer, como ya se sugirió, es arrancar a través de un medio de recuperación (es decir, livecd), extraer los archivos de datos necesarios y reinstalar su máquina con una versión más reciente de CentOS (y como CentOS 6 es bastante antiguo, creo que sugiero que rebase en CentOS 7).
fuente
Francamente, porque hiciste algo que no entendiste completamente. Python es una parte esencial del sistema operativo y las cosas que considerabas sin importancia son muy importantes. Reinstalar desde el respaldo.
Cuando eliminó Python, le
yum
mostró una larga lista de paquetes que también se eliminarían. Esta lista contiene elementos esenciales comoyum
sí mismo,coreutils
,net-tools
y otros. Usted confirmó a ñam que sabe lo que está haciendo y que desea continuar de todos modos. El resultado de esto es un sistema que no funciona. Esto no debería ser sorprendente.Para el registro, en la versión más nueva de CentOS esto ya no es posible, ya que ciertos paquetes ahora están marcados como protegidos y no se pueden eliminar, solo reinstalar o actualizar. Y dado que CentOS 5 ahora es EOL de todos modos, este es un buen momento para actualizar a una versión más nueva.
fuente
yum
funciona caminando por el gráfico de dependencia y elimina los paquetes hasta que se satisfagan todas las dependencias. Si el paquete A depende del paquete B y el paquete B depende del paquete C,yum
también eliminará el paquete B y, a su vez, el paquete A para satisfacer todas las dependencias si intenta eliminar el paquete C. Para paquetes centrales (comopython
), esto puede resultar en un gran cantidad de paquetes eliminados que aparentemente no están relacionados.coreutils
no dependepython
directamente de CentOS 5, sino a través de uno o más paquetes intermedios; sin embargo, el resultado es el mismo: eliminación.python -> cracklib -> pam -> coreutils
La dependencia existe porque hay enlaces de python a cracklib, pam se creó con cracklib y su su se integra con pam. Por supuesto, también sacó muchas cosas importantes, como yum para instalar más paquetes ...Hiciste algo sin comprender completamente las consecuencias
Esa instalación es irrecuperable, requeriría mucho trabajo para reinstalar centos5. Y ese es un mal plan porque
Solución
Su mejor opción es crear un nuevo VPS, una instalación nueva de CentOS7, y luego volver a conectar el antiguo volumen de disco centos5 y montarlo de solo lectura. Luego trabaje para copiar (no mover) sus datos de la unidad anterior a la nueva.
Tenga en cuenta que este sería mi método con AWS. Si su proveedor de VPS no puede conectar discos a diferentes máquinas virtuales, tendrá que modificar el plan.
No importa lo que haga, considere configurar copias de seguridad automáticas en el futuro. No te salvaría, pero haría que la recuperación sea algo más flexible. En este momento necesita los datos en ese disco en un nuevo servidor de trabajo. No pierdas el disco existente.
fuente
¿Cómo pudo pasar esto? Bueno, bastante simple: eliminando partes que eran críticas para su servidor.
Próximos pasos para usted: vuelva a implementar un sistema operativo nuevo y restaure sus datos de las copias de seguridad.
fuente
Como señalaron dragon788 y otros en los comentarios, en Gentoo, los desarrolladores también mantienen un conjunto de paquetes tinderbox que son versiones binarias preconstruidas de un conjunto de paquetes principales del sistema operativo para tales situaciones. Si pierde un paquete principal, simplemente inicia el sistema en el LiveCD / DVD, monta la unidad del sistema operativo del servidor dañado y desempaqueta los paquetes de Tinderbox en el sistema de archivos, desmonta, reinicia y, si se inicia correctamente, reconstruya los paquetes de nuevo a las especificaciones y configuraciones de su servidor.
Entonces, para realizar algo similar en CentOS, creo que necesitaría encontrar las versiones correctas de los RPM que se desinstalaron, luego iniciar en un LiveCD / DVD, montar la unidad del sistema operativo y realizar el chroot (quizás ... si está familiarizado con cómo usar el indicador " --relocate " para rpm , es posible que no necesite hacer chroot), luego reinstale esos paquetes, desmonte y reinicie.
Por supuesto, dado que el soporte para CentOS 5 finalizó el mes pasado, después de reiniciar el sistema correctamente, puede actualizarlo a una versión actual.
HTH.
fuente
Por lo general, puede iniciar desde el medio de instalación y luego
chroot
ejecutar comandos o ingresar a la instalación actual y recuperar archivos o realizar una reinstalación de paquetes.fuente