BandaAncha.eu

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Base de datos de rpm desaparecida.

BocaDePez
BocaDePez

Saludos a todos los foreros.

Estoy usando PCLinuxOS desde hace unos años y estoy encantado con el pero hace tiempo que no puedo instalar ni desintalar ningun paquete a traves de Synaptic o de apt-get. Synaptic me muestra los paquetes disponibles en los repositorios y los descarga pero al ir a instalarlos me da un error diciendo que el digest no coincide, además me dice que tengo 0 paquetes instalados con lo que no puedo desinstalar nada, lo mismo me ocurre con apt-get. Si me descargo los rpm e intento instalarlos con el comando rpm me dice que la cabezera SHA esta mal y que el digest no coincide, no obstante si a rpm le paso las opciones --nodigest y --nomd5 entonces si que me deja instalarlos aunque luego no me deja desinstalarlos porque dice que no estan instalados. Intente reconstruir la base de datos de rpm con rmp --rebuilddb pero nada.

[root@localhost Downloads]# rpm -Uv pclinuxos-release-2012-1pclos2012.i586.rpm
error: pclinuxos-release-2012-1pclos2012.i586.rpm: Resumen SHA1 de la cabecera: BAD
error: pclinuxos-release-2012-1pclos2012.i586.rpm no puede ser instalado

Por lo demás el sistema funciona perfecto y he comprobado que tengo instalado openssh y gnupg y todo lo relacionado con SHA y md5.

BocaDePez
BocaDePez

Has configurado Synaptic a otro repositorio de otra distro p.eg: Fedora.

🗨️ 2
BocaDePez
BocaDePez

Pues no, he probado otros mirrors de la misma distro con identicos resultados. Tambien he probado a descargarme un solo paquete de rpm de otra distribucion y el resultado es el mismo, me dice que el hash esta mal y no me deja instalarlo salvo que le pase la opcion al comando rpm --nodigest y --nomd5.

🗨️ 1
BocaDePez
BocaDePez

El problema es que a synaptic no puedo pasarle la opcion de --nodigest --nomd5 con lo que tengo que instalar desde la consola con el comando rpm y resolver todas las dpendencias manualmente. Ademas no puedo desinstalar nada¡¡

BocaDePez
BocaDePez

¿Comprobaste si hay alguna copia de seguridad (~, .bak o .backup)?

🗨️ 6
BocaDePez
BocaDePez

Si, no hay ninguna copia de seguridad incluso el archivo /var/log/rpmpkgs que deberia contener los rpms instalados esta en blanco. Los mirrors de PClinuxOS estan bien porque en otro ordenador que tengo puedo instalar programas sin problema. He intentado copiar los archivos de /var/lib/rpm de este ordenador al mio y entonces si que me sale que tengo archivos instalados aunque claro no coincide con lo que realmente tengo instalado, no obstante, una vez hecho esto si intento instalar algo me sale el mismo error del digest no coincide. Al parecer el problema es que las claves publicas que tengo en mi ordenador para saber si los archivos descargados son exactamente iguales a los que hay en el mirror se han dañado o borrado. Lo que me gustaria saber es como reinstalar esas claves, tiene que ser algun paquete relacionado con gnupgp, sha, md5 o algo así.

Tengo una copia imagen del disco duro y me seria muy facil restaurar todo el sistema a un estado anterior sin perder ningun dato, pero es que quiero aprender a solucionarlo por si vuelve a pasarme ya que 5 llevo años sin reinstalar.

PD: Dejemos los formateos y las reinstalaciones para los usuarios de Window$.

🗨️ 5
Worked

Siempre podemos optar por intentar hacer esto, es a lo bruto... pero puestos a tocar el sistema vamos hacerlo a lo duro:

  1. Nos cargamos las llaves guardadas en el sistema (guarda copia por si acaso):
    ~$ rm /var/cache/urpmi/partial/pubkey
  2. Comprobamos que no haya keys por ahí danzando (guarda copias por si acaso):
    ~$ rpm -qa
    (si las hay... rpm -e gpg-pubkey-* )
  3. A follarse la db como dios manda (guarda copias por si acaso)
    ~$ rm /var/lib/rpm/__db.00*
    ~$ rpm --rebuilddb

Con eso, cruzando los dedos y orando a TuX bendito (más luego rearmando las keys necesarias)... debería estar todo arreglado. Aviso que hablo de memoria... hace mil años que no toco nada relacionado en RedHat.

🗨️ 3
BocaDePez
BocaDePez

Gracias a todos por ayudar

1- Uso PClinuxOS que aunque esta basada en Mandriva no usa urpmi, he realizado un "$ locate pubkey" pero no hay ninguna pubkey.

