Saltar al contenido principal

Dependencias de la tarea

El agente se ejecuta sin permisos de administrador: no puede instalar paquetes del sistema ni levantar bases de datos. La tarea que los necesita los declara en el bloque task:, y Kadu los instala antes de que empiece la ejecución.

task:
# ...
dependencies:
apt: [ffmpeg, poppler-utils] # paquetes del sistema
services: [postgres] # bases de datos locales

El repositorio solo elige nombres de una lista que mantiene Kobana. En un servicio, la versión, el puerto, el usuario y la contraseña vienen de la lista, nunca del repositorio.

Qué pasa en la ejecución​

  1. La ejecución empieza y Kadu verifica cada nombre en la lista. Un nombre fuera de la lista, o desactivado en ella, hace fallar la ejecución antes de instalar nada.
  2. Los paquetes se instalan y los servicios se levantan en la propia máquina de la ejecución, accesibles solo desde ella (127.0.0.1).
  3. Cada servicio llega a la skill en una variable de entorno (DEPENDENCY_POSTGRES_URL, etc.), con la URL de conexión lista.
  4. La línea de tiempo muestra el paso "dependencias" con el tiempo usado, o el motivo del fallo. Solo después empieza la skill.

La instalación cuenta para los 60 minutos de la ejecución: declara solo lo que la tarea usa.

Reglas​

ReglaDetalle
Solo nombres de la listaUn nombre fuera de la lista aparece en los avisos de la sincronización y hace fallar la ejecución
LímitesComo máximo 30 paquetes y 5 servicios por tarea
FormatoListas de texto; otra clave (como npm:) u otro tipo descarta el bloque entero, con aviso
Ausentedependencies fuera del frontmatter mantiene lo guardado; dependencies: {} lo limpia
Pares que no convivenmysql y mariadb (mismo puerto), redis y valkey (mismo puerto), mysql-client y mariadb-client. Declarar los dos de un par hace fallar la ejecución
SQLiteEs un archivo, no un servicio: basta el paquete sqlite3

:::info Por qué una lista Los paquetes y servicios se instalan con permisos de administrador, antes de que corra la skill. La lista garantiza que solo entra software conocido, del repositorio oficial de Ubuntu o de imágenes oficiales fijadas a una versión exacta. Aun con la lista, Kadu rechaza una instalación que le daría a la skill una forma de volverse administradora de la máquina, y la ejecución falla con el motivo. :::

Paquetes disponibles​

PDF​

PaquetePara qué
poppler-utilsExtraer texto e imágenes, convertir páginas (pdftotext, pdftoppm, pdfinfo)
qpdfUnir, dividir, rotar, descifrar y reparar
pdftk-javaUnir, dividir y rellenar formularios (pdftk)
mupdf-toolsmutool: extraer, renderizar y limpiar
ghostscriptRenderizar, comprimir y convertir PDF/PostScript
img2pdfImágenes → PDF sin pérdida
ocrmypdfPDF escaneado → PDF con búsqueda (OCR)

OCR​

PaquetePara qué
tesseract-ocrOCR de imágenes
tesseract-ocr-porIdioma portugués
tesseract-ocr-engIdioma inglés
tesseract-ocr-spaIdioma español

Documentos (DOC, DOCX, ODT, RTF, PPT)​

PaquetePara qué
libreoffice-writer-noguiDOC/DOCX/ODT: convertir y generar PDF sin interfaz (soffice --headless)
libreoffice-impress-noguiPPT/PPTX/ODP: convertir y generar PDF sin interfaz
pandocConvertir entre Markdown, DOCX, HTML y otros
antiwordDOC (Word 97-2003) → texto
catdocDOC, XLS y PPT antiguos → texto (catdoc, xls2csv, catppt)
docx2txtDOCX → texto
odt2txtODT/ODS → texto
unrtfRTF → texto o HTML

Hojas de cálculo y CSV​

PaquetePara qué
libreoffice-calc-noguiXLS/XLSX/ODS: convertir y recalcular sin interfaz
gnumericssconvert: XLS/XLSX/ODS/CSV sin LibreOffice
csvkitcsvlook, csvsql, csvjoin, in2csv (XLSX → CSV)
millermlr: filtrar, agregar y convertir CSV/TSV/JSON
xlsx2csvXLSX → CSV
sqlite3SQLite: consultar CSV y bases en archivo

Imágenes​

PaquetePara qué
imagemagickConvertir, redimensionar y componer imágenes
graphicsmagickgm convert/mogrify (alternativa a ImageMagick)
libvips-toolsvips: imágenes grandes con poca memoria
webpWebP (cwebp, dwebp)
optipngOptimizar PNG sin pérdida
jpegoptimOptimizar JPEG
pngquantCompresión de PNG con pérdida
librsvg2-binSVG → PNG/PDF (rsvg-convert)
libimage-exiftool-perlexiftool: metadatos de imagen, PDF y audio

