Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
melange — 소스 코드를 선언적 파이프라인을 사용하여 Wolfi/Alpine용 감사 가능하고 서명된 APK 패키지로 컴파일하며, 다중 아키텍처 QEMU 에뮬레이션 및 재현 가능한 빌드를 지원합니다. | Kitploit
도구/GitHubGitHub/chainguard-dev/melange
DevSecOpsUtilities & FrameworksSupply Chain Security
GitHubchainguard-dev/melange

melange

소스 코드를 선언적 파이프라인을 사용하여 Wolfi/Alpine용 감사 가능하고 서명된 APK 패키지로 컴파일하며, 다중 아키텍처 QEMU 에뮬레이션 및 재현 가능한 빌드를 지원합니다.

저장소 보기
6231743일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

melange

선언형 파이프라인을 사용하여 apk 패키지를 빌드합니다.

일반적으로 apko로 빌드된 컨테이너 이미지에 맞춤 패키지를 제공하는 데 사용됩니다. 대부분의 apk는 Wolfi 또는 Alpine Linux 에코시스템에서 사용하기 위해 빌드됩니다.

주요 기능:

  • 파이프라인 중심 빌드. 빌드 파이프라인의 모든 단계는 전통적인 패키지 관리자와 달리 명확한 단계가 없이 사용자가 정의하고 제어합니다.
  • 기본 다중 아키텍처. QEMU를 사용하여 다양한 아키텍처를 에뮬레이션하므로 크로스 컴파일 단계가 필요하지 않습니다.

왜

보안 소프트웨어 팩토리는 DevOps의 진화로, 사용자가 소프트웨어 어플라이언스에 포함된 모든 아티팩트의 출처를 증명할 수 있게 합니다. 소프트웨어 아티팩트를 패키지로 빌드하고 캡처함으로써 DevOps 팀은 소프트웨어 아티팩트를 이미지의 다른 구성 요소처럼 관리할 수 있습니다.

이것은 apko로 OCI 컨테이너 이미지 형태의 소프트웨어 어플라이언스를 빌드할 때 특히 유용합니다.

설치

Homebrew로 Melange를 설치할 수 있습니다:

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

그런 다음 melange build에 --signing-key 인수를 전달하세요.

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와 함께 사용하기

apko에서 melange로 빌드한 apk를 사용하려면 패키지 저장소에 업로드하거나 "로컬" 저장소를 사용하세요. 로컬 저장소를 사용하면 외부 스토리지 없이도 melange 빌드와 apko 빌드를 같은 디렉터리(또는 GitHub 저장소)에서 실행할 수 있습니다. 이 방식의 예는 nginx-image-demo 저장소에서 볼 수 있습니다.

도구 다운로드
SubstitutionDescription
${{package.name}}패키지 이름
${{package.version}}패키지 버전
${{package.epoch}}패키지 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)