ctt-gob-es / clienteafirma

Cliente @firma
http://administracionelectronica.gob.es/ctt/clienteafirma
247 stars 120 forks source link

AutoFirma 1.8.0 no es instalable en Debian Stable #324

Closed narcisgarcia closed 1 year ago

narcisgarcia commented 1 year ago
$ lsb_release -ds
Debian GNU/Linux 11 (bullseye)
$ sudo dpkg -i AutoFirma_1_8_0.deb
dpkg-deb: error: archive 'AutoFirma_1_8_0.deb' uses unknown compression for member 'control.tar.zst', giving up
dpkg: error processing archive AutoFirma_1_8_0.deb (--install):
 dpkg-deb --control subprocess returned error exit status 2
Errors were encountered while processing:
 AutoFirma_1_8_0.deb
narcisgarcia commented 1 year ago
$ lintian AutoFirma_1_8_0.deb
dpkg-deb: error: archive 'AutoFirma_1_8_0.deb' uses unknown compression for member 'control.tar.zst', giving up
Skipping AutoFirma_1_8_0.deb: Non-zero status 2 from tar --wildcards -xO -f - *control:
tar: This does not look like a tar archive
tar: *control: Not found in archive
tar: Exiting with failure status due to previous errors
narcisgarcia commented 1 year ago

He conseguido corregir el paquete para que la versión 1.8.0 sea instalable en todas las distribuciones previstas. Pero no lo puedo cargar aquí porque pesa más de 25 MB.

ajgarlag commented 1 year ago

He conseguido corregir el paquete para que la versión 1.8.0 sea instalable en todas las distribuciones previstas. Pero no lo puedo cargar aquí porque pesa más de 25 MB.

@narcisgarcia ¿Como lo has conseguido? Me he encontrado el mismo problema. Gracias.

narcisgarcia commented 1 year ago

Creé un «arreglador», que adjunto. A ver si les administradores del proyecto se ponen al día. deb-zst-repackage.zip

ajgarlag commented 1 year ago

¡Muchas gracias! Una pena que tengamos que andar así.

narcisgarcia commented 1 year ago

También estuve tentado a crear un repositorio de paquetes, pero es que es responsabilidad de las AAPP el mantener el software que requiere ser usado, con licencia FOSS, y ante todo bien soportado para las plataformas FOSS

Gamuci commented 1 year ago

Hola.

Se puede instalar el paquete directamente si se utiliza apt-get:

sudo apt-get –f install ./AutoFirma_1_8_0.deb

En cualquier caso, se va a modificar el algoritmo de compresión interno con el que se genera el paquete para que no de problemas con dpkg. Próximamente se va a publicar una versión 1.8.1 con esto incluido.

Muchas gracias por el aviso.

ajgarlag commented 1 year ago

@Gamuci Como ya avisó @narcisgarcia, Debian 11 Bullseye no soporta paquetes comprimidos con ese algoritmo:

