Reinstalar (o clonar) una Debian con ayuda de una instantánea del sistema de paquetes
Cuando tenemos que reinstalar nuestro Debian GNU/Linux por cualquier motivo nos encontramos con la tarea inevitable de volver a meterle de nuevo todos nuestros programas favoritos. Crear un sistema mínimo es sencillo, pero volver a dejar el sistema igual que antes y con los mismos programas normalmente da su trabajo (hay que recordar que paquetes estaban instalados, buscar sus nombres exactos en el cache y teclear de nuevo un montón de comandos o como mínimo pasarse un buen rato tachando opciones en el synaptic).
Así que vamos a crear un comando que lo haga todo por nosotros, o al menos que nos facilite la taréa:
dpkg-query -W -f='${Package} ${Status}\n'|gawk -v ORS=' ' 'BEGIN {print "apt-get install"} /\<instal/ {print $1}' > paquetes.txtComo se vé es muy similar al anterior, aunque hace cosas bastante distintas. Esta vez simplemente se creará un archivo de texto con un comando de instalación personalizado para nuestro sistema (incluye a todos los paquetes instalados actualmente).
El archivo creado tiene varias aplicaciones posibles. Ahora podríamos llevarlo hasta otra máquina con un sistema mínimo y conectada a la red, y "clonar" el sistema instalándole exactamente los mismos paquetes; o guardarlo en un lugar seguro y usarlo tras un formateo del sistema raiz para volver lo más rápidamente posible al mismo sistema de antes. Con algunas modificaciones sencillas podríamos incluso descargarnos sólo los paquetes que vamos a necesitar en una máquina con una conexión rápida a internet y llevarlos a una máquina igual que no esté conectada.
- Notas:
- Si ya existe un archivo de nombre "paquetes.txt" en el mismo directorio será sobreescrito
- El comando sólo descarga e instala los paquetes incluidos en repositorios de Debian. Los programas compilados o descargados aparte deben de recuperarse uno a uno adicionalmente.
- Los paquetes eliminados parcialmente no se tienen en cuenta y no se reinstalan
- Si se va a instalar en otra máquina ambas deben de tener la misma arquitectura
Para usarlo abrimos el archivo, seleccionamos todo su contenido y lo copiamos al portapapeles, luego lo pegamos directamente en una terminal de root y enter
Es bastante frecuente que el comando no funcione a la primera, especialmente en testing o sid y aborte tras indicar que no puede instalar unos pocos paquetes; ésto se debe a que el sistema de paquetes no es estático y algunos pueden haber sido eliminados del repositorio, depender de paquetes que ya no existen o haber sido sustituidos por versiones superiores con distintos nombres. En éste caso habrá que solucionar primero esos casos concretos (normalmente bastará con tratar de eliminarlos por separado o reinstalarlos y también podemos simplemente borrar el nombre de los paquetes conflictivos en el archivo paquetes.txt).
Una vez solucionado esté tema el comando descargará e instalará el resto de nuestros paquetes favoritos (varios cientos) en un sólo paso permitiendo que nos concentremos en otros asuntos mientras tanto.
Simple y útil, sí señor!!
Excelente!!!!!!!
WOW pvaldes, ¡¡¡Mil gracias!!! Gracias por el aporte!!
Saludos
Me ha encantado. Un apunte. Debian guarda los paquetes que descarga en /var/cache/apt/archives. Si el tamaño de tu disco duro te lo permitió y los conservas, puedes hacerles backup a un pendrive y traspasarlos. De esta forma no necesitará descargar esos paquetes, sólo instalarlos.
Lo que no entiendo es lo de que tenga que ser de la misma arquitectura. ¿Por qué?
P.D. ¿Qué te llevo a reinstalar Debian?
Gracias a todos por los comentarios.
Debian guarda los paquetes que descarga en /var/cache/apt/archives. Si el tamaño de tu disco duro te lo permitió y los conservas, puedes hacerles backup a un pendrive y traspasarlos. De esta forma no necesitará descargar esos paquetes, sólo instalarlos.
No he querido profundizar mucho en ese tema a propósito porque puede dar un par de problemas que habría que explicar con calma. En primer lugar sólo merece la pena realmente con estable, además si no te aseguras de actualizar aparte la lista de paquetes ya te digo por experiencia que en testing o sid romperás el sistema rápidamente. Quizás en otra ocasión.
Lo que no entiendo es lo de que tenga que ser de la misma arquitectura. ¿Por qué?
El nombre de las bibliotecas cambia mucho de unas arquitecturas a otras. Si tratamos de instalar bibliotecas para 386 en un amd por ejemplo lo más probable es que rompamos el sistema de dependencias también.
P.D. ¿Qué te llevo a reinstalar Debian?
Muchos experimentos sin gaseosa :-) o cada vez que cambio de maquina por ejemplo.
Lo estoy probando ahora mismo, solo un apunte, remplazando apt-get por aptitude me ha resuelto los problemas que había, sin eso (al menos a mi) no me lo instalaba.
antes de continuar, en la lista hay que quitar todos los paquetes que ya no estén en los repositorios, si no con apt-get da error y no continúa.
En 1 hora termina de reinstalar todo, ya contaré si hay alguna otra cosilla
Un saludo y gracias por el aporte!
Comsulta: esta correcto el comando, por que a mi no me esta funcionando
# dpkg-query -W -f='${Package} ${Status}\n'| gawk -v ORS=' ' 'BEGIN {print "aptitutde install"} /\<instal/ {print $1}' > paquetes_instalados.txtbash: gawk: no se encontró la orden
#
Nota: buen artículo, seguro que lo guardo, pero me falla eso
Saludos
Tendrás que instalar el paquete gawk, es raro que no lo tengas ya porque es un programa bastante estándar, prueba a ver si funciona con awk en vez de gawk
Ok, ahora entiendo ese paquete n lo tenia instalado
Muchas gracias por el tuto