Documentation Technique Complète : Gestionnaire de Paquets Érable
Navigation : Hub Érable > Portail de Documentation
Bienvenue dans la documentation d'architecture, de conception et d'utilisation de erable, gestionnaire de paquets universel, multiplateforme (Windows, Linux, macOS), léger et sécurisé, propulsé par Nushell.
Sommaire de la Documentation
- Référence des Commandes CLI (
commands/) - Concepts Fondamentaux (
concepts/) - Guide Spécifique Entreprise (
entreprise.md) - Gouvernance et Règles de Contribution (
contributing/) - Spécifications Techniques Approfondies (
architecture/) - Représentation Globale du Système
1. Référence des Commandes CLI
Le répertoire commands/ documente l'ensemble des commandes et sous-commandes de l'interface en ligne de commande :
👉 Accéder au Guide Complet des Commandes CLI (docs/commands/index.md)
erable install: Installation atomique (1 ou N paquets), déduplication et routage trampoline.erable prune: Rétention et purge des anciennes versions (--keep,--exclude-prune).erable uninstall: Désinstallation hermétique et nettoyage des hooks.erable update: Synchronisation des dépôts de buckets locaux.erable update-trampolines: Mise à niveau des binaires trampolines.erable list: Inventaire et audit de sécurité des paquets locaux installés (--security).erable search: Recherche multiplateforme et filtrage par OS.erable apply: Réconciliation déclarative de flottes via fichier TOML.erable version: Affichage de la version du moteur et de la plateforme hôte.--security/security: Vérification de sécurité multi-plateformes en temps réel (OSV.dev, CIRCL Hashlookup, MalwareBazaar, Sigstore Rekor, VirusTotal v3) avec exceptions et seuil CVE.
2. Concepts Fondamentaux
Ces fiches d'introduction expliquent les concepts structurants du système :
| Concept | Description | Document |
|---|---|---|
| Buckets | Dépôts légers de recettes de paquets, indexation index.nuon, synchronisation et ajout de buckets privés. |
📘 docs/concepts/buckets.md |
| Moteur Central | Architecture interne (~/.erable/), cycle de vie d'installation sans état (stateless), installeurs autonomes. |
⚙️ docs/concepts/core-engine.md |
| Cycle de Mise à Jour | Auto-mise à jour sans verrouillage Windows (Zero-Lock), atomicité des pointeurs .target et rollback immédiat. |
🔄 docs/concepts/update-lifecycle.md |
| Trampolines Rust | Routage binaire natif ultra-rapide (0ms POSIX, ~1ms Win32), fichiers pointeurs .target, zéro wrapper shell. |
🚀 docs/concepts/trampolines.md |
| Manifestes Modulaires | Découpage TOML en parts/, support multiplateforme, hachage SHA-256 et scripts hooks $ctx. |
📦 docs/concepts/manifests.md |
| Contribution & Gouvernance | Modèle de contribution, automatisation CI/CD et segmentation des dépôts officiels. | 🤝 docs/concepts/contribution.md |
3. Guide Spécifique Entreprise
Pour les déploiements en environnement professionnel durci, réglementé et soumis à de fortes contraintes de conformité (OIV, banques, défense, industrie) :
👉 Accéder au Guide Entreprise Complet (docs/entreprise.md)
Le guide détaille les architectures de déploiement et solutions opérationnelles prêtes à l'emploi :
🛡️ Re-Signature Authenticode Locale (WDAC & AppLocker)
- Contexte : Exécution sur postes durcis interdisant tout binaire non signé par une autorité de confiance de domaine.
- Solution : Pipeline automatique de signature Authenticode post-extraction via
signtool.exeou mode catalogue (.cat), sans nécessiter de droits administrateur pour les développeurs. - Conformité : Respect strict des règles Windows Defender Application Control (WDAC) et politiques AppLocker.
🏢 Buckets Privés d'Entreprise
- Hébergement interne : Déploiement de buckets personnalisés sur des forges privées (GitLab Enterprise, GitHub Enterprise, Bitbucket Server ou Artifactory).
- Gouvernance & Sécurité : Gestion fine des accès via tokens d'accès personnels (PAT), clés SSH d'entreprise ou certificats mTLS.
- Index signé : Possibilité de signer l'index
index.nuonavec la propre clé cryptographique Ed25519 de l'organisation.
🌐 Réseaux Isolés (Air-Gapped) & Proxies avec Déchiffrement TLS
- Miroirs internes : Réécriture dynamique d'URLs via
$env.erable_MIRROR_REWRITEpour rediriger les téléchargements vers des miroirs Nexus ou Artifactory locaux. - Inspection TLS : Prise en charge native des autorités de certification (PKI) d'entreprise et certificats racine privés (
$env.SSL_CERT_FILE/$env.REQUESTS_CA_BUNDLE). - Mode 100% hors-ligne : Déploiement déconnecté à partir de dépôts locaux pré-téléchargés.
4. Gouvernance et Règles de Contribution
Les règles d'acceptation et chartes applicables à chaque sous-dépôt :
- 📘 Charte Générale de Contribution aux Buckets
- 01. Règles d'Acceptation du Bucket Main (FOSS, >= 500 Stars)
- 02. Règles d'Acceptation du Bucket GUI (Applications Graphiques)
- 03. Règles d'Acceptation du Bucket Community (Outils Émergents & Linter AST)
- 04. Règles d'Acceptation du Bucket Commercial (Logiciels Propriétaires & EULA)
5. Spécifications Techniques Approfondies
Les analyses formelles d'ingénierie et de sécurité pour les architectes et mainteneurs :
-
01. Vision et Spécifications Comparatives
Objectifs, positionnement par rapport à Scoop, Chocolatey, Nix et Homebrew, et fondements académiques (Dolstra, Larsson, Gamblin). -
02. Spécification du Routage des Binaires : Trampolines Universels
Routage par Trampolines Rust (25-30 Ko), fichiers.target, zéro lien symbolique, préservation de%~dp0pournpm/pip, anti-DLL Hijacking. -
03. Spécification de la Gestion de l'État : Découplage Total (Stateless Delivery)
Immutabilité stricte des stores de paquets, survie aux écritures atomiques, et respect des standards XDG Base Directory et%APPDATA%. -
04. Spécification des Dépôts et Distribution Légère (Buckets)
Distribution sans clones Git lourds, index centraliséindex.nuon(~500 Ko) avec cache TTL 24h, téléchargement à la demande, immunité 403. -
05. Spécification des Manifestes Modulaires
Structure découpée en fichiers TOML dédiés (parts/), intégration libc, formats d'archives, provenance SLSA et pragmamin_nu_version. -
06. Spécification des Scripts Normalisés et Confinement Sécurisé
Normalisation des 4 hooks de cycle de vie (pre/post_install.nuetpre/post_uninstall.nu), commandes sanitaires obligatoires dansparts/verification.toml, schéma du contexte typé$ctx, et défense en profondeur à 3 niveaux (Zero Egress* viascripts/ci/audit_package_scripts.py).* -
07. Architecture Interne du Moteur sur le Poste Utilisateur
Organisation du code client (~/.erable/core/), système commun (lib/) vs drivers OS (platform/), rétention N-1, déduplication CoW & Reflinks. -
08. Répertoire des Solutions d'Ingénierie Système Validées
Solutions opérationnelles : verrous inter-processus, déduplication CoW/Reflinks, raccourcis OS, MotW, MAX_PATH, résilience réseau et gestion multi-utilisateurs. -
09. Environnements Durcis : Politiques WDAC, AppLocker et Re-Signature de Code
Architecture du pipeline de signature Authenticode locale post-extraction viasigntool.exe, mode Catalog (.cat) et compatibilité AppLocker. -
10. Synthèse des Avantages Compétitifs et Différenciateurs de
erable
Fiche synthétique des 6 grands piliers de supériorité deerableface aux gestionnaires existants. -
🛡️ Analyse Comparative des Vulnérabilités (CVEs) et Mitigations
Étude exhaustive des failles historiques (Zip Slip, Symlink Traversal, SUID, TOCTOU, DLL Hijacking, shims Batch/PS1, Zero Egress, Scoop, Chocolatey, WinGet, Nix, Cargo, npm, PyPI). -
📦 Analyse des Paquets Scoop et Adéquation dans l'Architecture Érable
Cartographie complète des buckets Scoop (main, extras, games, nerd-fonts, java, nonportable...), matrice d'attribution et gestion des cas limites. -
🖥️ Architecture Hybride de Test Multiplateforme & Exécution Déportée
Validation automatisée multi-OS : orchestration GitLab CI et exécuteurs multiplateformes distribués (Windows Server, Linux x86_64, macOS Apple Silicon/Intel) pilotés via OpenID Connect (OIDC Zero-Trust). -
🛠️ Guide Opérationnel des Workflows CI/CD & Qualification Intégrale
Guide détaillé avec schémas Mermaid des flux d'ajout de paquet, d'autoupdate et d'évolution du trampoline, ainsi que le protocole de qualification complète en 6 pipelines séquentiels.
6. Représentation Globale du Système
flowchart TD
subgraph Distribution ["1. Distribution Distante (Buckets)"]
IDX["Index centralisé signé : index.nuon.sig (~500 Ko)"]
REPO["Arborescence shardée : packages/r/ripgrep/parts/*.toml"]
CI["CI/CD : Linter AST anti-exfiltration, SLSA 3 & validation TOML"]
CI --> REPO
CI --> IDX
end
subgraph ClientCore ["2. Poste Client (~/.erable/core)"]
CLI["CLI erable (Nushell)"]
LOCK["Verrou global inter-processus (~/.erable/.lock)"]
LIB["Système Commun Universel (lib/)<br>• Résolution TOML modulaire<br>• Protection anti-Zip Slip & anti-TOCTOU<br>• Support Proxies & CA PKI privées<br>• Arbitrage des collisions d'alias<br>• Gestionnaire de variables permanentes<br>• Extraction multi-formats sécurisée"]
DRV["Couche d'Abstraction (platform/driver.nu)"]
end
subgraph PlatformDrivers ["3. Drivers OS Spécifiques"]
WIN["windows.nu<br>• Trampolines Rust (anti-DLL Hijack, confinement .target)<br>• Rename-to-Trash (File Locking)<br>• Re-signature WDAC (signtool Authenticode)<br>• Chemins NT étendus \\?\ (MAX_PATH)<br>• Déblocage MotW (Zone.Identifier)<br>• Raccourcis .lnk"]
LNX["linux.nu<br>• Trampolines POSIX exec (0ms overhead)<br>• unshare --net (Isolation réseau hook)<br>• SUID stripping & chmod +x<br>• Contrôle libc musl/glibc<br>• Raccourcis .desktop"]
MAC["macos.nu<br>• Trampolines POSIX exec (0ms overhead)<br>• sandbox-exec deny network<br>• ~/Applications Bundles"]
end
subgraph Execution ["4. Système Hôte"]
BIN["~/.erable/bin (dans le PATH, Trampolines & .target)"]
STORE["Store immuable : packages/ripgrep/14.1.0/"]
ENV_SYS["Variables permanentes (JAVA_HOME)"]
STATE["État applicatif natif : ~/.config ou %APPDATA%"]
end
IDX -->|Mise à jour CDN ultra-rapide| CLI
CLI --> LOCK
LOCK --> LIB
REPO -->|Téléchargement à la demande| LIB
LIB --> STORE
LIB --> ENV_SYS
LIB --> DRV
DRV --> WIN
DRV --> LNX
DRV --> MAC
WIN --> BIN
LNX --> BIN
MAC --> BIN
STORE -.->|Découplage strict| STATE