Pular para o conteúdo principal

Dependências da tarefa

O agente roda sem permissão de administrador: ele não consegue instalar pacote do sistema nem subir banco de dados. A tarefa que precisa disso declara no bloco task:, e o Kadu instala antes de a execução começar.

task:
# ...
dependencies:
apt: [ffmpeg, poppler-utils] # pacotes do sistema
services: [postgres] # bancos de dados locais

O repositório só escolhe nomes de uma lista mantida pela Kobana. Para um serviço, a versão, a porta, o usuário e a senha vêm da lista, nunca do repositório.

O que acontece na execução​

  1. A execução começa e o Kadu confere cada nome na lista. Nome fora da lista, ou desativado nela, faz a execução falhar antes de instalar qualquer coisa.
  2. Os pacotes são instalados e os serviços sobem na própria máquina da execução, acessíveis só por ela (127.0.0.1).
  3. Cada serviço chega à skill numa variável de ambiente (DEPENDENCY_POSTGRES_URL etc.), com a URL de conexão pronta.
  4. A linha do tempo mostra o passo "dependências" com o tempo gasto, ou o motivo da falha. Só depois disso a skill começa.

A instalação conta para os 60 minutos da execução: declare só o que a tarefa usa.

Regras​

RegraDetalhe
Só nomes da listaNome fora da lista aparece nos avisos da sincronização e faz a execução falhar
LimitesNo máximo 30 pacotes e 5 serviços por tarefa
FormatoListas de texto; outra chave (como npm:) ou outro tipo descarta o bloco inteiro, com aviso
Ausentedependencies fora do frontmatter mantém o que estava gravado; dependencies: {} limpa
Pares que não convivemmysql e mariadb (mesma porta), redis e valkey (mesma porta), mysql-client e mariadb-client. Declarar os dois de um par faz a execução falhar
SQLiteÉ arquivo, não serviço: basta o pacote sqlite3

:::info Por que uma lista Pacote e serviço são instalados com permissão de administrador, antes de a skill rodar. A lista garante que só entra software conhecido, do repositório oficial do Ubuntu ou de imagens oficiais fixadas por versão exata. Mesmo com a lista, o Kadu recusa uma instalação que daria à skill um jeito de virar administrador da máquina, e a execução falha com o motivo. :::

Pacotes disponíveis​

PDF​

PacotePara quê
poppler-utilsExtrair texto e imagens, converter páginas (pdftotext, pdftoppm, pdfinfo)
qpdfJuntar, dividir, girar, descriptografar e reparar
pdftk-javaJuntar, dividir e preencher formulários (pdftk)
mupdf-toolsmutool: extrair, renderizar e limpar
ghostscriptRenderizar, comprimir e converter PDF/PostScript
img2pdfImagens → PDF sem perda
ocrmypdfPDF escaneado → PDF pesquisável (OCR)

OCR​

PacotePara quê
tesseract-ocrOCR de imagens
tesseract-ocr-porIdioma português
tesseract-ocr-engIdioma inglês
tesseract-ocr-spaIdioma espanhol

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

PacotePara quê
libreoffice-writer-noguiDOC/DOCX/ODT: converter e gerar PDF sem interface (soffice --headless)
libreoffice-impress-noguiPPT/PPTX/ODP: converter e gerar PDF sem interface
pandocConverter entre Markdown, DOCX, HTML e outros
antiwordDOC (Word 97-2003) → texto
catdocDOC, XLS e PPT antigos → texto (catdoc, xls2csv, catppt)
docx2txtDOCX → texto
odt2txtODT/ODS → texto
unrtfRTF → texto ou HTML

Planilhas e CSV​

PacotePara quê
libreoffice-calc-noguiXLS/XLSX/ODS: converter e recalcular sem interface
gnumericssconvert: XLS/XLSX/ODS/CSV sem LibreOffice
csvkitcsvlook, csvsql, csvjoin, in2csv (XLSX → CSV)
millermlr: filtrar, agregar e converter CSV/TSV/JSON
xlsx2csvXLSX → CSV
sqlite3SQLite: consultar CSV e bancos em arquivo

Imagens​

