Salta ai contenuti

rattler - Cheatsheet della Libreria di Gestione dei Pacchetti Conda Rust

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

ComponentPurpose
rattler (crates)Librerie: repodata, solver, installer
rattler-buildCostruisci pacchetti conda da ricette
rattler-indexGenera repodata del canale
resolvoIl solver di dipendenze SAT

Installing rattler-build

MethodCommand
Cargocargo install rattler-build
pixipixi global install rattler-build
condaconda install -c conda-forge rattler-build
Binarydownload from GitHub Releases
Verifyrattler-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
CommandDescription
rattler-build build --recipe FILECostruisci il pacchetto
rattler-build build -r . --target-platform linux-64Target multipiattaforma
rattler-build test --package-file X.condaEsegui i test della ricetta
rattler-build uploadPubblica su un canale
--output-dir DIRDove atterrano gli artefatti costruiti

Recipe Format (v1) Highlights

SectionPurpose
packageNome e versione
sourceURL/git + checksum, o percorso locale
buildNumero di build, script, condizioni di skip
requirementsbuild / host / run / run_constraints
testsImport, script e test di contenuto di pacchetto
aboutLicenza, homepage, riepilogo
contextVariabili 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
CrateProvides
rattler_repodata_gatewayRecupera/memorizza repodata del canale
rattler_solveRisoluzione delle dipendenze (resolvo)
rattler_installs_packagesInstalla in un prefisso
rattler_conda_typesTipi principali (MatchSpec, RepoData)

rattler-build vs conda-build

Aspectrattler-buildconda-build
LanguageRustPython
SpeedMolto più velocePiù lento
Recipe formatv1 recipe.yamlmeta.yaml
DependenciesBinario autonomoRichiede conda/Python
Best forNuove ricette, velocità CIRicette legacy

Where rattler Fits

ToolRelationship
pixiCostruito su rattler
conda-lockBlocco per workflow conda classici
micromambaClient conda veloce C++ (sforzo parallelo)
conda-forgeSempre più spesso costruisce con rattler-build

Resources