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
| Componente | Propósito |
|---|
rattler (crates) | Librerías: repodata, solucionador, instalador |
rattler-build | Construir paquetes conda desde recetas |
rattler-index | Generar repodata de canal |
| resolvo | El solucionador de dependencias SAT |
Instalar rattler-build
| Método | Comando |
|---|
| Cargo | cargo install rattler-build |
| pixi | pixi global install rattler-build |
| conda | conda install -c conda-forge rattler-build |
| Binary | descargar desde GitHub Releases |
| Verificar | rattler-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
| Comando | Descripción |
|---|
rattler-build build --recipe FILE | Construir el paquete |
rattler-build build -r . --target-platform linux-64 | Objetivo multi-plataforma |
rattler-build test --package-file X.conda | Ejecutar pruebas de la receta |
rattler-build upload | Publicar a un canal |
--output-dir DIR | Dónde aterrizan artefactos construidos |
| Sección | Propósito |
|---|
package | Nombre y versión |
source | URL/git + checksum, o ruta local |
build | Número de compilación, script, condiciones de saltar |
requirements | build / host / run / run_constraints |
tests | Importación, script, y pruebas de contenido de paquete |
about | Licencia, homepage, resumen |
context | Variables 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
| Crate | Proporciona |
|---|
rattler_repodata_gateway | Buscar/cachear repodata del canal |
rattler_solve | Resolución de dependencias (resolvo) |
rattler_installs_packages | Instalar en un prefijo |
rattler_conda_types | Tipos principales (MatchSpec, RepoData) |
rattler-build vs conda-build
| Aspecto | rattler-build | conda-build |
|---|
| Lenguaje | Rust | Python |
| Velocidad | Mucho más rápido | Más lento |
| Formato de receta | v1 recipe.yaml | meta.yaml |
| Dependencias | Binary standalone | Requiere conda/Python |
| Mejor para | Recetas nuevas, velocidad de CI | Recetas legadas |
Dónde Cabe rattler
| Herramienta | Relación |
|---|
| pixi | Construido en rattler |
| conda-lock | Bloqueo para flujos de trabajo conda clásicos |
| micromamba | Cliente conda rápido de C++ (esfuerzo paralelo) |
| conda-forge | Cada vez más construye con rattler-build |
Recursos