# Cliente candidato apkg 0.3.1: instalación y recuperación

No se instaló automáticamente el Compaq. El bundle apkg-client-0.3.1-ssh.tar.gz no es APKG/1: apkg es protegido y reside fuera de sus rutas. Se usa un procedimiento independiente; no se amplía el formato ni se añaden hooks.

Incluye apkg, sus validadores C, consultas awk y curl i586. No reemplaza BusyBox, musl, OpenSSL ni servicios. Incluye un verificador SSHSIG y bibliotecas privadas bajo /usr/local/libexec/apkg; no requiere ssh-keygen ni OpenSSL del sistema. Exige el hash exacto de musl y comprueba una firma de prueba antes de instalar. Configuración, CA y raíz quedan como ejemplos; no se instalan ni sobrescriben automáticamente.

## Transferencia y validación

Transferir bundle y .sha256 mediante el SSH habitual. Comparar el hash con un canal confiable: una suma dentro del mismo archivo no autentica su editor. Como root:

    cd /home/cgpt
    sha256sum -c apkg-client-0.3.1-ssh.tar.gz.sha256
    mkdir -p /var/lib/apkg-client-incoming
    chmod 700 /var/lib/apkg-client-incoming
    gzip -dc apkg-client-0.3.1-ssh.tar.gz | tar -xf - -C /var/lib/apkg-client-incoming
    chown -R 0:0 /var/lib/apkg-client-incoming/apkg-client-0.3.1
    cd /var/lib/apkg-client-incoming/apkg-client-0.3.1
    sh update-client.sh --check

Validación sin modificar ejecutables. Usar almacenamiento persistente, nunca /tmp. Conservar una copia de /var/lib/apkg antes de aceptación.

Solo después de autorizar la prueba física:

    sh update-client.sh --apply
    apkg --version
    apkg list

El script respalda archivos con permisos/propietarios bajo /var/lib/apkg-client-update/ID y registra nuevos archivos para retirarlos al restaurar. Verifica root ext4 rw, i586, espacio, runtime, integridad y ausencia de transacciones. No ejecuta paquetes ni reinicia servicios.

Retiene también el lock de transacciones de apkg durante aplicación/restauración. Si cualquier destino ya pertenece a un registro de apkg, se detiene: no deja checksums de propiedad desactualizados ni inventa registros. Ese caso requiere una migración coordinada del componente protegido.

Ante errores ordinarios restaura automáticamente. Tras corte eléctrico/SIGKILL, inspeccionar journal y comprobar que no exista un actualizador vivo. Solo entonces retirar su lock vacío y restaurar:

    rmdir /var/lib/apkg-client-update/lock
    sh update-client.sh --restore ID

Si SIGKILL dejó además el lock de apkg, comprobar que su archivo apkg-client-update contiene exactamente ese marcador y que el PID registrado terminó. Solo para ese lock del actualizador, antes de restaurar:

    cat /var/lib/apkg/lock/pid
    cat /var/lib/apkg/lock/apkg-client-update
    rm /var/lib/apkg/lock/pid /var/lib/apkg/lock/apkg-client-update
    rmdir /var/lib/apkg/lock

No eliminar el lock de una transacción normal; utilizar su recuperación correspondiente. El actualizador no roba locks activos.

El respaldo también permite reversión después de éxito. No borrar checkpoints de repositorio al revertir ejecutables.

## Provisión de confianza después de aprobación del canal

Proporcionar por un canal confiable, root-owned y sin escritura de usuarios no confiables:

- /etc/apkg/root_signers: principal armadammx-repository y clave ssh-ed25519, fingerprint verificado fuera de banda.
- /etc/apkg/repos.conf: ejemplo adaptado, URL correcta y enabled=yes.
- /etc/apkg/ca-bundle.pem: autoridades CA verificadas. Se incluye un extracto Mozilla obtenido de curl.se como ejemplo con hash registrado; no sustituir silenciosamente una política CA local.
- Hora actual confiable y clock_floor apropiado.

El ejemplo usa clock_floor=0 deliberadamente inválido: completar el checkpoint por un medio confiable antes de habilitar.

El cliente no acepta HTTP, redirecciones, proxy ambiental, certificados inválidos ni claves aprendidas del índice. transport=local admite solo file:// para laboratorio explícito.

## Administración manual

    apkg update
    apkg search lz4
    apkg list-upgradable
    apkg download lz4
    apkg install --dry-run lz4
    apkg install lz4
    apkg upgrade armadafetch
    apkg upgrade --all
    apkg upgrade /home/cgpt/paquete.apkg
    apkg history
    apkg rollback armadafetch

Search/list-upgradable usan caché autenticada vigente, sin red. Update descarga solo metadatos. Download no instala. Paquetes se escriben en caché persistente, limitados y verificados. Dependencias normales deben estar instaladas con versión exacta; no hay resolución recursiva aún. Musl permanece externa, verificada y sin propiedad ficticia.

Upgrade --all exige terminal y respuesta exacta yes. Planifica y valida operaciones individuales; no es una transacción de conjunto. Un fallo puede dejar algunas operaciones completadas: consultar history. No se reinician servicios.

Se mantienen bloqueos de componentes protegidos. Un upgrade remoto exige conservar en el catálogo la versión instalada para respaldar su archivo. Una descarga fallida no elimina software instalado.

## Aceptación física pendiente

1. Registrar servicios, interfaces, rutas, memoria, /proc/swaps y almacenamiento.
2. Validar curl/runtime, reloj, CA y fingerprint sin cambiar acceso remoto.
3. Ejecutar update/search/list-upgradable y comprobar fallos de red.
4. Descargar paquete pequeño no crítico; verificar sin instalar.
5. Autorizar expresamente instalación/actualización de paquete de datos de prueba.
6. Verificar archivos/history/rollback/remove.
7. Registrar nuevamente estado y confirmar ausencia de cambios operativos.

No usar kernel, Dropbear, tinc ni apkg como primer paquete experimental. RSS/PSS físico del cliente sigue pendiente.