PacotePara quê
imagemagickConverter, redimensionar e compor imagens
graphicsmagickgm convert/mogrify (alternativa ao ImageMagick)
libvips-toolsvips: imagens grandes com pouca memória
webpWebP (cwebp, dwebp)
optipngOtimizar PNG sem perda
jpegoptimOtimizar JPEG
pngquantCompressão de PNG com perda
librsvg2-binSVG → PNG/PDF (rsvg-convert)
libimage-exiftool-perlexiftool: metadados de imagem, PDF e áudio

Áudio e vídeo​

PacotePara quê
ffmpegCortar, converter e montar áudio e vídeo
soxConverter, cortar, normalizar e aplicar efeitos em áudio
libsox-fmt-mp3MP3 no sox
lameCodificar MP3
flacFLAC
opus-toolsOpus (opusenc, opusdec)
vorbis-toolsOGG Vorbis (oggenc, oggdec)
mediainfoMetadados de áudio e vídeo

Arquivos e dados​

PacotePara quê
zipCompactar ZIP
unzipDescompactar ZIP
p7zip-full7z, e leitura de RAR e outros formatos
xmlstarletConsultar e editar XML (NF-e, CNAB em XML)
html2textHTML → texto
yqConsultar e converter YAML e XML

Serviços e armazenamento​

PacotePara quê
ghGitHub CLI
git-lfsGit LFS
rcloneCopiar e sincronizar arquivos com Google Drive, Dropbox, OneDrive, S3 e outros
s3cmdS3 e compatíveis

Clientes de banco​

PacotePara quê
postgresql-clientpsql, pg_dump
mysql-clientmysql, mysqldump (não convive com mariadb-client)
mariadb-clientmariadb, mariadb-dump (não convive com mysql-client)
redis-toolsredis-cli
valkey-toolsvalkey-cli

Fontes e tela​

PacotePara quê
fonts-noto-coreFontes Noto (latim, acentos)
fonts-noto-color-emojiEmoji colorido
fonts-liberation2Compatíveis com Arial, Times e Courier
fonts-dejavu-coreFontes DejaVu
xvfbTela virtual para navegador com interface

Serviços disponíveis​

ServiçoVersãoVariávelValorUsuário / senha / banco
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:6379sem senha
valkeyValkey 8 (protocolo Redis)DEPENDENCY_VALKEY_URLredis://127.0.0.1:6379sem senha

O banco nasce vazio a cada execução e some com ela: é para trabalho temporário (montar dados, rodar um app em modo de desenvolvimento), não para guardar nada entre execuções.

O que não está na lista​

Precisa deFaça assim
Pacotes de npm, pip ou navegadoresA skill instala na própria pasta, sem permissão de administrador (npm install -g --prefix "$HOME/.local", npx, pip install --user)
Slack CLI, Google Cloud CLI (gcloud), LinearNão estão no repositório do Ubuntu. Instale na pasta da skill, ou chame a API HTTP com curl
AWS CLINão está no Ubuntu 24.04. Para S3, use s3cmd ou rclone
Google Drive, Dropbox, OneDriverclone
Outro pacote ou bancoPeça ao suporte da Kobana (abaixo)

Pedir um pacote ou serviço​

Fale com o suporte da Kobana dizendo o nome e para que a tarefa precisa. O pacote precisa estar no repositório oficial do Ubuntu 24.04 e não pode trazer programa com permissão especial; o serviço precisa de imagem oficial. Depois de incluído, ele vale para as próximas execuções, sem mudar nada no repositório.

Erros comuns​

SintomaCausaSolução
Aviso "fora da lista permitida" na sincronizaçãoNome não está na lista, ou foi desativadoCorrija o nome ou peça a inclusão
Execução falha antes de começar, no passo "dependências"Nome fora da lista, par que não convive, ou pacote recusadoLeia o motivo na linha do tempo
dependencies ignorado, com avisoChave desconhecida ou tipo errado no blocoSó apt e services, como listas de texto
Conexão recusada ao bancoServiço não declarado, ou a skill lê outra variávelDeclare em services e use a variável DEPENDENCY_*
Execução estoura o tempoPacotes demaisDeclare só o que a tarefa usa