user@bullseye:~/Descargas$ sudo apt-get install -f ./AutoFirma_1_8_0.deb 
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Nota, seleccionando «autofirma» en lugar de «./AutoFirma_1_8_0.deb»
Se actualizarán los siguientes paquetes:
  autofirma
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/51,8 MB de archivos.
Se utilizarán 9.017 kB de espacio de disco adicional después de esta operación.
Des:1 /home/user/Descargas/AutoFirma_1_8_0.deb autofirma all 1.8.0 [51,8 MB]
dpkg-deb: error: el archivo `/home/user/Descargas/AutoFirma_1_8_0.deb' contiene un miembro de datos `control.tar.zst' ininteligible, abandono
Traceback (most recent call last):
  File "/usr/share/apt-listchanges/DebianFiles.py", line 124, in readdeb
    output = subprocess.check_output(command)
  File "/usr/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['dpkg-deb', '-f', '/home/user/Descargas/AutoFirma_1_8_0.deb', 'Package', 'Source', 'Version', 'Architecture', 'Status']' returned non-zero exit status 2.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/apt-listchanges", line 323, in <module>
    main(config)
  File "/usr/bin/apt-listchanges", line 104, in main
    pkg = DebianFiles.Package(deb)
  File "/usr/share/apt-listchanges/DebianFiles.py", line 358, in __init__
    parser.readdeb(self.path)
  File "/usr/share/apt-listchanges/DebianFiles.py", line 127, in readdeb
    raise RuntimeError(_("Error processing '%(what)s': %(errmsg)s") %
RuntimeError: Error processing '/home/user/Descargas/AutoFirma_1_8_0.deb': Command '['dpkg-deb', '-f', '/home/user/Descargas/AutoFirma_1_8_0.deb', 'Package', 'Source', 'Version', 'Architecture', 'Status']' returned non-zero exit status 2.
dpkg-deb: error: el archivo `/home/user/Descargas/AutoFirma_1_8_0.deb' contiene un miembro de datos `control.tar.zst' ininteligible, abandono
dpkg: error al procesar el archivo /home/user/Descargas/AutoFirma_1_8_0.deb (--unpack):
 el subproceso dpkg-deb --control devolvió el código de salida de error 2
Se encontraron errores al procesar:
 /home/user/Descargas/AutoFirma_1_8_0.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
narcisgarcia commented 1 year ago

Ojo porque han pasado ya más de 10 días desde la publicación de la versión 1.8.0 de Autofirma, y habrá usuari@s (no técnic@s) que quieren hacerlo todo bien (incluso usar una distribución estable) y ya no pueden acceder a algunas Administraciones Públicas con este problema.

Aparte, que se deberán enterar y actualizar expresamente de la versión que corrija el problema. Véase la otra propuesta de mejora #323

calbasi commented 1 year ago

@Gamuci Como ya avisó @narcisgarcia, Debian 11 Bullseye no soporta paquetes comprimidos con ese algoritmo:

No, será a partir de Debian 12:

Aquí se añade el soporte al formato zst (el paquete zstd y dpkg se hacen amigos) https://tracker.debian.org/news/1407587/accepted-dpkg-12118-source-into-unstable/

O sea, a partir de la versión 1.21.18 de dpkg:

https://packages.debian.org/search?suite=all&section=all&arch=any&searchon=names&keywords=dpkg

calbasi commented 1 year ago

Creé un «arreglador», que adjunto. A ver si les administradores del proyecto se ponen al día. deb-zst-repackage.zip

Bon dia Narcís,

Tu script no genera ningún fichero, pero si comento estas lineas, lo tengo en el directorio temporal:

#PreDir="$(pwd)"
#TempDir="$(mktemp -d)"
PreDir="/home/MIUSUARIO/tmp/Firma"
TempDir="/home/MIUSUARIO/tmp/Firma/tmp"
# rm -f "${DEBPACKAGE}_repacked.deb"
...
#   rm -r "$TempDir"

Obtengo este fichero:

https://nextcloud.calbasi.net/index.php/s/KJSm5xLjApdAP3s

Entonces, cuando instalo el fichero generado, el proceso queda encallado pidiéndome una contraseña, aquí:

INFO: Comprobamos que se encuentre certutil en el sistema
d’abr. 24, 2023 12:45:50 P. M. es.gob.afirma.standalone.configurator.ConfiguratorLinux configure
INFO: Fin de la configuración
Generacion de certificados
Enter Password or Pin for "NSS Certificate DB":
ajgarlag commented 1 year ago

@calbasi Creo (igual me equivoco) que se para porque el almacén de certificados de Firefox tiene puesta una contraseña maestra y no puede acceder a él hasta que se la facilites.

narcisgarcia commented 1 year ago

Tu script no genera ningún fichero, pero si comento estas lineas, lo tengo en el directorio temporal: (...)

Si no genera ningún fichero, a buen seguro que se queja de algo. Cuando vea el problema podré crear una revisión del programillo.

calbasi commented 1 year ago

Pues llevas toda la razón! Ahora ya se me ha instalado! Voy a probar si me funciona para lo del voto por correo :-)

