Restaurar la base de datos local de pacman

Resulta que he vuelto a instalar Arch en mi pc (con todo lo que eso implica jeje) y al finalizar la instalación pacman descargaba en un promedio de 23 kb/s. Lo cual puede acabar con la paciencia del mas tranquilo de los usuarios jaja.

Es por eso que comencé a editar la lista de mirrors y a ejecutar cuanto scrip optimizador de pacman encontré por la red. Resultado: pacman inservible.

Sintomas:Al tratar de instalar cualquier paquete, pacman tiraba un montón de dependencias necesarias, no obstante esto si le daba que continúe descargaba todo y al final decía que “algún error había ocurrido y que nada se instaló o actualizó”. Sabía que mi sistema no estaba actualizado, sin embargo al hacer un ‘pacman -Syu’ me decía que no había nada que actualizar.

Estuve a punto de rendirme y a ponerme a reinstalar arch, puesto que no encontraba respuesta a mi problema, pero dos cosas me hicieron recapacitar: 1) Reinstalar arch no es algo muy divertido que digamos jejejeje. 2) Recordé que estaba en el mundo del software libre, donde las cosas se reparan!!

Así que me puse manos a la obra y encontré la respuesta. Donde mas sino en el wiki de arch (pero que idiota!!). Sin mas, copio y pego lo que allí dice y al final pongo el enlace a la página original. 

Cómo restaurar la base de datos local de Pacman

Introducción

Algo ha ido mal con pacman. ‘Pacman -Q’ no da resultados en absoluto, y ‘pacman -Syu’ le dice que sus sistema está actualizado, pero usted sabe que no es así. Cuando intenta instalar un paquete usando ‘pacman -S package’, se le presenta una lista de dependencias, aunque usted sepa positivamente que ya están todas ellas instaladas.

Su problema es que la base de datos de software instalado de pacman, ‘/var/lib/pacman/local’ se ha corrompido o borrado. Este es un problema serio, pero afortunadamente puede restaurar ‘/var/lib/pacman/local’ siguiendo las instrucciones que se indican a continuación.

Ausencia de responsabilidad

Antes de comenzar, quiero recalcar que aunque estas instrucciones me funcionaron a mí, puede que no funcionen para usted. De hecho, sus sistema podría no volver a ser el mismo nunca más.

PROCEDA ASUMIENDO EL RIESGO!

Línea de órdenes

La línea a continuación indica una orden tecleada por el usuario ‘me’ en un terminal, esto es, cualquier usuario excepto root.

[me@linuxbox]$ ls

La línea a continuación indica una orden tecleada en un terminal por el usuario ‘root’, esto es, el usuario con todos los derechos en su sistema.

[root@linuxbox]# ls

La mayoría de las instrucciones descritas a continuación suponen que tiene usted acceso como root a su sistema.

Instrucciones

  • En primer lugar, tiene que asegurarse de que tiene el archivo de anotaciones de pacman.
[me@linuxbox]$ ls /var/log/pacman.log
/var/log/pacman.log

Si no existe su archivo de anotaciones de pacman, NO debe continuar. La única opción que tiene es reinstalar su sistema desde cero.

De acuerdo, su archivo ‘/var/log/pacman.log’ existe. ¿Va a continuar?

  • cree el archivo ‘pkglist.sh’.
[root@linuxbox]# touch pkglist.sh
  • Copie y pegue las líneas siguientes en su archivo ‘pkglist.sh’.

#!/bin/bash
#
SEDEXP='s/^\[[^ ]* *[0-9][0-9]:[0-9][0-9]\] \([^ ]*\) *\([^ ]*\) .*/\1 \2/'
GRPEXP='(upgraded)|(installed)'
AWKEXP='{print $2}'
#
sed -e "$SEDEXP" /var/log/pacman.log | grep -E "$GRPEXP" | awk "$AWKEXP" | sort -u
# End

Gracias a ‘rdt’ http://bbs.archlinux.org/viewtopic.php?id=38531

grabe y salga.

  • Haga al archivo ‘pkglist.sh’ ejecutable.
[root@linuxbox]# chmod 744 pkglist.sh
  • Ahora ejecute ‘pklglist.sh’ y redireccione la salida a ‘pkglist’.
[root@linuxbox]# ./pkglist.sh > pkglist
  • ‘pkglist’ conendrá ahora una lista de todo el software que instaló o actualizó. Edite ‘pkglist’ y elimine todo lo que no quiera reinstalar. Usted podría querer hacer esto si por ejemplo constryó un paquete personalizado y lo instaló con ‘abs’.
[root@linuxbox]# vi pkglist
  • Una vez esté satisfecho con el contenido de ‘pkglist’, puede utilizarlo para reinstalar su software, y restaurar ‘/var/lib/pacman/local’.

No hay ninguna necesidad de comprobar las dependencias, y tiene que ‘forzar’ la instalación dado que los programas ya existen.

[root@linuxbox]# pacman -Sdf `cat pkglist`

Pacman le presentará ahora una larga lista de software que va a ser instalado. Diga ‘yes’ y espere a que termine pacman.

  • Finalmente, necesitará descubrir todos los archivos de configuración que han cambiado. Puede hacer esto actualizando primero la base de datos ‘locate’.
[root@linuxbox]# updatedb
  • Ahora puede buscar todos los archivos de configuración que hayan cambiado.
[root@linuxbox]# locate pacorig

Esto le dará una lista de todos los archivos de configuración que han sido reemplazados. Su archivo original tendrá la extensión ‘.pacorig’. Borre los nuevos archivos, y renombre los archivos ‘.pacorig’ para restaurar su configuración inicial para cada paquete de software que pueda estar afectado. Pueden haber cambido también algunos permisos de directorio. Compruebe esto si algo se niega a arrancar.

Felicidades, acaba de restaurar con éxito su base de datos local de pacman.

He seguido las instrucciones tal cual aparecen en este texto y todo me ha funcionado de maravilla, hasta pacman descarga como debe ser ahora.

Espero a alguien mas le sirva.

Saludos.

Visto acá

Esta entrada fue publicada en Archlinux y etiquetada , , , , . Guarda el enlace permanente.

2 respuestas a Restaurar la base de datos local de pacman

  1. jos dijo:

    Me salvaste la vida, y el sitema, por estar ejecuntando scrip raros

  2. aldobelus dijo:

    Hola. Espero que todavía estés a la escucha, después del tiempo que ha pasado. He estado siguiendo tus indicaciones y al ejecutar el comando “locate pacorig” no me sale ninguna respuesta y no me parece normal. ¿Sabes si me convendría seguir o destruyo el nuevo pkglist? No sea que al reiniciar o actualizar se me “autodestruya” el ordenador! Gracias por si acaso…

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