Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
melange — Compila código fuente en paquetes APK auditables y firmados mediante pipelines declarativos para Wolfi/Alpine, con emulación QEMU multiarquitectura y compilaciones reproducibles. | Kitploit
Herramientas/GitHubGitHub/chainguard-dev/melange
DevSecOpsUtilidades y FrameworksSeguridad de Cadena de Suministro
GitHubchainguard-dev/melange

melange

Compila código fuente en paquetes APK auditables y firmados mediante pipelines declarativos para Wolfi/Alpine, con emulación QEMU multiarquitectura y compilaciones reproducibles.

Ver Repositorio
623174hace 3 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

melange

Compila paquetes apk con pipelines declarativos.

Se usa habitualmente para proporcionar paquetes personalizados para imágenes de contenedor creadas con apko. La mayoría de los apks se crean para usarse con los ecosistemas de Wolfi o Alpine Linux.

Características principales:

  • Compilaciones orientadas a pipelines. Cada paso del pipeline de compilación está definido y controlado por ti, a diferencia de los gestores de paquetes tradicionales que tienen fases diferenciadas.
  • Multiarquitectura por defecto. QEMU se utiliza para emular varias arquitecturas, evitando la necesidad de pasos de compilación cruzada.

Por qué

Las fábricas de software seguras son la evolución de DevOps, y permiten al usuario demostrar la procedencia de todos los artefactos incorporados a un dispositivo de software. Al compilar y capturar artefactos de software en paquetes, los equipos de DevOps pueden gestionar sus artefactos de software como si fueran cualquier otro componente de una imagen.

Esto es especialmente útil al crear dispositivos de software en forma de imágenes de contenedor OCI con apko.

Instalación

Puedes instalar Melange desde Homebrew:

root@kitploit:~
brew install melange

También puedes instalar Melange desde el código fuente:

root@kitploit:~
go install chainguard.dev/melange@latest

También puedes usar la imagen de contenedor de Melange:

root@kitploit:~
docker run cgr.dev/chainguard/melange version

Para usar los ejemplos, normalmente querrás montar tu directorio actual en el contenedor y proporcionar privilegios elevados, por ejemplo:

root@kitploit:~
docker run --privileged -v "$PWD":/work cgr.dev/chainguard/melange build examples/gnu-hello.yaml

Ejecutarlo fuera de un contenedor requiere Docker, pero también debería funcionar con otros runtimes como podman.

Inicio rápido

Un archivo de compilación de melange tiene este aspecto:

root@kitploit:~
package:
  name: hello
  version: 2.12
  epoch: 0
  description: "the GNU hello world program"
  copyright:
    - attestation: |
        Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005,
        2006, 2007, 2008, 2010, 2011, 2013, 2014, 2022 Free Software Foundation,
        Inc.
      license: GPL-3.0-or-later
  dependencies:
    runtime:

environment:
  contents:
    repositories:
      - https://dl-cdn.alpinelinux.org/alpine/edge/main
    packages:
      - alpine-baselayout-data
      - busybox
      - build-base
      - scanelf
      - ssl_client
      - ca-certificates-bundle

pipeline:
  - uses: fetch
    with:
      uri: https://ftp.gnu.org/gnu/hello/hello-${{package.version}}.tar.gz
      expected-sha256: cf04af86dc085268c5f4470fbae49b18afbc221b78096aab842d934a76bad0ab
  - uses: autoconf/configure
  - uses: autoconf/make
  - uses: autoconf/make-install
  - uses: strip

subpackages:
  - name: "hello-doc"
    description: "Documentation for hello"
    dependencies:
      runtime:
        - foo
    pipeline:
      - uses: split/manpages
    test:
      pipeline:
        - uses: test/docs

test:
  environment:
    contents:
      packages:
        - bar
  pipeline:
    - runs: |
        hello
        hello --version

Podemos compilarlo con:

root@kitploit:~
melange build examples/gnu-hello.yaml

o, con Docker:

root@kitploit:~
docker run --privileged --rm -v "${PWD}":/work \
  cgr.dev/chainguard/melange build examples/gnu-hello.yaml

Esto creará una carpeta packages, con una entrada para cada arquitectura compatible con el paquete. Si solo quieres compilar para la arquitectura actual, puedes añadir --arch $(uname -m) al comando de compilación. Dentro del directorio de arquitectura encontrarás archivos apk para cada paquete compilado en el pipeline.

Si quieres firmar tus apks, crea una clave de firma con el comando melange keygen:

root@kitploit:~
melange keygen
root@kitploit:~
 generating keypair with a 4096 bit prime, please wait...
 wrote private key to melange.rsa
 wrote public key to melange.rsa.pub

Y luego pasa el argumento --signing-key a melange build.

Depuración de compilaciones de melange

Para incluir información de nivel de depuración en las compilaciones de melange, edita tu archivo melange.yaml e incluye set -x en tu pipeline. Puedes añadir esta marca en cualquier punto de los comandos de tu pipeline para depurar más a fondo una sección específica de tu compilación.

root@kitploit:~
...
pipeline:
  - name: Build Minicli application
    runs: |
      set -x
      APP_HOME="${{targets.destdir}}/usr/share/hello-minicli"
...

Sustituciones por defecto

Melange proporciona las siguientes sustituciones por defecto a las que se puede hacer referencia en el pipeline del archivo de compilación:

Un ejemplo de pipeline en un archivo de compilación con sustituciones:

root@kitploit:~
pipeline:
  - name: 'Create tmp dir'
    runs: mkdir ${{targets.destdir}}/var/lib/${{package.name}}/tmp

Documentación más detallada

Uso con apko

Para usar un apk compilado con melange en apko, súbelo a un repositorio de paquetes o usa un repositorio "local". El uso de un repositorio local permite que una compilación de melange y una compilación de apko se ejecuten en el mismo directorio (o repositorio de GitHub) sin usar almacenamiento externo. Un ejemplo de este enfoque se puede ver en el repositorio nginx-image-demo.

Descargar herramienta
SubstitutionDescription
${{package.name}}Nombre del paquete
${{package.version}}Versión del paquete
${{package.epoch}}Epoch del paquete
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}Descripción del paquete
${{package.srcdir}}Directorio de origen del paquete (--source-dir)
${{subpkg.name}}Nombre del subpaquete
${{context.name}}main package or subpackage name
${{targets.outdir}}Directorio donde se almacenarán los targets
${{targets.contextdir}}Directorio donde se almacenarán los targets para paquetes principales y subpaquetes
${{targets.destdir}}Directorio donde se almacenarán los targets para main
${{targets.subpkgdir}}Directorio donde se almacenarán los targets para subpaquetes
${{build.arch}}Arquitectura de la compilación actual (p. ej., x86_64, aarch64)
${{build.goarch}}GOARCH de la compilación actual (p. ej., amd64, arm64)