rattler - مكتبة إدارة حزمة Rust Conda
rattler هي مجموعة من مكتبات Rust وأدوات لـ العمل مع نظام conda الحزم، من قبل prefix.dev. فهو يعيد تنفيذ عمليات conda الأساسية — تحليل repodata وحل التبعيات وتحميل وتثبيت الحزم — مع محلول سريع (resolvo) وبدون تبعية Python. وهو المحرك الأساسي تحت pixi، و rattler-build هو بديل حديث لـ conda-build الذي يبني الحزم من وصفة إعلانية.
المكونات
| المكون | الغرض |
|---|
rattler (crates) | المكتبات: repodata، المحلول، المثبت |
rattler-build | بناء حزم conda من الوصفات |
rattler-index | إنشاء قناة repodata |
| resolvo | محلول التبعيات SAT |
تثبيت rattler-build
| الطريقة | الأمر |
|---|
| Cargo | cargo install rattler-build |
| pixi | pixi global install rattler-build |
| conda | conda install -c conda-forge rattler-build |
| ملف ثنائي | تحميل من GitHub Releases |
| التحقق | rattler-build --version |
بناء حزمة
# recipe.yaml
package:
name: mypackage
version: 1.0.0
source:
url: https://example.com/mypackage-1.0.0.tar.gz
sha256: abc123...
build:
number: 0
script: python -m pip install . -vv
requirements:
host:
- python >=3.9
- pip
run:
- python >=3.9
- numpy
tests:
- python:
imports:
- mypackage
about:
homepage: https://example.com
license: MIT
summary: An example package
rattler-build build --recipe recipe.yaml
| الأمر | الوصف |
|---|
rattler-build build --recipe FILE | بناء الحزمة |
rattler-build build -r . --target-platform linux-64 | هدف عابر للمنصات |
rattler-build test --package-file X.conda | تشغيل اختبارات الوصفة |
rattler-build upload | نشر إلى قناة |
--output-dir DIR | حيث تهبط الحفنة المبنية |
ملخص تنسيق الوصفة (v1)
| القسم | الغرض |
|---|
package | الاسم والإصدار |
source | URL/git + checksum، أو مسار محلي |
build | رقم البناء، النص، تخطي الشروط |
requirements | build / host / run / run_constraints |
tests | الاستيراد والسكريبت واختبارات محتوى الحزمة |
about | الترخيص والصفحة الرئيسية والملخص |
context | متغيرات قابلة لإعادة الاستخدام عبر Jinja |
context:
version: "1.0.0"
package:
name: mypackage
version: ${{ version }}
المتغيرات (مصفوفات البناء)
# variants.yaml — بناء ضد عدة إصدارات Python
python:
- "3.11"
- "3.12"
rattler-build build --recipe recipe.yaml --variant-config variants.yaml
استخدام مكتبات Rust
// مفهوم: حل وتثبيت بيئة برمجيًا
use rattler_solve::{SolverImpl, SolverTask};
// 1) احصل على repodata للقنوات
// 2) بناء SolverTask مع المواصفات الخاصة بك
// 3) حل → قائمة سجلات الحزمة
// 4) التثبيت في بادئة مع مثبت rattler
| Crate | توفير |
|---|
rattler_repodata_gateway | جلب/ذاكرة قناة repodata |
rattler_solve | حل التبعيات (resolvo) |
rattler_installs_packages | التثبيت في بادئة |
rattler_conda_types | أنواع أساسية (MatchSpec, RepoData) |
rattler-build مقابل conda-build
| الجانب | rattler-build | conda-build |
|---|
| اللغة | Rust | Python |
| السرعة | أسرع بكثير | أبطأ |
| تنسيق الوصفة | v1 recipe.yaml | meta.yaml |
| التبعيات | ملف ثنائي مستقل | يتطلب conda/Python |
| الأفضل لـ | الوصفات الجديدة وسرعة CI | الوصفات المتوارثة |
أين يناسب rattler
| الأداة | العلاقة |
|---|
| pixi | مدمج في rattler |
| conda-lock | قفل لسير عمل conda الكلاسيكي |
| micromamba | عميل conda سريع C++ (جهد متوازي) |
| conda-forge | يشيد بشكل متزايد مع rattler-build |
الموارد