miércoles, 5 de enero de 2011

Re/Instalar Ubuntu desde cero sin perder los programas ya instalados en una versión anterior.

Para poder mantener/recuperar  las aplicaciones instaladas en nuestro sistema tras una instalación de Ubuntu desde cero ( pero siempre conservando sin formatear la partición /home ) contamos con varias alternativas (la que se explica aquí, y el uso de AptOnCd ) : 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.

I) El sistema de instalación de los paquetes se basa en que si a la lista de todos los paquetes actualmente instalados en la versión que hasta ahora hemos usado ( paquetes-totales ) le quitamos los que vienen con un Ubuntu recién instalado ( paquetes-por-defecto)  el resultado debería ser la lista de todos los paquetes que hemos instalado al sistema por nuestra cuenta ( paquetes-instalados ) : la fórmula matemática: paquetes-totales - paquetes-por-defecto = paquetes-instalados

Paso 1: En el sistema en el que tenemos todos los paquetes instalados, es decir en la versión de Ubuntu que vamos a abandonar, para instalar desde cero otra versión mas actual.

Obteniendo la lista de todos los programas instalados:
Para obtener la lista de paquetes debemos ejecutar un:

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

Se crea un archivo con el nombre paquetes-totales en /home/usuario; dicho archivo debemos copiarlo en algún lugar seguro - un pendrive, por ejemplo - para su posterior recuperación y utilización, aunque como se ha creado en /home/usuario y esta partición no la vamos a formatear, dicho archivo no debe perderse.

Paso 2: Instalamos la versión mas actual de Ubuntu, formateando la partición / pero sin formatear la partición /home

Paso 3: Obteniendo la lista de los programas instalados por defecto en la nueva versión de Ubuntu:
Para obtener la lista de paquetes debemos ejecutar un:

dpkg --get-selections | grep -v deinstall > paquetes-por-defecto

NOTA: recuerda utilizar nombres de ficheros diferentes (por ejemplo paquetes-totales y paquetes-por-defecto) 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-por-defecto) y los que hay tras instalarte n-cientos-mil programas en tu equipo (paquetes-totales).
Generando el listado de paquetes a instalar

Otra forma de guardar una lista de los programas instalados ( esto vale tanto para crear el archivo paquetes-totales como para paquetes-por-defecto)  es desde Synaptic -> seleccionas “Instalados” -> Archivo -> Save markings as -> en la ventana que se abre seleccionas “guardar el estado completo, no solo los cambios” y le pones un nombre a la lista – paquetes-totales o paquetes-por-defecto  – y le das a guardar en /home/usuario.



Paso 4: Recuperamos el archivo paquetes-totales ( si fuera necesario desde la copia que hicimos en el paso 1, volviendolo a copiar a /home/usuario ). Para obtener la diferencia entre las dos listas de paquetes bastará ejecutar un
comm -3 paquetes-por-defecto paquetes-totales > paquetes-instalados

Donde: paquetes-instalados contiene los cambios existentes entre los ficheros paquetes-por-defecto y paquetes-totales, es decir es la lista de paquetes que instalamos por nuestra cuenta en la anterior versión de Ubuntu, y que ahora queremos recuperar.

Paso 5: Instalando nuestros programas (paquetes-instalados) en el Ubuntu recién instalado ( es decir el que tiene los paquetes-por-defecto ), para ello, con el fichero paquetes-totales y paquetes-instalados en nuestro poder bastará con ejecutar un

sudo apt-get install dselect
dpkg --set-selections < paquetes-instalados
sudo aptitude update
sudo dselect install

Con todo ello tendremos la partición /home igual que la teníamos en la anterior versión de Ubuntu, y habremos instalados los mismos paquetes que habíamos instalado por nuestra cuenta en la anterior versión, en esta nueva versión recién instalada.

Quizás después de todo haya que restaurar el Menú de Aplicaciones, para eso ver: copia de seguridad & recuperar Menú de Aplicaciones

----------------------


II) 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-En el Ubuntu que tenemos antes de instalar la nueva versión, hacer una copia de seguridad de los repositorios que se añaden desde: Synaptic-> Configuración-> Repositorios ->pestaña “otro software”, para ello hay que copiar  el directorio /etc/apt/sources.list.d que es el directorio donde se guardan los repositorios de terceros (otro software).

2-Anotar las entradas del archivo /etc/apt/sources.list recién instalado el sistema (tal y como hacemos con los paquetes): sources.list-por-defecto.

3-Volver a anotar su contenido cuando vayamos a cambiar de una versión a otra de Ubuntu, es decir el sources.list que tengamos después de haber añadido las fuentes de paquetes que hayamos querido: sources.list-final.

4-Calculamos los cambios entre los dos sources.list: comm -3 sources.list-por-defecto sources.list-final > sources.list-añadidos . Dichos repositorios son los que necesitaríamos en nuestro nuevo Ubuntu.

5-Actualizamos el directorio /etc/apt/sources.list.d del Ubuntu recién instalado, con la copia de seguridad que hicimos en el paso 1.

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)

Ver también:  http://andalinux.wordpress.com/2009/01/21/instalar-ubuntu-desde-cero-sin-perder-los-programas-instalados/ y http://hatteras-blog.blogspot.com.es/2010/11/copia-de-seguridad-de-synaptic.html


——-----------------------------------------------------------———————-

7 comentarios:

  1. ¿Y por qué no usas la lista de paquetes totales directamente sobre la Ubuntu recién instalada? Los paquetes instalados los ignorará y los nuevos los instalará, no creo que haya que hacer la diferencia.

    ResponderEliminar
  2. Hey, me lanza el siguiente error:
    com: el archivo 2 no esta ordenado
    com: el archivo 1 no esta ordenado

    ¿como lo soluciono?

    ResponderEliminar
  3. Chilote Seleque:
    Si puedes ser mas claro, explicando en que paso te da el error

    ResponderEliminar
  4. Un problema que le veo yo a esto, es que si tienes programas de algún repositorio ppa que hayas añadido manualmente, no podrás instalarlo a menos que hayas añadido el repositorio anteriormente, ¿me equivoco?. Ah, y en ubuntu 12.04 hay que instalar synaptics, porque no aparece más que el centro de software de ubuntu

    ResponderEliminar
  5. Dani:
    Si, por eso es bueno hacer también una copia de seguridad de synaptic, como explico en el enlace correspondiente.
    Y si, siempre recomiendo instalar Synaptic, que para mi es mucho mejor que el centro de software.

    ResponderEliminar
  6. En el paso 4, para obtener la diferencia entre paquetes instalados y por defecto, a mi también me da el error:

    com: el archivo 2 no esta ordenado
    com: el archivo 1 no esta ordenado

    ResponderEliminar
  7. El chilote Seleque, y Dani:
    Podéis probar la solución que indica Guadafan: "¿Y por qué no usas la lista de paquetes totales directamente sobre la Ubuntu recién instalada? Los paquetes instalados los ignorará y los nuevos los instalará, no creo que haya que hacer la diferencia".

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.