Instalar Ubuntu desde cero sin perder los programas instalados

nullYa que los Reyes Magos no han tenido a bien (y eso que como suelen ir despistados sobre qué regalar les he ido dejando pistas) regalarme un disco duro más grande para el portátil ando (no con demasiadas prisas) a la caza y captura de uno (si alguien está muy satisfecho con los “servicios prestados” por éste humilde blogger no seré yo quien le impida regalarme uno ;) ) que me permita hacer más experimentos y, de paso, no tener que estar continuamente volcando cosas al disco duro externo.

Pero se me plantean varias dudas:

  1. Aprovecho para instalar el último Ubuntu aunque suponga perder el tiempo instalando (y seguro que olvidando algunas) las aplicaciones que tengo actualmente
  2. Hago una imagen de mi sistema operativo actual y la meto en el nuevo disco
  3. Me quedo como estoy y no amplio el disco duro :)

Creo que me voy a quedar con una mezcla de las dos primeras y descarto la última.

El que sienta curiosidad que pase dentro y le cuento cómo…

Justificando la decisión adoptada

Ya que voy a tener que instalar el sistema operativo en el nuevo disco lo mejor será (espero no equivocarme y que empiecen a fallar cosas que ya tenía controladas) probar la nueva versión de Ubuntu (queda demasiado para Jackalope pero como siga al ritmo actual puede que no sea descabellada la opción ;) )

Pero para que se parezca a lo que tengo ahora lo mejor será automatizar el proceso que me permita instalar las mismas aplicaciones que tengo actualmente de forma que evite olvidar algún programa por el camino.

Alternativas existentes

Para poder mantener las aplicaciones instaladas en nuestro sistema tras una instalación de Linux desde cero contamos con

AptOnCd

Programa que facilita la copia de los paquetes de aplicaciones instalados en el sistema y su uso posterior para restaurarlos en el nuevo sistema operativo.

Podéis encontrar información detallada sobre APTONCD en la web de AlejandroX.

Personalmente le encuentro un par de problemas que hacen que desestime esta solución

  1. Si los paquetes no se encuentran en la caché de APT dudo que los tenga en cuenta y si lo hace, ¿merece la pena tener que descargarlos de nuevo para volver a instalarlos?
  2. ¿Qué ocurre con los programas que se han instalado directamente usando un fichero .deb? ¿Cómo los encuentra?
  3. Aunque no debería haber problemas sólo cuenta con versiones para Ubuntu Feisty y Gutsy
  4. La última actualización del programa es de mayo del 2007

Generando un listado de las aplicaciones instaladas

Solución interesante (aunque manual) ofrecida en varios sitios (mención especial merecen LinWind y Mundo Geek del amigo Raúl).

El problema de esta solución (no hay solución perfecta, sólo una “menos mala”) es que si te planteas un cambio (como es mi caso) de Xubuntu a Ubuntu se te incluyen una ingente cantidad de paquetes (como el entorno de ventanas XFCE propio de Xubuntu con todas sus dependencias) que provocan que (y puedo prometeros que son datos reales) tengas que esperar como 5 horas a que se descarguen los “chorrocientos” megas necesarios.

Eso sin contar que después tendrás que tirar parte del trabajo quitando lo que no quieres (como el mencionado XFCE)

Mejora al listado de aplicaciones instalado

Me gusta la solución así que voy a plantear una posible forma de solventar el problema mencionado.

La idea es simple (Occam, Occam, Occam ;) ):

Si a los paquetes actualmente instalados le quitamos los que vienen con Ubuntu recién instalado el resultado debería ser todo lo que le hemos metido al sistema.

Obteniendo la lista de programas instalados

Para obtener la lista de paquetes (tanto cuando instalamos Ubuntu como cuando decidimos dar el salto a otra versión) debemos ejecutar un

dpkg --get-selections | grep -v deinstall > paquetes-finales

NOTA: recuerda utilizar nombres de ficheros diferentes (por ejemplo paquetes-finales y paquetes-iniciales) y que tengan sentido de forma que te sea sencillo saber cuáles pertenecen al listado de paquetes que vienen por defecto con Ubuntu (paquetes-iniciales) y los que hay tras instalarte n-cientos-mil programas en tu equipo (paquetes-finales).

Generando el listado de paquetes a instalar

Para obtener la diferencia entre las dos listas de paquetes bastará ejecutar un

comm -3 paquetes-iniciales paquetes-finales > paquetes-instalados

Donde

  • paquetes-instalados contiene los cambios existentes entre los ficheros paquetes-iniciales y paquetes-finales

Instalando nuestros programas en el Linux recién instalado

Con el fichero paquetes-finales en nuestro poder bastará con ejecutar un

sudo apt-get install dselect

dpkg --set-selections < paquetes-instalados

sudo aptitude update

sudo dselect install

Otras aplicaciones de la solución

A la hora de actualizar nuestro Ubuntu Linux siempre surge la duda entre

  1. Hacer un upgrade de Ubuntu para no perder nada
  2. Instalar desde cero Ubuntu.

