コンテンツにスキップ

rattler - Rust Conda パッケージ管理ライブラリ チートシート

rattler - Rust Conda パッケージ管理ライブラリ チートシート

rattlerconda パッケージエコシステムで動作するための Rust ライブラリとツール群で、prefix.dev により構築されました。conda のコア操作を再実装します — repodata 解析、依存性解決、パッケージダウンロード・インストール — 高速ソルバー (resolvo) と Python 依存なし。pixi の下側エンジン、その仲間の rattler-build は conda-build 用の最新置換でレシピから パッケージ構築。

コンポーネント

コンポーネント目的
rattler (クレート)ライブラリ: repodata、ソルバー、インストーラー
rattler-buildレシピから conda パッケージをビルド
rattler-indexチャネル repodata を生成
resolvoSAT 依存性ソルバー

rattler-build をインストール

方法コマンド
Cargocargo install rattler-build
pixipixi global install rattler-build
condaconda 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名前とバージョン
sourceURL/git + チェックサム、またはローカルパス
buildビルド数、スクリプト、スキップ条件
requirementsbuild / host / run / run_constraints
testsインポート、スクリプト、パッケージコンテンツテスト
aboutライセンス、ホームページ、要約
contextJinja で再利用可能な変数
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-buildconda-build
言語RustPython
速度より速いより遅い
レシピフォーマットv1 recipe.yamlmeta.yaml
依存性スタンドアロンバイナリconda/Python が必要
最適用途新規レシピ、CI 速度レガシーレシピ

rattler がどこに適合するか

ツール関係
pixirattler の上に構築
conda-lock古典的 conda ワークフロー向けロック
micromambaC++ 高速 conda クライアント (並行の取り組み)
conda-forgerattler-build でビルド増加

リソース