Audio y video​

PaquetePara qué
ffmpegCortar, convertir y montar audio y video
soxConvertir, cortar, normalizar y aplicar efectos de audio
libsox-fmt-mp3MP3 en sox
lameCodificar MP3
flacFLAC
opus-toolsOpus (opusenc, opusdec)
vorbis-toolsOGG Vorbis (oggenc, oggdec)
mediainfoMetadatos de audio y video

Archivos y datos​

PaquetePara qué
zipComprimir ZIP
unzipDescomprimir ZIP
p7zip-full7z, y lectura de RAR y otros formatos
xmlstarletConsultar y editar XML (NF-e, CNAB en XML)
html2textHTML → texto
yqConsultar y convertir YAML y XML

Servicios y almacenamiento​

PaquetePara qué
ghGitHub CLI
git-lfsGit LFS
rcloneCopiar y sincronizar archivos con Google Drive, Dropbox, OneDrive, S3 y otros
s3cmdS3 y compatibles

Clientes de base de datos​

PaquetePara qué
postgresql-clientpsql, pg_dump
mysql-clientmysql, mysqldump (no convive con mariadb-client)
mariadb-clientmariadb, mariadb-dump (no convive con mysql-client)
redis-toolsredis-cli
valkey-toolsvalkey-cli

Fuentes y pantalla​

PaquetePara qué
fonts-noto-coreFuentes Noto (latín, acentos)
fonts-noto-color-emojiEmoji a color
fonts-liberation2Compatibles con Arial, Times y Courier
fonts-dejavu-coreFuentes DejaVu
xvfbPantalla virtual para navegador con interfaz

Servicios disponibles​

ServicioVersiónVariableValorUsuario / contraseña / base
postgresPostgreSQL 18DEPENDENCY_POSTGRES_URLpostgresql://postgres:postgres@127.0.0.1:5432/postgrespostgres / postgres / postgres
mysqlMySQL 8.4 (LTS)DEPENDENCY_MYSQL_URLmysql://root:mysql@127.0.0.1:3306/approot / mysql / app
mariadbMariaDB 11.4 (LTS)DEPENDENCY_MARIADB_URLmysql://root:mariadb@127.0.0.1:3306/approot / mariadb / app
redisRedis 7DEPENDENCY_REDIS_URLredis://127.0.0.1:6379sin contraseña
valkeyValkey 8 (protocolo Redis)DEPENDENCY_VALKEY_URLredis://127.0.0.1:6379sin contraseña

La base nace vacía en cada ejecución y desaparece con ella: sirve para trabajo temporal (armar datos, correr una app en modo de desarrollo), no para guardar nada entre ejecuciones.

Lo que no está en la lista​

NecesitasHazlo así
Paquetes de npm o pip, navegadoresLa skill los instala en su propia carpeta, sin permisos de administrador (npm install -g --prefix "$HOME/.local", npx, pip install --user)
Slack CLI, Google Cloud CLI (gcloud), LinearNo están en el repositorio de Ubuntu. Instálalos en la carpeta de la skill, o llama a la API HTTP con curl
AWS CLINo está en Ubuntu 24.04. Para S3, usa s3cmd o rclone
Google Drive, Dropbox, OneDriverclone
Otro paquete o base de datosPídelo al soporte de Kobana (abajo)

Pedir un paquete o servicio​

Contacta al soporte de Kobana con el nombre y para qué lo necesita la tarea. El paquete debe estar en el repositorio oficial de Ubuntu 24.04 y no puede traer programas con permisos especiales; el servicio necesita una imagen oficial. Una vez incluido, vale para las próximas ejecuciones, sin cambiar nada en el repositorio.

Errores comunes​

SíntomaCausaSolución
Aviso "fuera de la lista permitida" en la sincronizaciónEl nombre no está en la lista, o está desactivadoCorrige el nombre o pide la inclusión
La ejecución falla antes de empezar, en el paso "dependencias"Nombre fuera de la lista, un par que no convive o un paquete rechazadoLee el motivo en la línea de tiempo
dependencies ignorado, con avisoClave desconocida o tipo incorrecto en el bloqueSolo apt y services, como listas de texto
Conexión a la base rechazadaServicio no declarado, o la skill lee otra variableDeclara en services y usa la variable DEPENDENCY_*
La ejecución se queda sin tiempoDemasiados paquetesDeclara solo lo que la tarea usa