Subir de Debian Lenny a Squeeze: modo sano y paranóico

Actualización: Pueden acceder a una guía limpia de migración en > http://phenobarbital.gnu.org.ve/doku.php/linux:debian

En la mayoría de los casos, el subir un equipo de Lenny a Squeeze basta con ejecutar:

aptitude dist-upgrade

y listo (esto te lo podría jurar cualquier debianita), pero a veces no es el caso (de hecho, la mayoría de las veces no lo es), la mayoría de los errores que te podrías encontrar son:

  • Inconsistencia entre paquetes
  • Problemas de las llaves de Debian, errores en repositorios
  • Fallo de la actualización del udev al montar un nuevo kernel
  • Que se quedan algunos paquetes en -lenny
  • Inconsistencias del grub

En mi caso, se trataba de mi Desktop, que se encontraba en Lenny desde hace ya bastante tiempo por lo que hice una guía “paranóica y cuidada” para subir de Lenny a Squeeze sin absolutamente ningún problema (la probé al menos unas 5 veces con unas instalaciones limpias de Lenny subidas a Squeeze en mi laptop).

Actualizando repositorios

NOTA: Como lo notara mi amigo Milton (aka Milmazz), es cierto que deberíamos contar con un sistema actualizado en la última versión de Lenny *antes* de intentar subirlo, para ello ejecutamos:

aptitude safe-upgrade

Luego, actualizaremos el repositorio a Squeeze, este paso lo debe conocer cualquier debianita, simplemente editamos el sources.list (/etc/apt/sources.list) y todo lo que apunta a (stable|lenny) lo cambiamos a (testing|squeeze)

UPDATE: para los “no debianitas”, una línea en el source.list tiene la forma:

deb URL distribución (secciones)

donde:

URL: ruta al repositorio, ejemplo: http://ftp.us.debian.org/debian/

Distribución: versión de Debian (stable = lenny, testing = squeeze, unstable = sid)

Sección: Tipos de paquete a instalar, main (principal libre), contrib (contribuciones externas), non-free (paquetes y binarios no libres)

Un ejemplo sería:

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free

NOTA: Es bueno, comentar las líneas que hacen referencia a volatile-debian y a security-debian cuando vayamos a hacer un upgrade.

Guardamos el archivo source.list y ejecutamos:

apt-get update

Luego de actualizado el repositorio a Squeeze, limpiamos la caché de APT (para ahorrar espacio y eliminar todos esos paquetes lenny que están ahí):

apt-get autoclean

Actualizando paquetes, primera fase

Luego, y para evitar problemas en la inconsistencia de los paquetes, instalamos:

apt-get install apt aptitude dpkg debian-keyring

Esto actualizará a Squeeze los paquetes encargados de la instalación.

ACTUALIZACION: Ahora bien, algunas personas podrían experimentar problemas con el sys.rc si hacen el dist-upgrade ahora, más que todo cuando corres servidores y tienes muchos servicios ejecutándose; ahora que estas con repositorios en squeeze, es bueno “subir” esas aplicaciones conflictivas (como mysql, exim, postfix, postgresql, proftpd, samba y/o openldap).

un ejemplo sería:

aptitude install mysql-server postgresql exim4-base locales tzdata

(Gracias a Octavio Rossell “TR0N” por probar la receta y darse cuenta de este fallo).

Actualizando el Kernel

Si tienes una versión muy vieja de kernel, podrías tener conflicto durante el dist-upgrade, puesto que este necesita instalar una versión de kernel muy nueva (2.6.32) y con esta una versión nueva de las udev (158-1), cambiar las udev de una versión a otra superior a 150 es básicamente IMPOSIBLE, así que por seguridad, es preferible que subamos primero el kernel a una nueva versión:

Lo buscamos:

aptitude search linux-image

Y lo instalamos:

aptitude install linux-image-2.6.32-5-686

NOTA: deben instalar el que sea para su arquitectura y si acaso no la saben, ejecuten:

aptitude install linux-image-$(uname -r)

NOTA: Gracias a Milmazz por la acotación.

Luego de instalado el kernel, reinician.

reboot

Subir la distribución, fase 1

Ahora sí, a subir la distribución (primera vez):