Todo el mundo es partidario de la segunda opción porque dicen que funciona mejor pero lo que realmente apetece es la primera para evitar complicaciones.

Con esta solución que planteamos podemos tomar lo mejor de las dos evitando posibles problemas ¿no os parece?

Pregunta abierta

¿Alguién conoce y/o propone otra alternativa para resolver el problema? Estaremos encantados de sopesar los pros y los contras de la misma y de paso aprender por el camino (no dudes en compartirla con nosotros, te estaremos “eternamente” agradecidos)

En el próximo capítulo

Tras el LiFE v2.0 de estas navidades algunos alumn@s están teniendo problemas con sus hermanos porque por defecto arranca con Ubuntu y tienen que andar rápidos para no perderse su “fantástico” Microsoft Windows.

Aunque existen infinidad de sitios donde se explica cómo modificar grub para evitar este comportamiento me gustaría ofrecer una alternativa gráfica que evite a los más nuevos tener que andar con la terminal escribiendo extraños “arcanos” ;)

18 comentarios en “Instalar Ubuntu desde cero sin perder los programas instalados

  1. ColdBeer dijo:

    Te falta descubrirnos cómo obtienes el archivo “paquetes iniciales”, ¿no?

    Para solucionar el arranque por defecto: startupmanager que es muy majete ¿no?

  2. Hola, antes que nada, felicidades por el blog, no hace mucho que lo leo pero me ha gustado ;)

    Sobre el tema, no soy alguien muy ordenado jeje, pero las veces que he reinstalado, lo primero que hago es respaldar, luego hago una lista de los programas que tengo y hago una copia de la carpeta que se crea en /home/usuario (la carpeta oculta) para las aplicaciones que voy a volver a instalar y no perder las configuraciones más importantes. La verdad que siempre me sorprendo de lo rápido que queda el sistema funcionando otra vez aunque la instalación haya sido desde 0. La lista de programas me sirve para elegir cuales aplicaciones volveré a instalar y cuales no. Esa lista generalmente la voy llenando con forme voy instalando programas nuevos para no olvidarme de ellos. Siempre he instalado desde cero, me ha servido también como depuración o limpieza de la máquina. No creo que sea el mejor método, pero espero sirva de algo :p

    Saludos.

  3. Pensé que no hacía falta (prometo perder "algún día" la manía de presuponer cosas ;) ).
    Como se indica (aunque mal porque no se entiende a tenor de los resultados) en el subapartado Obteniendo la lista de programas instalados, lo que debe hacerse es ejecutar el comando indicado cada vez que nos instalamos una versión de Ubuntu con objeto de tener la lista de paquetes que vienen "por defecto" en cada versión y guardar el fichero generado para cuando decidamos dar el "salto" a otra versión.
    En ese momento volveremos a ejecutar el comando para obtener el fichero con los cambios que hemos realizado.

  4. chip10 dijo:

    @crack23
    Lo que dice es que primero ejecutes el paquetes-finales en tu viejo ordenador y cuando instales el nuevo ubuntu ejecutes el paquetes-iniciales. Debes guardarte el fichero paquetes-finales para luego compararlos y el resultado de la comparación de los dos es el fichero paquetes-instalados. Esa lista es la que debes instalar en tu nuevo ubuntu.
    Saludos y un 10 para el autor

    • Casi @Chip10

      Lo que digo es que al instalar un sistema operativo (supongamos que es la 8.04) creemos la lista de paquetes que vienen por defecto.
      Lo usemos durante un tiempo y
      llegado el momento de cambiar de versión de Ubuntu generemos paquetes-finales (también en la 8.04)
      Ya podemos instalar el nuevo Ubuntu (supongamos que es la 8.10) y utilizar los dos ficheros que generamos en la versión anterior de Ubuntu.

      La solución que propones sería válida si instalamos OTRA VEZ la misma versión de Ubuntu.

      Gracias por el 10 pero creo que dados los problemas que hemos tenido no merezco más de un 8 ;)

  5. Hey! Felicidades por la entrada, detalla perfectamente los pasos y va al grano con mi problema… Resulta que el internet que puedo pagar es mas lento que un suero de miel congelado, y cuando quiero instalar ubuntu en la desktop (porque ya está viejita y cada cierto tiempo pierde el linux), con todos los programas que tengo en la laptop recurro al AptonCD que resultó ser una muy buena solución… El problema es que cuando quiero actualizar y crear un CD de recuperación (luego de haber descargado mas programas), la imagen ISO que me genera no cubre todos los programas que tengo instalados en la laptop… O sea que si quisiera hacer el restore con la ultima imagen generada por el AptonCD, no tendría todos los programas que realmente tengo en la laptop… ¿A que se debe eso? ¿Se puede arrreglar? (Lo único que se me ocurre ahora mismo es que el programa tome en cuenta las ISO’s que ya ha realizado y para ahorrar espacio no las tome encuenta a la hora de hacer la nueva lista, pero no estoy seguro…) ¿Aguna idea? Gracias por adelantado:)

    • Lo primero es lo primero, ¿cómo es que la desktop pierde Linux? ¿Se te estropea continuamente? ¿Te lo cargas a base de experimentos? ;) En fin, ya nos contarás (si quieres).

      Respecto al problema que planteas te recomendaría que una vez sincronizados los dos equipos hagas una copia de los programas instalados en la Laptop (y la guardes como backup). Sigue instalando cosas en el Desktop y cuando quieras sincronizarlos no tendrías más que aplicar la técnica indicada en el artículo para que te devuelva única y exclusivamente los cambios que se han producido en la Laptop.

      Espero que se entienda.

      Suerte y un saludo

      • jejejeje… Me lo cargo a base de inventos mas que experimentos… :P Soy maniático de probar cosas nuevas, pero lo hago en la desktop que como dije antes es viejita y me trae sin cuidado reinstalarle el sistema operativo… :D

        Entendí lo que dices… Pero ¿como hago la copia de los programas instalados si el AptonCD no me los reconoce todos? Recuerda que lo que quiero evitar es tener que descargarlos de internet por mi “super” conexión… Cuando consiga hacer esa lista voy a seguir tu sugerencia y de acuerdo a como se desarrolle el resultado, les comento a ver como me fue…

        Muchisismas Gracias!!! Y Felicidades de nuevo por la entrada! :D

  6. No está mal probar aunque yo usaría VirtualBox para los experimentos ;)

    Respecto al problema que nos ocupa siempre puedes mirar en la caché de APT (/var/cache/apt/archives) donde encontrarás todos los paquetes .deb descargados en la Laptop.

     Si te apetece experimentar te recomiendo que investigues el uso de apt-mirror y apt-cache que te permiten crear un mirror local; de este modo siempre podrías (si los dos equipos están conectados en LAN) descargar “en local” (sin usar la conexión a Internet) evitando tener que hacer manualmente lo que he mencionado anteriormente.

    Ya nos contarás… mucha suerte

  7. Creo que al intentar instalar los “paquetes instalados” la cosa puede fallar, ya que en esa lista puede haber paquetes que hayan sido instalados desde fuentes que ya no tengamos en las fuentes de repositorios de synaptic ( las fuentes varían de una versión de ubuntu a otra, y también podemos haber añadido a mano otras fuentes de paquetes, y también haber instalado paquetes .deb desde paginas web sin haber añadido ninguna fuente a synaptic );para instalar la lista de “paquetes instalados” ¿ no se tendría que añadir antes a synaptic las mismas fuentes de paquetes que tubiéramos en la versión anterior de ubuntu ?

    Con lo que me parece que no fallaría es si se usara el sistema para reinstalar de nuevo todos los paquetes pero en la misma versión de ubuntu, tal como se dice en:http://www.linuxmint-hispano.com/foro/?/topic,6036.0.html pero en este caso es para reinstalar la misma versión de ubuntu.

    • Buena puntualización (gracias) aunque siempre podemos añadir los repositorios de aquellos paquetes que no puedan ser instalados directamente (en mi caso son pocos los repositorios adicionales que incluyo por lo que no supondría excesivo trabajo)

  8. Creo que se solucionaría haciendo una copia de seguridad de seguridad de las “claves” de orígenes de software: copiar los directorios: /etc/apt/ /var/lib/apt/ la copia de todos ellos la podemos realizar con el comando: sudo tar zcvf apt-key.tgz /etc/apt/ /var/lib/apt/
    con el que se creará en la carpeta de usuario un archivo apt-key.tgz con los repositorios y sus claves.

    Luego de reinstalar el sistema desde cero se volveria a recuperar dicha copia de seguridad (sudo tar zxvf apt-key.tgz -C / ) y reinstalar la lista de paquetes instalados

    ¿ Crees que asi funcionaria todo bien, o falta algo ?

    • De todos modos no veo tan importante hacer copia de las keys como de las direcciones de los repositorios.
      Una vez que tienes estos y, con un simple update, descargarías dichas keys.

      La solución (y hablo sin probarlo) podría pasar por:

      1. anotar las entradas del source.list recién instalado el sistema (tal y como hacemos con los paquetes)
      2. volver a anotar su contenido cuando vayamos a cambiar de versión del sistema operativo.
      3. Calculamos los cambios (comando comm mencionado en el artículo) entre los dos source.list
      4. dichos repositorios son los que necesitaríamos en nuestro nuevo Ubuntu y/o Debian.

      De todos modos hay un problema: nunca sabremos (automáticamente) si dichos repositorios seguirán sirviendo en la nueva versión del Sistema (aunque imagino que el número de errores será mucho menor que si no los incluimos en la lista de repositorios)

      • hatteras dijo:

        Gracias, creo que queda todo aclarado.
        Y no conocía el comando comm -3 que me parece muy útil, para esto y seguro que para mas cosas.
        Seguiré consultando este blog.

Deja un comentario

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