2-$ rpm -qa no muestra ningun rpm, es como si no hubiera nada instalado.

3-~$ rm /var/lib/rpm/__db.00* elimina las db pero....

4-~$ rpm --rebuilddb tendria que reedificar la base de datos pero no hace nada.

De hecho rpm -qa me listaba todos los rpm instalados aunque me decia que absolutamente todos ellos tenian la cabezera SHA mal, y al efectuar rpm --rebuilddb me borro todos los rpm que tenian la cabezera mal, es decir, todos.

Pero solo han sido borrados de la base de datos, los rpm siguen instalados y el sistema funciona bien.

He intentado hacer un rpm --import /etc/RPM-GPG-KEYS/* y tambien sin resultados.

🗨️ 2
Worked
🗨️ 1
BocaDePez
BocaDePez
BocaDePez
BocaDePez

Una cosa es querer aprender y otra saltarse las soluciones más simples y efectivas. En ningún momento sustituir una base de datos corrupta es formatear o reinstalar el sistema.

Las herramientas de RPM son las que son. No entiendo las ideologías tan limitativas de algunas personas y sobre todo el odio a los sistemas operativos distintos a Linux.

Linux no es mejor por ir por el camino más difícil, todo lo contrario.

Worked

Veamos... consultando por ahi en diferentes webs en ingles, me encuentro las posibles soluciones. Antes de nada... hacer todo esto en "init 1", para evitar posibles archivos bloqueados ( # init 1 )

  1. Nos cargamos las dbs:
    # rm -rf /var/lib/rpm/__db*

    Reconstruimos la db:
    # rpm -vv --rebuilddb

    Comprobamos paquetes duplicados:
    # dupeclean

    Limpiamos registros de apt:
    # apt-get clean && apt-get autoclean
    .-

  2. Posiblemente el /var/lib/rpm del disco duro este corrupto, entonces lo copiamos de otro lado (un livecd por ejemplo)
    .-
  3. Nos cargamos las dbs:
    # rm -rf /var/lib/rpm/__db*

    Reconstruimos db:
    # rpm --rebuilddb
    # rpmdb_verify Packages

Si nada de esto funciona... tocará leerse esta biblia: people.redhat.com/berrange/notes/rpmrecovery.html

🗨️ 1
BocaDePez
BocaDePez

Nos cargamos las dbs:

# rm -rf /var/lib/rpm/__db*

Hasta aqui OK.

Reconstruimos la db:

# rpm -vv --rebuilddb

No hace nada porque no le consta ningun rpm instalado.

Comprobamos paquetes duplicados:

# dupeclean

Bien , ningun duplicado.

Limpiamos registros de apt:

# apt-get clean && apt-get autoclean

Bien, cache limpia.

Posiblemente el /var/lib/rpm del disco duro este corrupto, entonces lo copiamos de otro lado (un livecd por ejemplo)

Acabo de hacerlo y sin errores, pero claro al hacer un rpm -qa me dice que tengo instalado lo del cd, no lo que realmente hay en mi ordenador.

Nos cargamos las dbs:

# rm -rf /var/lib/rpm/__db*

Asi eliminamos la db del cd para poder reconstruir una nueva db con lo que yo tengo realmente instalado.

Reconstruimos db:

# rpm --rebuilddb

Nada, no muestra ninguna salida ni mensaje de error.

# rpmdb_verify Packages

Imaqino que te refieres a hacer rpmdb -qa, deberia mostrarme los paquetes instalados , pero no muestra nada es como si no hubiera nada instalado, pero si corro este comando antes de correr rpm --rebuilddb me muestra los rpm que habian instalados en el cd.

Creo que los tiros no van por aqui, el problema según creo yo no es que la base de datos de rpm este corrupta, el problema es que algun paquete relacionado con los algoritmos de seguridad SHA o md5 o gnupg que sirven para comprobar si algun rpm esta corrupto o ha sido modificado por terceros ha desaparecido y entonces el comando rpm no tiene forma de comprobar si los rpm estan corruptos dando por tanto mensajes de error acerca del digest md5 y de la cabezera SHA y no permitiendo que apt-get o synaptic instalen paquetes porque segun rpm estan corruptos.

No tengo manera de saber que paquete falta porque rpm no me muestra lo que tengo instalado y lo que no , asi que la solucion es descargarse de los repositorios todos los paquetes relacionados con SHA , md5 , sasl y gnupg e instalarlos a mano desde el terminal con el comando rpm y las opciones --nodigest --nomd5 y --nodeps ya que segun rpm faltan cientos de dependencias porque no hay nada instalado en teoria. Y rezar para que no falte ninguna libreria necesaria para que estos paquetes funcionen.