Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
melange — Compila il codice sorgente in pacchetti APK firmati e verificabili utilizzando pipeline dichiarative per Wolfi/Alpine, con emulazione QEMU multi-architettura e build riproducibili. | Kitploit
Strumenti/GitHubGitHub/chainguard-dev/melange
DevSecOpsUtilità e FrameworkSicurezza della Supply Chain
GitHubchainguard-dev/melange

melange

Compila il codice sorgente in pacchetti APK firmati e verificabili utilizzando pipeline dichiarative per Wolfi/Alpine, con emulazione QEMU multi-architettura e build riproducibili.

Vedi Repository
6231743 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

melange

Crea pacchetti apk utilizzando pipeline dichiarative.

Comunemente usato per fornire pacchetti personalizzati per immagini container costruite con apko. La maggior parte degli apk è costruita per l'uso con gli ecosistemi Wolfi o Alpine Linux.

Caratteristiche principali:

  • Build orientate alle pipeline. Ogni fase della pipeline di build è definita e controllata da te, a differenza dei gestori di pacchetti tradizionali che hanno fasi distinte.
  • Multi-architettura di default. QEMU viene utilizzato per emulare varie architetture, evitando la necessità di passaggi di cross-compilazione.

Perché

Le fabbriche software sicure sono l'evoluzione del DevOps e consentono a un utente di dimostrare la provenienza di tutti gli artefatti incorporati in un'appliance software. Costruendo e catturando artefatti software in pacchetti, i team DevOps possono gestire i propri artefatti software come se fossero qualsiasi altro componente di un'immagine.

Questo è particolarmente utile quando si costruiscono appliance software sotto forma di immagini container OCI con apko.

Installazione

Puoi installare Melange da Homebrew:

root@kitploit:~
brew install melange

Puoi anche installare Melange dai sorgenti:

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

Puoi anche usare l'immagine container di Melange:

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

Per usare gli esempi, in genere vorrai montare la directory corrente nel container e fornire privilegi elevati, ad es.:

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

L'esecuzione al di fuori di un container richiede Docker, ma dovrebbe funzionare anche con altri runtime come podman.

Avvio rapido

Un file di build melange appare così:

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

Possiamo costruirlo con:

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

oppure, con Docker:

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

Questo creerà una cartella packages, con una voce per ogni architettura supportata dal pacchetto. Se vuoi costruire solo per l'architettura corrente, puoi aggiungere --arch $(uname -m) al comando di build. All'interno della directory dell'architettura dovresti trovare i file apk per ogni pacchetto costruito nella pipeline.

Se vuoi firmare i tuoi apk, crea una chiave di firma con il 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 poi passa l'argomento --signing-key a melange build.

Debug delle build di melange

Per includere informazioni a livello di debug nelle build di melange, modifica il tuo file melange.yaml e includi set -x nella tua pipeline. Puoi aggiungere questo flag in qualsiasi punto dei comandi della pipeline per eseguire ulteriori debug di una sezione specifica della build.

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

Sostituzioni predefinite

Melange fornisce le seguenti sostituzioni predefinite che possono essere referenziate nella pipeline del file di build:

Un esempio di pipeline di file di build con sostituzioni:

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

Documentazione più dettagliata

Utilizzo con apko

Per usare un apk costruito con melange in apko, puoi caricarlo in un repository di pacchetti oppure usare un repository "locale". L'uso di un repository locale consente di eseguire una build di melange e una build di apko nella stessa directory (o repository GitHub) senza usare storage esterno. Un esempio di questo approccio può essere visto nel repo nginx-image-demo.

Scarica lo strumento
SostituzioneDescrizione
${{package.name}}Nome del pacchetto
${{package.version}}Versione del pacchetto
${{package.epoch}}Epoch del pacchetto
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}Descrizione del pacchetto
${{package.srcdir}}Directory sorgente del pacchetto (--source-dir)
${{subpkg.name}}Nome del sottopacchetto
${{context.name}}nome del pacchetto principale o del sottopacchetto
${{targets.outdir}}Directory in cui verranno memorizzati i target
${{targets.contextdir}}Directory in cui verranno memorizzati i target per pacchetti principali e sottopacchetti
${{targets.destdir}}Directory in cui verranno memorizzati i target per il pacchetto principale
${{targets.subpkgdir}}Directory in cui verranno memorizzati i target per i sottopacchetti
${{build.arch}}Architettura della build corrente (es. x86_64, aarch64)
${{build.goarch}}GOARCH della build corrente (es. amd64, arm64)