Si se confirma, podéis usar el enlace que he publicado más arriba para descargaros la versión apta para la instalación en Debian 11 ! Gracias @narcisgarcia por hacerlo posible

calbasi commented 1 year ago

Pues si, ha funcionado!

Os recuerdo el enlace donde encontraréis la versión modificada de Autofirma para Debian 11 (estable):

https://nextcloud.calbasi.net/index.php/s/KJSm5xLjApdAP3s

Pd.: de todas maneras @Gamuci , si pudieseis solventar el tema para toda la gente que estos días tiene que solicitar el voto por correo, sería un puntazo ;-)

calbasi commented 1 year ago

Tu script no genera ningún fichero, pero si comento estas lineas, lo tengo en el directorio temporal: (...)

Si no genera ningún fichero, a buen seguro que se queja de algo. Cuando vea el problema podré crear una revisión del programillo.

No, no. El mensaje final es el de que todo ha ido bien. Y de hecho solo evitando que se borre el directorio temporal y el propio fichero temporal, obtengo el fichero, en el directorio temporal que he evitado que se borre:

# rm -f "${DEBPACKAGE}_repacked.deb"
#   rm -r "$TempDir"
narcisgarcia commented 1 year ago

No es muy útil volver a «recordar» un enlace que igualmente ya está en el mismo hilo de comentarios. Cargo aquí una revisión del programillo arreglador para poderse autogestionar el arreglo, y detectar el problema que calbasi se encontró. deb-zst-repackage.zip

mrtmsgh commented 1 year ago

Tu script no genera ningún fichero, pero si comento estas lineas, lo tengo en el directorio temporal: (...)

Si no genera ningún fichero, a buen seguro que se queja de algo. Cuando vea el problema podré crear una revisión del programillo.

Muchas gracias por el script @narcisgarcia, me ha resultado muy útil.

El problema que le veo, es que el fichero generado se copia dentro del propio directorio temporal, justo antes de proceder a borrarlo.

Lo que he hecho para hacer que me funcione correctamente, es anteponer la variable "PreDir", que contiene el directorio original, a la ruta donde se copia el fichero resultante, dejando la línea de la siguiente manera:

cp REPACKED.deb "${PreDir}/${DEBPACKAGE}_repacked.deb"

De esta manera, una vez terminada la ejecución del script, ya tienes el paquete modificado en el mismo directorio desde el que se lanzó el script.

sergio-costas commented 1 year ago

Ese script es bastante complejo. En realidad se puede hacer de manera mucho más sencilla con las utilidades de dpkg. Es tan sencillo como esto:

mkdir tempo
dpkg-deb -R AutoFirma_1_8_0.deb tempo/
dpkg-deb -b -Zxz tempo/ AutoFirma_1_8_0_fixed.deb

asumiendo que partís del directorio en el que está el paquete AutoFirma_1_8_0.deb. El primer comando extrae los datos de dentro del paquete en el directorio tempo, y el segundo genera un nuevo paquete .deb con esos mismos datos, pero usando XZ.

EDITO: por supuesto, no podéis hacerlo en una Debian 11, pues se quejará de lo mismo. Pero en un sistema más reciente, como una Ubuntu (por ejemplo, arrancando con una Live si no tenéis ninguna "a mano"), o un Debian testing/SID, podéis generar el paquete y luego copiarlo al sistema final.

narcisgarcia commented 1 year ago

Debian 12 es más reciente que Ubuntu, y es que el hilo se inició acerca de la Debian que en ese momento era la versión Stable. Entonces, las soluciones propuestas son pertinentes si funcionan en Debian 11.

Me he alegrado al ver que AutoFirma notifica de las nuevas versiones disponibles, y que la nueva 1.8.2 tiene este problema resuelto. Ya no me detengo a mejorar el script (que en mis pruebas funcionaba perfectamente).

sergio-costas commented 1 year ago

si lo han resuelto en 1.8.2, genial.