À propos du projet

cargo-binstall fournit un mécanisme de faible complexité pour installer des binaires Rust comme alternative à la compilation depuis les sources via `cargo install` ou au téléchargement manuel des paquets. Il est conçu pour fonctionner avec les artefacts et l'infrastructure CI existants avec un minimum de surcharge pour les mainteneurs de paquets. Fonctionnement : Binstall récupère les informations de crate depuis crates.io, recherche dans le dépôt lié les versions et artefacts correspondants, se rabat sur l'hôte d'artefacts tiers quickinstall, essaie d'autres cibles si elles sont prises en charge, et enfin se rabat sur `cargo install` en dernier recours. L'utilisation est similaire à cargo install. Par exemple, `cargo binstall radio-sx128x@0.14.1-alpha.5` résout le paquet, télécharge le binaire depuis GitHub, liste les binaires à installer et demande confirmation. Pour un usage non interactif comme en CI, l'option `--no-confirm` est disponible. D'autres options sont affichées via `cargo binstall --help`. Les options d'installation incluent des scripts en une ligne pour Linux et macOS, Homebrew, une commande PowerShell en une ligne pour Windows, le téléchargement manuel d'archives spécifiques à la plateforme (Linux x86_64/armv7/arm64, macOS Intel/Apple Silicon/Universal, Windows x86_64/aarch64), la compilation depuis les sources avec `cargo install cargo-binstall --locked`, et une GitHub Action officielle. Le projet recommande également l'action tierce taiki-e/install-action. Les outils complémentaires mentionnés incluent cargo-update, qui met à jour tous les outils et utilise Binstall lorsqu'il est présent, et cargo-run-bin, qui limite les outils à un projet et contrôle les versions dans Cargo.toml. Pour les crates non prises en charge, les utilisateurs peuvent spécifier manuellement `pkg-url`, `bin-dir` et `pkg-fmt` en ligne de commande. Les mainteneurs peuvent ajouter des métadonnées Binstall explicites dans Cargo.toml pour localiser le paquet binaire approprié pour une version et une cible données. Signatures : il existe un support initial et limité permettant aux mainteneurs de spécifier une clé publique de signature et où trouver les signatures des paquets. Lorsque cette option est activée, Binstall télécharge et vérifie les signatures. `--only-signed` refuse les paquets non signés, tandis que `--skip-signatures` désactive la vérification ou le téléchargement des signatures. Notes de sécurité : les métadonnées sont récupérées depuis crates.io via HTTPS et la somme de contrôle de l'archive du crate est vérifiée ; HTTPS avec TLS >= 1.2 est imposé pour le téléchargement des fichiers de paquets. Contrairement à un script `curl | sh`, Binstall n'exécute pas de code arbitraire, bien que le crate installé puisse lui-même être malveillant. Télémétrie : certaines stratégies d'installation peuvent collecter des statistiques d'usage anonymisées par défaut. Lorsque l'hôte d'artefacts quickinstall est utilisé, le nom du crate, la version, le triplet de la plateforme cible et l'agent utilisateur sont envoyés à des points de terminaison sous l'URL cargo-quickinstall-stats-server. Les données agrégées sont accessibles publiquement. Les méthodes de désactivation incluent l'option `--disable-telemetry`, la variable d'environnement `BINSTALL_DISABLE_TELEMETRY`, la désactivation de la stratégie quickinstall, ou l'ajout de `quick-install` à la clé de configuration `disabled-strategies` dans les métadonnées du crate. Symboles de débogage : des paquets précompilés supplémentaires avec un suffixe `.full` contiennent des debuginfo séparées, des fichiers de documentation et des binaires supplémentaires tels que l'utilitaire `detect-wasi`.