Reinstalando el sistema
Este fin de semana iba a hacer una copia de seguridad, instalé lucky backup, lo configuré, lo dejé trabajando y cuando volví mi sistema había cascado. Resulta que alguna opción de configuración le dijo que cambiara los permisos y usuarios de todos los directorios de mi sistema. Después de perder un rato con la consola de recuperación restaurando permisos opté por reinstalar.
La ventaja de tener la home en una partición separada en estos casos tiene un gran valor.
Por otra parte los datos que quería conservar eran:
- Algunos ficheros de configuración (/etc)
- Mis bases de datos (/var/lib/mysql)
- Gemas, paquetes autogenerados, librerías ruby,… (/usr/local)
Antes de reinstalar saqué un listado de todos los paquetes que tenía instalados con el siguiente comando:
$ sudo dpkg --get-selections > MY_PACKAGES
Ahora ya estaba preparado para reinstalar. Al reinstalar le dije que quería usar como home mi antigua partición, sin formatearla por supuesto
Una vez reinstalado el sistema, restauré los repositorios de paquetes y de pasó aproveché a hacer limpieza (quité ppas que no usaba), con copiar el directorio etc/apt de la copia valía.
Como solo tenía añadidos PPAs los añadí a mano con el siguiente comando:
$ sudo add-apt-repository ppa:
Dejé que el sistema actualizara todos los paquetes y mientras copié el directorio /usr/local dentro del nuevo sistema. Aquí tengo todas las gemas y librerías de Ruby, además en /usr/local/src guardo los fuentes y paquetes generados por mi, así que solo tuve que instalarlos de nuevo.
Ahora ya podía reinstalar todos los paquetes, para ello usé el siguiente script:
#!/bin/bash# Get MY_PACKAGES then reinstall every package# To generate MY_PACKAGES: sudo dpkg --get-selections > MY_PACKAGESfor pkg in `cat MY_PACKAGES | egrep -v deinstall | awk '{print $1}' | egrep -v '(dpkg|apt|ruby|sphinx)'`;doaptitude -y install $pkgdone
Notas:
- Le pongo el parámetro “-y” para que responda yes a todas las preguntas
- Hago install en vez de reinstall para instalar solo lo nuevo.
- El último “egrep” excluye los paquetes que me creé yo para que no me los pise con los de la distribución.
Al terminar la instalación de todos los paquetes solo me faltaba recuperar mis bases de datos. Para ello paré MySQL:
$ sudo /etc/init.d/mysql stop
Copié todo directorio /var/lib/mysql al nuevo sistema y arranqué de nuevo mysql:
$ sudo /etc/init.d/mysql start
Arrancó, pero me salía el error:
'Access denied for user 'debian-sys-maint'@'localhost'
Esto lo solucioné conectando con el cliente de MySQL y cambiándole el password a ese usuario:
$ mysql -u root > GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD '' WITH GRANT OPTION

