Reemplazando un paquete Debian en reprepro

Y es que no siempre se acierta a la primera, y menos con prisas.

La siguiente es una receta para reemplazar un paquete Debian en un repositorio gestionado con el programa reprepro: se borra primero el que hay y luego se añade el nuevo archivo.

Porque no es posible añadir un paquete dos veces. Si tiene el mismo nombre y la misma versión, reprepro verifica que los contenidos sean diferentes y si lo son resulta en un error:

$ reprepro -b repos -V includedeb debian import/*.deb 
import/simpleborgbackup_0.2_all.deb: component guessed as 'main'
ERROR: 'import/simpleborgbackup_0.2_all.deb' cannot be included as 'pool/main/s/simpleborgbackup/simpleborgbackup_0.2_all.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: 3eb89bb9359435c36843326393b9acdb, got: 32219992ad8c3ccc6f36def3babb6f55
sha1 expected: 26a2759aac5389a32123fb92f5c922838b4dfa15, got: d420575ae1bda18d24807a1b2a73c885fda765ab
sha256 expected: 1bb04f11bb7731d2c1c9f46c9c60361d86df298eb71cc9a0551794179a6002bc, got: e37bec056df00a2dc8169b45bc67dcf3fb671e3d81cddf68b6fce0969e7df53f
size expected: 18552, got: 18624
There have been errors!

Y tiene sentido, desde luego, porque se podría estar metiendo la pata con la versión del paquete que luego daría problemas al actualizar. El mayor de ellos es que al ser la misma versión no actualiza.

Y como no existe un mecanismo de reemplazo pues tenemos primero que listar los paquetes, luego borrarlos y por último volver a importarlos:

victor@sarajevo:~/git/debian.astillas.net$ reprepro -b repos ls simpleborgbackup
simpleborgbackup | 0.2 | debian | amd64, i386, armel
victor@sarajevo:~/git/debian.astillas.net$ reprepro -b repos remove debian  simpleborgbackup
Exporting indices...
Deleting files no longer referenced...
victor@sarajevo:~/git/debian.astillas.net$ dir import/
total 28
drwxr-xr-x 6 victor Venexma  4096 ene 10 08:08 ..
-rw-r--r-- 1 victor Venexma 18624 ene 10 11:47 simpleborgbackup_0.2_all.deb
drwxrwxr-x 2 victor Venexma  4096 ene 10 11:47 .
victor@sarajevo:~/git/debian.astillas.net$ make import 
reprepro -b repos -V includedeb debian import/*.deb 
import/simpleborgbackup_0.2_all.deb: component guessed as 'main'
Exporting indices...
Successfully created 'repos/dists/debian/Release.gpg.new'
Successfully created 'repos/dists/debian/InRelease.new'
git add . && git commit -v -m  "Importando paquetes " 
[master cd1af12] Importando paquetes
 16 files changed, 79 insertions(+), 79 deletions(-)
 rewrite import/simpleborgbackup_0.2_all.deb (99%)
 rewrite repos/dists/debian/Release.gpg (91%)
 rewrite repos/dists/debian/main/binary-amd64/Packages.gz (100%)
 rewrite repos/dists/debian/main/binary-armel/Packages.gz (100%)
 rewrite repos/dists/debian/main/binary-i386/Packages.gz (100%)
 copy {import => repos/morgue}/simpleborgbackup_0.2_all.deb (100%)
 rewrite repos/pool/main/s/simpleborgbackup/simpleborgbackup_0.2_all.deb (99%)
victor@sarajevo:~/git/debian.astillas.net$ 

Referencias