Ir al contenido

rattler - Librería Rust de Gestión de Paquetes Conda Hoja de Trucos

rattler - Librería Rust de Gestión de Paquetes Conda Hoja de Trucos

rattler es un conjunto de librerías Rust y herramientas para trabajar con el ecosistema de empaquetamiento conda, construido por prefix.dev. Re-implementa operaciones principales de conda — analizando repodata, resolviendo dependencias, descargando e instalando paquetes — con un solucionador rápido (resolvo) y sin dependencia Python. Es el motor debajo de pixi, y su rattler-build compañero es un reemplazo moderno para conda-build que construye paquetes a partir de una receta declarativa.

Componentes

ComponentePropósito
rattler (crates)Librerías: repodata, solucionador, instalador
rattler-buildConstruir paquetes conda desde recetas
rattler-indexGenerar repodata de canal
resolvoEl solucionador de dependencias SAT

Instalar rattler-build

MétodoComando
Cargocargo install rattler-build
pixipixi global install rattler-build
condaconda install -c conda-forge rattler-build
Binarydescargar desde GitHub Releases
Verificarrattler-build --version

Construir un Paquete

# 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
ComandoDescripción
rattler-build build --recipe FILEConstruir el paquete
rattler-build build -r . --target-platform linux-64Objetivo multi-plataforma
rattler-build test --package-file X.condaEjecutar pruebas de la receta
rattler-build uploadPublicar a un canal
--output-dir DIRDónde aterrizan artefactos construidos

Highlights del Formato de Receta (v1)

SecciónPropósito
packageNombre y versión
sourceURL/git + checksum, o ruta local
buildNúmero de compilación, script, condiciones de saltar
requirementsbuild / host / run / run_constraints
testsImportación, script, y pruebas de contenido de paquete
aboutLicencia, homepage, resumen
contextVariables reutilizables vía Jinja
context:
  version: "1.0.0"
package:
  name: mypackage
  version: ${{ version }}

Variantes (Matrices de Compilación)

# variants.yaml — construir contra varias versiones Python
python:
  - "3.11"
  - "3.12"
rattler-build build --recipe recipe.yaml --variant-config variants.yaml

Usar las Librerías Rust

// Conceptual: resolver e instalar un entorno programáticamente
use rattler_solve::{SolverImpl, SolverTask};
// 1) buscar repodata para los canales
// 2) construir un SolverTask con tus especificaciones
// 3) resolver → lista de records de paquete
// 4) instalar en un prefijo con instalador de rattler
CrateProporciona
rattler_repodata_gatewayBuscar/cachear repodata del canal
rattler_solveResolución de dependencias (resolvo)
rattler_installs_packagesInstalar en un prefijo
rattler_conda_typesTipos principales (MatchSpec, RepoData)

rattler-build vs conda-build

Aspectorattler-buildconda-build
LenguajeRustPython
VelocidadMucho más rápidoMás lento
Formato de recetav1 recipe.yamlmeta.yaml
DependenciasBinary standaloneRequiere conda/Python
Mejor paraRecetas nuevas, velocidad de CIRecetas legadas

Dónde Cabe rattler

HerramientaRelación
pixiConstruido en rattler
conda-lockBloqueo para flujos de trabajo conda clásicos
micromambaCliente conda rápido de C++ (esfuerzo paralelo)
conda-forgeCada vez más construye con rattler-build

Recursos