Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
melange — Компилирует исходный код в аудируемые, подписанные APK-пакеты с использованием декларативных конвейеров для Wolfi/Alpine, с мультиархитектурной эмуляцией QEMU и воспроизводимыми сборками. | Kitploit
Инструменты/GitHubGitHub/chainguard-dev/melange
DevSecOpsУтилиты и фреймворкиБезопасность Цепочки Поставок
GitHubchainguard-dev/melange

melange

Компилирует исходный код в аудируемые, подписанные APK-пакеты с использованием декларативных конвейеров для Wolfi/Alpine, с мультиархитектурной эмуляцией QEMU и воспроизводимыми сборками.

Репозиторий
6231743 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

melange

Сборка apk-пакетов с помощью декларативных конвейеров.

Обычно используется для предоставления пользовательских пакетов для образов контейнеров, собираемых с помощью apko. Большинство apk-пакетов собираются для экосистем Wolfi или Alpine Linux.

Ключевые особенности:

  • Сборка на основе конвейеров. Каждый этап конвейера сборки определяется и контролируется вами, в отличие от традиционных пакетных менеджеров с их отдельными фазами.
  • Мультиархитектурность по умолчанию. QEMU используется для эмуляции различных архитектур, что исключает необходимость в этапах кросс-компиляции.

Зачем

Безопасные фабрики ПО — это эволюция DevOps, позволяющая пользователю доказать происхождение всех артефактов, включённых в программный образ. Собирая и упаковывая программные артефакты в пакеты, команды DevOps могут управлять своими программными артефактами как любым другим компонентом образа.

Это особенно полезно при создании программных образов в форме OCI-образов контейнеров с помощью apko.

Установка

Вы можете установить Melange через Homebrew:

root@kitploit:~
brew install melange

Также можно установить Melange из исходного кода:

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

Можно использовать и контейнерный образ Melange:

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

Для работы с примерами обычно нужно смонтировать текущий каталог в контейнер и предоставить расширенные привилегии, например:

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

Запуск вне контейнера требует Docker, но также должен работать с другими средами выполнения, такими как podman.

Быстрый старт

Файл сборки melange выглядит так:

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

Мы можем собрать это с помощью:

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

или с Docker:

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

Будет создана папка packages с каталогом для каждой архитектуры, поддерживаемой пакетом. Если нужно собрать только для текущей архитектуры, добавьте --arch $(uname -m) к команде сборки. Внутри каталога архитектуры вы найдёте apk-файлы для каждого пакета, собранного в конвейере.

Если вы хотите подписывать свои apk-пакеты, создайте ключ подписи с помощью команды 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

Затем передайте аргумент --signing-key команде melange build.

Отладка сборок melange

Чтобы включить информацию отладочного уровня в сборках melange, отредактируйте файл melange.yaml и добавьте set -x в конвейер. Этот флаг можно добавить в любой точке команд конвейера для более детальной отладки конкретного участка сборки.

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

Подстановки по умолчанию

Melange предоставляет следующие подстановки по умолчанию, которые можно использовать в конвейере файла сборки:

Пример конвейера файла сборки с подстановками:

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

Более подробная документация

Использование с apko

Чтобы использовать собранный в melange apk-пакет в apko, загрузите его в репозиторий пакетов или используйте «локальный» репозиторий. Локальный репозиторий позволяет запускать сборку melange и сборку apko в одном каталоге (или GitHub-репозитории) без использования внешнего хранилища. Пример такого подхода можно увидеть в репозитории nginx-image-demo.

Скачать инструмент
ПодстановкаОписание
${{package.name}}Имя пакета
${{package.version}}Версия пакета
${{package.epoch}}Эпоха пакета
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}Описание пакета
${{package.srcdir}}Каталог исходного кода пакета (--source-dir)
${{subpkg.name}}Имя подпакета
${{context.name}}Имя основного пакета или подпакета
${{targets.outdir}}Каталог, в котором будут храниться целевые артефакты
${{targets.contextdir}}Каталог, в котором будут храниться целевые артефакты для основных пакетов и подпакетов
${{targets.destdir}}Каталог, в котором будут храниться целевые артефакты для основных пакетов
${{targets.subpkgdir}}Каталог, в котором будут храниться целевые артефакты для подпакетов
${{build.arch}}Архитектура текущей сборки (например, x86_64, aarch64)
${{build.goarch}}GOARCH текущей сборки (например, amd64, arm64)