"Después del juego es antes del juego"
Sepp Herberger

lunes, 5 de julio de 2021

Inconsistencia en el repositorio local de paquetes "reprepro"

Ya comenté que tengo un repositorio local de paquetes construido con reprepro, que me viene muy bien para instalar paquetes de Ubuntu que no vienen en los repositorios oficiales y que habria que descargar e instalar de forma manual en cada máquina. Tambien ofrece muy buena integración con pkgsync, que lleva mal el usar paquetes ajenos a los repositorios.

Hace poco estaba quitando un paquete del repositorio y a mitad de proceso he tenido un problema de dificultades (como dijo el ministro) y se ha cerrado la conexión. El paquete ha quedado medio quitado, medio no, ya que al parecer la desinstalación no es un proceso transaccional. De esta manera, si hacia:
# cd /var/www/repositorio/centro 
# reprepro list bionic
El paquete no aparecía en el repositorio, pero si en los clientes hacía:
# apt-cache search paquete-problematico
Si que aparecía y podía instalarlo. Por otro lado, si intentaba eliminar el paquete:
# reprepro remove bionic paquete-problematico
Not removed as not found: ...
Exporting indices...
Me decía que no estaba, pero si intentaba añadirlo de nuevo:
# reprepro --ask-passphrase includedeb bionic paquete-problematico-vX.Y.Z.deb 
Within references.db subtable references at put: BDB0067 DB_KEYEXIST: Key/data pair already exists
Me decía que no podía añadirlo ya que el registro estaba duplicado. Reprepro utiliza internamente una base de datos en formato Berkeley DB que carece de herramientas sencillas para manejarla. ¿Cómo salir del atolladero y librarnos de este paquete de Schörindger?

Reprepro tiene poca documentación y soporte. Tras buscar en Google y encontrar gente con el mismo problema sin solución, he ido a leer la página de manual (lo último que se lee antes de que se explote todo) y he dado con los comandos:
# reprepro rereference
Con este comando anterior se reconcilian las bases de datos. Después de ejecutarlo podemos reinstalar y luego quitar el paquete normalmente, quedándolo fuera del repositorio. Con:
# reprepro clearvanished 
Eliminamos el fichero .deb de la ruta donde está, ya que por defecto se quedan allí aunque ya no estén indexados. Con esto queda la tarea completada.


Los taikonautas chinos acaban de hacer el primer paseo espacial desde su flamante estación.



Recordemos que esa estación la ha construido China con sus propios medios, ya que tenían vetada por USA la entrada a la Estación Espacial Internacional. Ante este panorama, la Republica Popular de China ha optado constuirse su propia estación espacial, con casinos... y furcias.