apt-get dist-upgrade

Esta “primera subida” causará que todo suba, salvo algunos paquetes asociados al kernel, porque aunque subirán las udev, paquetes asociados a la misma no se “subirán” hasta que la versión squeeze (158-1) esté en ejecución; es también en esta fase donde subirán a GRUB2.

NOTA: como lo comentó Milton (aka Milmazz), si el sistema tiene entorno gráfico (léase Gnome, LXDE o KDE) es bueno hacer la actualización ya sea desde una terminal (tty) o sin sistema X cargado, yo detuve gnome:

/etc/init.d/gdm stop

Y luego bajé a init 3:

init 3

Así evitamos que aplicaciones o entornos como GNOME estén en ejecución durante la actualización.

Reiniciamos el equipo:

reboot

Subir la distribución (fase 2)

Y ejecutamos ahora un full-upgrade, verán que el aptitude bajará aún más paquetes e instalará algunas cosas específicas de Debian Squeeze, además eliminará todo lo que había lenny, incluyendo las udev.

aptitude full-upgrade

Veremos cosas como esta:

Configurando udev (158-1) ...
...
Configurando linux-image-2.6.32-5-686 (2.6.32-18) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-686

Y volvemos a reiniciar …

reboot

Pasos finales

Veremos como se ha actualizado a grub2 (desde grub1), aunque seguirá levantando usando grub1 (menu.lst), para eliminar definitivamente a grub1 ejecutamos:

upgrade-from-grub-legacy

El cual preguntará en cual dispositivo (si en /boot o en el MBR del disco /dev/sda) se instalará, en mi caso como no tengo otro S.O lo monté en /dev/sda.

Volvemos a reiniciar (solo para comprobar que ahora solo tenemos grub2)

reboot

Y ya, por último, comprobamos la salud del Squeeze:

aptitude update && aptitude dist-upgrade

(no debería instalar nada más)

cat /etc/debian_version

Debería retornar “squeeze/sid”
y ya (si queremos ahorrar espacio) podemos limpiar nuevamente el cache con:

apt-get autoclean

Y ahora, si estamos (sin inconvenientes de ningún tipo) en Debian Squeeze!.

NOTA: con especial dedicación a aquellos que insisten en que pasar de Debian Lenny a Squeeze es un simple “dist-upgrade” sin contar con las implicaciones de diversas configuraciones, arquitecturas y programas instalados, yo probé esta receta en muchos equipos y funcionó (donde un simple dist-upgrade dejaba en sistema inconsistente) y Octavio (aka [TR0N]) me ayudó a depurarla probándola en un servidor propio.

