Ir al contenido

Todo lo que hace Yocman, desde la tarea fallida hasta la placa grabada

36 comandos, una CLI. Todos se ejecutan localmente sobre tu directorio de compilación o proyecto. La IA es opcional para los análisis y no modifica archivos sin confirmación.

Diagnosticar y corregir

  • fix
  • explain
  • ask
  • context
  • login
  • --dry-run
  • --fresh

Cuando bitbake falla, yocman fix lee el registro, investiga en modo de solo lectura y propone un diff para tu capa. Tras confirmar, aplica el parche y repite la tarea. El diagnóstico queda en tu historial privado y el mismo fallo se resuelve sin nuevo uso de IA.

  • explain ofrece el diagnóstico sin cambiar nada
  • Los cambios encontrados por ask o explain se guardan para yocman fix
  • Los fallos ya resueltos se responden al instante; --fresh consulta de nuevo a la IA
  • Los parches van a tus capas, nunca a poky ni a las originales
  • --dry-run muestra los datos enmascarados sin enviarlos
yocman fix
$ yocman fix
… pre-analysis: missing_dependency in myapp:do_compile
… reading meta-custom/recipes-apps/myapp/myapp_1.0.bb
Diagnosis zlib headers are missing from the recipe sysroot
fatal error: zlib.h: No such file or directory
--- a/recipes-apps/myapp/myapp_1.0.bb
+++ b/recipes-apps/myapp/myapp_1.0.bb
@@ -10,6 +10,7 @@
inherit cmake systemd
+DEPENDS += "zlib"
Apply this patch? [y/N] y
✓ patch applied in meta-custom
✓ do_compile succeeded
Ejemplo de salida de la compilación de demostración incluida

Comandos

fix
Corrige una tarea fallida: aplica un parche a tu capa tras confirmar y repite la tarea; sin fallos aplica la propuesta de ask o explain
explain
Explica el último fallo sin cambios; guarda la corrección para yocman fix
ask
Responde preguntas sobre el proyecto; guarda cambios para yocman fix
context
Muestra versión, máquina, distribución y capas detectadas sin conexión
login
Guarda la clave API y la verifica con el servicio

Analizar la compilación

  • doctor
  • rules
  • conf
  • layers check
  • deps
  • why
  • provides
  • unused
  • orphans
  • duplicates
  • size
  • buildtime
  • sstate
  • boot
  • --no-ai

Análisis deterministas de archivos que bitbake ya genera: configuración, capas, dependencias, contenido y tamaño, tiempos, sstate y arranque. Los hechos proceden de archivos; un resumen opcional con IA los interpreta.

  • why muestra las cadenas que incorporan un paquete a la imagen
  • size diff compara compilaciones o revisiones buildhistory paquete a paquete
  • sstate encuentra recetas reconstruidas en cada compilación
  • doctor indica qué fuentes faltan y cómo activarlas
yocman why busybox · yocman buildtime
$ yocman why busybox
core-image-minimal → packagegroup-core-boot (IMAGE_INSTALL) → busybox
$ yocman buildtime
Wall time 58m20s
Effective parallelism 1.0 (BB_NUMBER_THREADS 64)
linux-yocto do_compile 25m00s
linux-yocto do_fetch 15m00s
myapp do_compile 5m00s
Ejemplo de salida de la compilación de demostración incluida

Comandos

doctor
Enumera las fuentes del directorio de compilación y cómo activar las que faltan
rules
Enumera reglas de análisis con identificador, categoría y gravedad
conf
Comprueba local.conf, bblayers.conf, auto.conf y site.conf
layers check
Comprueba capas de bblayers.conf: ausentes, duplicadas, incompatibles, .bbappend huérfanos
deps
Muestra las dependencias de compilación y ejecución de un paquete y quién depende de él
why
Explica por qué un paquete está en la imagen: cadenas desde IMAGE_INSTALL
provides
Identifica el paquete que instala un archivo en la imagen
unused
Enumera paquetes candidatos a eliminación para revisar
orphans
Recetas compiladas que no llegan a la imagen
duplicates
Funciones duplicadas en la imagen, como dos servidores SSH
size
Tamaño por paquete, archivo y categoría; size diff compara compilaciones
buildtime
Tareas y recetas más lentas de buildstats y paralelismo efectivo
sstate
Reutilización de sstate y recetas reconstruidas en cada compilación
boot
Tiempo de arranque con systemd-analyze blame y critical-chain

Seguridad y conformidad

  • audit
  • cve
  • secrets
  • users
  • perms
  • services
  • kernel-audit
  • licenses
  • sbom
  • cra report

