Ir al contenido

«invalid or corrupted package (PGP signature)»

Cada paquete que distribuye Ditana está firmado, y pacman se niega a instalar uno cuya firma no puede comprobar. Eso significa que el mecanismo funciona. Pero también significa que un anillo de claves desactualizado le impide instalar precisamente las actualizaciones que lo corregirían.

Verá uno de estos mensajes, según si la clave de firma falta en su anillo de claves o está presente pero no es de confianza:

error: ditana-mirrorlist: key "3EC223A811077C09" is unknown
:: Import PGP key 3EC223A811077C09? [Y/n]
error: 'ditana-mirrorlist-1.12-1-any.pkg.tar.zst': invalid or corrupted package (PGP signature)
error: ditana-mirrorlist: signature from "Stefan Zipproth <[email protected]>" is unknown trust
error: failed to commit transaction (invalid or corrupted package (PGP signature))

Para un paquete de Ditana:

Ventana de terminal
sudo pacman -Sy ditana-keyring

Para un paquete de Arch (el mismo problema, la misma forma; este es frecuente en sistemas que han pasado meses sin conexión):

Ventana de terminal
sudo pacman -Sy archlinux-keyring

Esta es la excepción a la regla «nunca -Sy con un solo paquete» de Actualizar no es opcional, y vale la pena entender por qué es segura en lugar de tratarla como un conjuro mágico. En la transacción hay un solo paquete, así que no hay ninguna actualización parcial de un grafo de dependencias. Ese paquete es pequeño y no contiene ejecutables. Y su firma se puede verificar con una clave que su instalación ya tiene, así que no se confía en nada en lo que no se confiara antes: instalarlo ejecuta pacman-key --populate, que agrega el conjunto actual de claves de Ditana a su anillo de claves. Después, realice como de costumbre una actualización completa.

Si prefiere hacerlo a mano, esto es exactamente lo que ejecuta el script de instalación del paquete:

Ventana de terminal
sudo pacman-key --populate ditana

Los paquetes de Ditana están firmados con esta clave:

pub rsa4096 3F80 54C3 FF75 5E55 44E6 8516 BC33 3E9A E877 D45A
uid Stefan Zipproth <[email protected]>
uid Stefan Zipproth <[email protected]>

Tiene una subclave de firma dedicada, y esa subclave es la que firma la base de datos del repositorio y cada paquete compilado desde agosto de 2026:

sub rsa4096 068E EA2A 490B 0C63 AEAA 3BCD 3EC2 23A8 1107 7C09

La huella digital con la que usted verifica sigue siendo la de arriba: una subclave puede reemplazarse sin que la huella cambie. Un anillo de claves anterior a ditana-keyring 20260809 no conoce la subclave en absoluto, y esa es exactamente la situación que resuelve la reparación descrita arriba.

Compruebe en qué confía su propio sistema con:

Ventana de terminal
pacman-key --list-sigs ditana
gpg --show-keys --with-subkey-fingerprint /usr/share/pacman/keyrings/ditana.gpg

Deliberadamente, aquí no ofrecemos un script de reparación para descargar y ejecutar. La situación en la que usted se encuentra es «mi verificación de firmas falla»; responder a eso con «descargue esto y ejecútelo como root» es formalmente la misma operación que las firmas existen para impedir, y tampoco se podría firmar el script de forma que tuviera sentido: la comprobación de firmas es precisamente la parte que está rota. Un comando que usted puede leer es mejor que una caja negra.

  • El reloj está mal. Una firma no es válida antes del momento en que se creó. Si el reloj del sistema está muy atrasado —una pila CMOS agotada, una VM recién creada, un arranque dual con Windows que escribe la hora local en el RTC—, cada firma parece venir del futuro. Compruébelo con timedatectl y active NTP con sudo timedatectl set-ntp true.
  • Un servidor réplica entregó un archivo truncado. En ese caso, el mensaje menciona una suma de comprobación en lugar de una firma PGP. sudo pacman -Scc vacía la caché de descargas, y la próxima actualización vuelve a descargar el archivo.

Esta traducción la hizo una máquina. Los lectores la mejoran en Weblate.