Espero que más personas prueben la receta y me indiquen posibles cambios.

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 5 agosto 2010 en Blogeando!, Cultura Libre, Linux, PlanetaLinux, Software Libre y etiquetado en , , , , , , . Guarda el enlace permanente. 16 comentarios.

  1. Al pelo. Gracias, Doña.

    Una cosa es que para que el UDEV no fastidie debes hacer la instalación a mano del nuevo kernel al reiniciar por primera vez:

    aptitude install linux-image-[la-version-que-corresponda]

  2. ¡Excelente guía!, solo dos apuntes:

    1) Tal vez sea conveniente indicar que antes de actualizar los repositorios a Squeeze (editando el sources.list) el usuario se asegure de contar con una versión actualizada de Lenny, es decir, hacer un update y posteriormente un safe-upgrade.

    2) Quizá la línea aptitude install linux-image-2.6.32-5-686 yo la cambiaría por aptitude install linux-image-$(uname -r) para facilitarle el trabajo al perezoso😉

    3) En el caso de tratarse de una máquina que disponga de entorno gráfico (suponga Gnome) siempre trato de realizar la actualización desde una versión de Debian a otra más reciente desde un tty, todo esto para evitar que se generen mayores inconvenientes a la hora de actualizar y si se requiere el reinicio del servicio del Display Manager (suponga gdm) nos podría llegar a fastidiar el momento.

    • phenobarbital

      Gracias por el comentario …

      1.- Corregido! … es cierto que hice un aptitude safe-upgrade del Lenny para no tener problemas con los paquetes … lo obvié de manera magistral en la guía! … gracias por darte cuenta! …
      2.- $(uname -r) devolverá 2.6.26-4 si estás en ese paso aún en Lenny, ¿no crees?
      3.- Yo en ese caso bajé a init 3, para evitar conflictos con gnome y las X

      Anotadas y agregadas las correcciones … Gracias!

      • En el punto 2 llevas toda la razón. Tal vez podrías indicar que el comando uname -r serviría de ayuda para conocer la estructura de la versión del kernel y la arquitectura.

        Supongo que fue una especie de respuesta automática de mi parte puesto que utilizo una estructura similar para instalar las cabeceras del kernel: aptitude install linux-headers-$(uname -r).

  3. Yo trataría de no mezclar aptitude con apt-get!!

    • aptitude es una interfaz de resolución de apt-get, ¿podrías explicar el por qué no mezclarlos para así ponerlo en la guía?, solo uso aptitude cuando estoy plenamente seguro de que estoy usando el aptitude para la versión en la que estoy y el apt para el resto de operaciones.
      Mientras estoy en Lenny, uso aptitude para el safe-upgrade y para instalar el kernel, para el resto de cosas uso apt; pero son más razones de seguridad a la hora de resolución de problemas.
      Me gustaría tu opinión al respecto para ver si la coloco en la guía.

      Gracias por el comentario …

  4. Excelente guía.

    Me encontré con el problema del udev – kernel – CONFIG_SYSFS_DEPRECATED mientras compilaba kernels para Canaima. De hecho, una forma cochinísima de saltarse el problema es con un:

    touch /etc/udev/kernel-upgrade

    y actualizar el kernel en el próximo reinicio.

    Saludos!

    • phenobarbital

      Esa forma “cochinisima” que tu nombras, precisamente suele quebrar sistemas.
      Lo ideal es como nombro acá en la guía, montas un kernel “squeeze” y reinicias, luego del reinicio, actualizas, ahí se actualizará el udev y no tendrás problema.
      Si haces ese touch y actualizas UDEV antes que tener un kernel que soporte ESE UDEV, te verás en el sufrimiento de algunos módulos corruptos y el sistema podría no levantar.
      Simplemente, ese truco no lo aconsejo, me ha pasado!😉

  5. :~$ sudo apt-get install apt aptitude dpkg debian-keyring locales
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    apt is already the newest version.
    aptitude is already the newest version.
    debian-keyring is already the newest version.
    dpkg is already the newest version.
    locales is already the newest version.
    You might want to run ‘apt-get -f install’ to correct these:
    The following packages have unmet dependencies:
    consolekit : Recommends: libpam-ck-connector but it is not going to be installed
    Breaks: udev (< 147) but 0.125-7+lenny3 is to be installed
    E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

    • Hola A, hiciste apt-get update antes?, si va a instalar un paquete 125-7-lenny3 indica que tus repositorios aún están en Lenny.

      Si además indica que un paquete “romperá” a otro, recomiendo que resuelvas el conflicto manualmente, en este caso, sube primero a un kernel squeeze, luego que subas ese kernel a squeeze, subes las udev a squeeze, por último, subes el paquete (en este caso consolekit, como no lo tengo debe ser por eso que no había visto ese error).

      Cuando tengas udev+kernel+paquete actualizado, comienza a subir el resto de cosas conflictivas antes de hacer un full-upgrade.

      Saludos y gracias por el comentario!

  6. Muy buena receta, me funciono a la perfeccion🙂 gracias!

  7. hice todo paso a paso sin ningún problema, hasta que luego del “upgrade-from-grub-legacy” y haber escogido /boot (tengo win7 para manejo de programas de la oficina), reinicie y me salio error en el grub:

    GRUB Loading stage1.5.
    GRUB loading, please wait….
    Error 15

  8. Tengo un problema al actualizar kernel. Cuando intento actualizarlo me da un error de “cannot allocate memory” en todos los modulos que intenta leer. Busco y busco y no encuentro cual será el problema.

  9. Excelente aporte! actualicé mi amd64 sin problema alguno!
    Gracias.

  1. Pingback: Tweets that mention Subir de Debian Lenny a Squeeze: modo sano y paranóico | Phenobarbital con Soda! -- Topsy.com

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: