rattler - Cheatsheet della Libreria di Gestione dei Pacchetti Conda Rust
rattler è un set di librerie e strumenti Rust per lavorare con l”ecosistema di packaging conda, costruito da prefix.dev. Reimplementa le operazioni principali di conda — analisi repodata, risoluzione delle dipendenze, download e installazione di pacchetti — con un solver veloce (resolvo) e nessuna dipendenza da Python. È il motore dietro pixi e il suo compagno rattler-build è un sostituto moderno per conda-build che costruisce pacchetti da una ricetta dichiarativa.
Components
| Component | Purpose |
|---|
rattler (crates) | Librerie: repodata, solver, installer |
rattler-build | Costruisci pacchetti conda da ricette |
rattler-index | Genera repodata del canale |
| resolvo | Il solver di dipendenze SAT |
Installing rattler-build
| Method | Command |
|---|
| Cargo | cargo install rattler-build |
| pixi | pixi global install rattler-build |
| conda | conda install -c conda-forge rattler-build |
| Binary | download from GitHub Releases |
| Verify | rattler-build --version |
Building a Package
# 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
| Command | Description |
|---|
rattler-build build --recipe FILE | Costruisci il pacchetto |
rattler-build build -r . --target-platform linux-64 | Target multipiattaforma |
rattler-build test --package-file X.conda | Esegui i test della ricetta |
rattler-build upload | Pubblica su un canale |
--output-dir DIR | Dove atterrano gli artefatti costruiti |
| Section | Purpose |
|---|
package | Nome e versione |
source | URL/git + checksum, o percorso locale |
build | Numero di build, script, condizioni di skip |
requirements | build / host / run / run_constraints |
tests | Import, script e test di contenuto di pacchetto |
about | Licenza, homepage, riepilogo |
context | Variabili riutilizzabili tramite Jinja |
context:
version: "1.0.0"
package:
name: mypackage
version: ${{ version }}
Variants (Build Matrices)
# variants.yaml — build against several Python versions
python:
- "3.11"
- "3.12"
rattler-build build --recipe recipe.yaml --variant-config variants.yaml
Using the Rust Libraries
// Conceptual: resolve and install an environment programmatically
use rattler_solve::{SolverImpl, SolverTask};
// 1) fetch repodata for the channels
// 2) build a SolverTask with your specs
// 3) solve → list of package records
// 4) install into a prefix with rattler's installer
| Crate | Provides |
|---|
rattler_repodata_gateway | Recupera/memorizza repodata del canale |
rattler_solve | Risoluzione delle dipendenze (resolvo) |
rattler_installs_packages | Installa in un prefisso |
rattler_conda_types | Tipi principali (MatchSpec, RepoData) |
rattler-build vs conda-build
| Aspect | rattler-build | conda-build |
|---|
| Language | Rust | Python |
| Speed | Molto più veloce | Più lento |
| Recipe format | v1 recipe.yaml | meta.yaml |
| Dependencies | Binario autonomo | Richiede conda/Python |
| Best for | Nuove ricette, velocità CI | Ricette legacy |
Where rattler Fits
| Tool | Relationship |
|---|
| pixi | Costruito su rattler |
| conda-lock | Blocco per workflow conda classici |
| micromamba | Client conda veloce C++ (sforzo parallelo) |
| conda-forge | Sempre più spesso costruisce con rattler-build |
Resources