Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
melange — Kompiliert Quellcode mithilfe deklarativer Pipelines für Wolfi/Alpine in prüfbare, signierte APK-Pakete, mit Multi-Architektur-QEMU-Emulation und reproduzierbaren Builds. | Kitploit
Tools/GitHubGitHub/chainguard-dev/melange
DevSecOpsDienstprogramme & FrameworksLieferkettensicherheit
GitHubchainguard-dev/melange

melange

Kompiliert Quellcode mithilfe deklarativer Pipelines für Wolfi/Alpine in prüfbare, signierte APK-Pakete, mit Multi-Architektur-QEMU-Emulation und reproduzierbaren Builds.

Repository anzeigen
623174vor 3 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

melange

Erstelle apk-Pakete mithilfe deklarativer Pipelines.

Häufig verwendet, um benutzerdefinierte Pakete für Container-Images bereitzustellen, die mit apko erstellt wurden. Die meisten apks werden für die Verwendung mit den Ökosystemen Wolfi oder Alpine Linux erstellt.

Hauptfunktionen:

  • Pipeline-orientierte Builds. Jeder Schritt der Build-Pipeline wird von dir definiert und kontrolliert, anders als bei traditionellen Paketmanagern mit getrennten Phasen.
  • Standardmäßig Multi-Architektur. QEMU wird verwendet, um verschiedene Architekturen zu emulieren, sodass keine Cross-Compilation-Schritte erforderlich sind.

Warum

Sichere Software-Fabriken sind die Weiterentwicklung von DevOps und ermöglichen es einem Benutzer, die Herkunft aller in eine Software-Appliance aufgenommenen Artefakte nachzuweisen. Indem DevOps-Teams Software-Artefakte zu Paketen bauen und darin erfassen, können sie diese wie jede andere Komponente eines Images verwalten.

Dies ist besonders nützlich, wenn Software-Appliance in Form von OCI-Container-Images mit apko erstellt werden.

Installation

Du kannst Melange über Homebrew installieren:

root@kitploit:~
brew install melange

Du kannst Melange auch aus dem Quellcode installieren:

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

Du kannst auch das Melange-Container-Image verwenden:

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

Um die Beispiele zu verwenden, solltest du dein aktuelles Verzeichnis in den Container einbinden und erhöhte Rechte bereitstellen, z. B.:

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

Das Ausführen außerhalb eines Containers erfordert Docker, sollte aber auch mit anderen Laufzeiten wie podman funktionieren.

Schnellstart

Eine Melange-Build-Datei sieht wie folgt aus:

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

Wir können dies mit folgendem Befehl bauen:

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

oder mit Docker:

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

Dadurch wird ein Ordner packages erstellt, mit einem Eintrag für jede vom Paket unterstützte Architektur. Wenn du nur für die aktuelle Architektur bauen möchtest, kannst du dem Build-Befehl --arch $(uname -m) hinzufügen. Im Architekturverzeichnis findest du apk-Dateien für jedes in der Pipeline gebaute Paket.

Wenn du deine apks signieren möchtest, erstelle mit dem Befehl melange keygen einen Signaturschlüssel:

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

Übergib dann das Argument --signing-key an melange build.

Debuggen von Melange-Builds

Um Debug-Informationen in Melange-Builds aufzunehmen, bearbeite deine melange.yaml-Datei und füge set -x in deine Pipeline ein. Du kannst dieses Flag an beliebiger Stelle deiner Pipeline-Befehle hinzufügen, um einen bestimmten Abschnitt deines Builds genauer zu debuggen.

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

Standard-Substitutionen

Melange stellt die folgenden Standard-Substitutionen bereit, die in der Build-Datei-Pipeline referenziert werden können:

Ein Beispiel für eine Build-Datei-Pipeline mit Substitutionen:

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

Ausführlichere Dokumentation

Verwendung mit apko

Um ein mit Melange gebautes apk in apko zu verwenden, lade es entweder in ein Paket-Repository hoch oder verwende ein „lokales“ Repository. Die Verwendung eines lokalen Repositorys ermöglicht es, einen Melange-Build und einen apko-Build im selben Verzeichnis (oder GitHub-Repo) auszuführen, ohne externen Speicher zu verwenden. Ein Beispiel für diesen Ansatz findest du im nginx-image-demo-Repo.

Tool herunterladen
SubstitutionDescription
${{package.name}}Paketname
${{package.version}}Paketversion
${{package.epoch}}Paket-Epoche
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}Paketbeschreibung
${{package.srcdir}}Paketquellverzeichnis (--source-dir)
${{subpkg.name}}Unterpaketname
${{context.name}}Name des Hauptpakets oder Unterpakets
${{targets.outdir}}Verzeichnis, in dem Zielobjekte gespeichert werden
${{targets.contextdir}}Verzeichnis, in dem Zielobjekte für Haupt- und Unterpakete gespeichert werden
${{targets.destdir}}Verzeichnis, in dem Zielobjekte für das Hauptpaket gespeichert werden
${{targets.subpkgdir}}Verzeichnis, in dem Zielobjekte für Unterpakete gespeichert werden
${{build.arch}}Architektur des aktuellen Builds (z. B. x86_64, aarch64)
${{build.goarch}}GOARCH des aktuellen Builds (z. B. amd64, arm64)