rattler - Rust Conda パッケージ管理ライブラリ チートシート
rattler は conda パッケージエコシステムで動作するための Rust ライブラリとツール群で、prefix.dev により構築されました。conda のコア操作を再実装します — repodata 解析、依存性解決、パッケージダウンロード・インストール — 高速ソルバー (resolvo) と Python 依存なし。pixi の下側エンジン、その仲間の rattler-build は conda-build 用の最新置換でレシピから パッケージ構築。
コンポーネント
| コンポーネント | 目的 |
|---|
rattler (クレート) | ライブラリ: 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 リリースからダウンロード |
| 確認 | 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 + チェックサム、またはローカルパス |
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 のインストーラーでプレフィックスにインストール
| クレート | 提供 |
|---|
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 | C++ 高速 conda クライアント (並行の取り組み) |
| conda-forge | rattler-build でビルド増加 |
リソース