Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
melange — Compila código-fonte em pacotes APK auditáveis e assinados usando pipelines declarativos para Wolfi/Alpine, com emulação QEMU multi-arquitetura e builds reproduzíveis. | Kitploit
Ferramentas/GitHubGitHub/chainguard-dev/melange
DevSecOpsUtilitários e FrameworksSegurança da Cadeia de Suprimentos
GitHubchainguard-dev/melange

melange

Compila código-fonte em pacotes APK auditáveis e assinados usando pipelines declarativos para Wolfi/Alpine, com emulação QEMU multi-arquitetura e builds reproduzíveis.

Ver Repositório
623174há 3 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

melange

Construa pacotes apk usando pipelines declarativos.

Comumente usado para fornecer pacotes personalizados para imagens de contêiner construídas com apko. A maioria dos apks é construída para uso com os ecossistemas Wolfi ou Alpine Linux.

Principais recursos:

  • Builds orientados a pipelines. Cada etapa do pipeline de build é definida e controlada por você, ao contrário dos gerenciadores de pacotes tradicionais, que possuem fases distintas.
  • Multi-arquitetura por padrão. QEMU é usado para emular várias arquiteturas, evitando a necessidade de etapas de compilação cruzada.

Porquê

Fábricas de software seguras são a evolução do DevOps, permitindo que um usuário prove a proveniência de todos os artefatos incorporados em um appliance de software. Ao construir e capturar artefatos de software em pacotes, as equipes de DevOps podem gerenciar seus artefatos de software como se fossem qualquer outro componente de uma imagem.

Isso é especialmente útil ao construir appliances de software na forma de imagens de contêiner OCI com apko.

Instalação

Você pode instalar o Melange via Homebrew:

root@kitploit:~
brew install melange

Você também pode instalar o Melange a partir do código-fonte:

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

Você também pode usar a imagem de contêiner do Melange:

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

Para usar os exemplos, você geralmente vai querer montar seu diretório atual no contêiner e fornecer privilégios elevados, por exemplo:

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

Executar fora de um contêiner requer Docker, mas também deve funcionar com outros runtimes, como podman.

Início Rápido

Um arquivo de build do melange tem a seguinte aparência:

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 construir isso com:

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

ou, com Docker:

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

Isso criará uma pasta packages, com uma entrada para cada arquitetura suportada pelo pacote. Se você quiser construir apenas para a arquitetura atual, pode adicionar --arch $(uname -m) ao comando de build. Dentro do diretório da arquitetura, você deve encontrar arquivos apk para cada pacote construído no pipeline.

Se você quiser assinar seus apks, crie uma chave de assinatura com o 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

E então passe o argumento --signing-key para melange build.

Depuração de builds do melange

Para incluir informações em nível de depuração nos builds do melange, edite seu arquivo melange.yaml e inclua set -x no seu pipeline. Você pode adicionar essa flag em qualquer ponto dos comandos do pipeline para depurar ainda mais uma seção específica do seu build.

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

Substituições Padrão

O Melange fornece as seguintes substituições padrão que podem ser referenciadas no pipeline do arquivo de build:

Um exemplo de pipeline de arquivo de build com substituições:

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

Documentação mais detalhada

Uso com apko

Para usar um apk construído com melange no apko, envie-o para um repositório de pacotes ou use um repositório "local". Usar um repositório local permite que um build do melange e um build do apko sejam executados no mesmo diretório (ou repositório GitHub) sem usar armazenamento externo. Um exemplo dessa abordagem pode ser visto no repositório nginx-image-demo.

Baixar ferramenta
SubstituiçãoDescrição
${{package.name}}Nome do pacote
${{package.version}}Versão do pacote
${{package.epoch}}Epoch do pacote
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}Descrição do pacote
${{package.srcdir}}Diretório de origem do pacote (--source-dir)
${{subpkg.name}}Nome do subpacote
${{context.name}}nome do pacote principal ou subpacote
${{targets.outdir}}Diretório onde os alvos serão armazenados
${{targets.contextdir}}Diretório onde os alvos serão armazenados para pacotes principais e subpacotes
${{targets.destdir}}Diretório onde os alvos serão armazenados para o pacote principal
${{targets.subpkgdir}}Diretório onde os alvos serão armazenados para subpacotes
${{build.arch}}Arquitetura do build atual (por exemplo, x86_64, aarch64)
${{build.goarch}}GOARCH do build atual (por exemplo, amd64, arm64)