Audita la imagen distribuida: CVE sin corregir, secretos, cuentas, permisos, servicios, refuerzo del kernel, licencias y SBOM SPDX, con puntuación por categoría.

  • Se informa de ubicación y tipo de los secretos, nunca se muestran
  • cve diff muestra qué corrige o introduce una actualización
  • kernel-audit comprueba la .config del kernel con una lista de refuerzo
  • Informes Markdown y JSON para revisiones y auditorías
yocman audit
$ yocman audit --fail-on high
Overall score 18/100 over 10 categories
conf 17 findings, worst high 0
secrets 7 findings, worst critical 0
licenses 4 findings, worst medium 76
sbom 3 findings, worst medium 86
critical CVE-001 CVE-2099-0101 (CVSS 9.8) in openssl 3.2.1
→ upgrade the recipe or backport the fix with 'CVE: <id>'
exit 1: findings at or above high
Ejemplo de salida de la compilación de demostración incluida

Comandos

audit
Auditoría completa de seguridad y conformidad con puntuación por categoría
cve
CVE sin corregir de cve-check por CVSS; cve diff compara compilaciones
secrets
Detecta claves, tokens y contraseñas en rootfs y capas, sin mostrarlos
users
Comprueba cuentas: contraseñas vacías, UID 0 adicionales, hashes débiles, consolas de acceso
perms
Comprueba permisos: setuid, escritura para todos, archivos sensibles, propietarios desconocidos
services
Comprueba servicios de arranque, servicios de red inseguros, ajustes SSH y depuración
kernel-audit
Compara la .config del kernel con una lista de refuerzo
licenses
Comprueba licencias GPLv3, propietarias, ambiguas y obligaciones de código fuente
sbom
Comprueba presencia del SBOM SPDX y coherencia con la imagen
cra report
Preparación CRA: relaciona evidencias de CVE, secretos, SBOM, licencias y kernel con requisitos

Iniciar un proyecto

  • init
  • add
  • remove
  • build
  • shell
  • env
  • flash
  • init --describe
  • init --board-search

Crea un proyecto kas para una de las 21 placas verificadas (Raspberry Pi, BeagleBone, Radxa, Orange Pi, i.MX 8M Plus EVK, QEMU…) o descríbelo a la IA. Añade SSH, Wi-Fi, Qt 6 o Docker, compila en host o contenedor kas con progreso y graba una SD con comprobación obligatoria del dispositivo.

  • Catálogo de placas verificado con repositorios reales de capas
  • init --board-search busca otras placas en el índice de capas de OpenEmbedded
  • build muestra fase, tareas activas y tiempo restante
  • env comprueba los requisitos y cambia entre host y contenedor
  • flash solo muestra discos extraíbles y pide escribir el nombre del dispositivo
yocman init
$ yocman init --release scarthgap --board rpi4-64 \
--feature ssh-openssh --feature wifi --env container
✓ Project generated in ~/yocto/rpi4-64-scarthgap
… kas checkout, kas lock (layers pinned)
$ yocman build
Compiling 2140/3412 tasks (62%) ~38 min left
linux-raspberrypi:do_compile qtbase:do_compile gcc:do_install
$ yocman flash --device /dev/sdb
sdb SanDisk Ultra 29.7 GiB usb removable
Type the device name (sdb) to confirm: sdb
Ejemplo de salida de la compilación de demostración incluida

Comandos

init
Crea un proyecto kas para placa y versión verificadas; --describe completa opciones con IA
add
Añade funciones (SSH, Wi-Fi, Qt 6, Docker…) con diff para confirmar y commit
remove
Elimina una función si ninguna otra depende de ella
build
Compila la imagen con progreso: fase, tareas activas y tiempo restante
shell
Abre una consola con el entorno bitbake en host o contenedor
env
Comprueba el entorno, cambia entre host y contenedor y actualiza la imagen kas
flash
Graba la imagen en SD o USB, solo discos extraíbles y con confirmación escrita

Integraciones

  • --format json
  • --fail-on
  • --no-ai
  • VS Code(próximamente)

Yocman es una CLI estándar para cualquier ejecutor CI. Cada análisis ofrece salida legible por máquinas y códigos de salida para controlar la canalización.

  • --fail-on high termina con código 1 si un hallazgo alcanza ese nivel
  • --no-ai mantiene la canalización completamente sin conexión
  • Próximamente habrá una extensión para VS Code
.gitlab-ci.yml
audit:
script:
- yocman audit --no-ai --format json -o audit.json --fail-on high
- yocman size diff previous/ build/ --format md -o size.md
artifacts:
paths: [audit.json, size.md]
Ejemplo de salida de la compilación de demostración incluida

El plan gratuito incluye correcciones, explicaciones, todos los análisis locales y hasta 5 comandos de seguridad al mes.

Empieza gratis