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 متعددة البنى وبنيات قابلة لإعادة الإنتاج.

عرض المستودع
623174منذ 3 أيامتمت المراجعة من قبل 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

لاستخدام حزمة apk مبنية بواسطة melange في apko، إمّا ارفعها إلى مستودع حزم أو استخدم مستودعًا "محليًا". يسمح استخدام مستودع محلي بتشغيل بناء melange وبناء apko في نفس الدليل (أو مستودع GitHub) دون الحاجة إلى تخزين خارجي. يمكن رؤية مثال على هذا الأسلوب في مستودع nginx-image-demo.

تنزيل الأداة
SubstitutionDescription
${{package.name}}Package name
${{package.version}}Package version
${{package.epoch}}Package epoch
${{package.full-version}}${{package.version}}-r${{package.epoch}}
${{package.description}}Package description
${{package.srcdir}}Package source directory (--source-dir)
${{subpkg.name}}Subpackage name
${{context.name}}main package or subpackage name
${{targets.outdir}}Directory where targets will be stored
${{targets.contextdir}}Directory where targets will be stored for main packages and subpackages
${{targets.destdir}}Directory where targets will be stored for main
${{targets.subpkgdir}}Directory where targets will be stored for subpackages
${{build.arch}}Architecture of current build (e.g. x86_64, aarch64)
${{build.goarch}}GOARCH of current build (e.g. amd64, arm64)