Rapport d'Analyse des Paquets Scoop et Adéquation dans l'Architecture Érable
Navigation : Documentation > Analyse des Buckets Scoop
Spécifications associées : 04. Modèle des Buckets & Distribution | 01. Règles Bucket Core/Main | 02. Règles Bucket GUI | 03. Règles Bucket Community | 04. Règles Bucket Commercial
Sommaire
- Contexte et Méthodologie d'Analyse
- Cartographie Détaillée des Buckets Scoop Officiels
- 2.1 Le Bucket
main(CLI Purs & Sans Dépendances) - 2.2 Le Bucket
extras(GUI & Applications Mixtes) - 2.3 Le Bucket
sysinternals(Utilitaires Système Windows) - 2.4 Le Bucket
java(Runtimes & SDKs OpenJDK/Oracle) - 2.5 Le Bucket
php(Environnements PHP & Extensions) - 2.6 Le Bucket
nerd-fonts(Polices Typographiques de Terminaux) - 2.7 Le Bucket
games(Jeux Open-Source & Émulateurs) - 2.8 Le Bucket
nonportable(Paquets Modifiant le Système Global) - Matrice Synthétique d'Adéquation et d'Attribution
- Analyse Approfondie des Cas Limites
- 4.1 Cas n°1 : Les Polices d'Écriture (Fonts)
- 4.2 Cas n°2 : Les Installeurs Non-Portables et Nécessitant l'UAC
- 4.3 Cas n°3 : Les Runtimes à Versions Multiples Parallèles
- 4.4 Cas n°4 : Les Outils Propriétaires sous EULA
- Architecture de Collecte Différentielle Multi-Sources et Enrichissement Multi-OS
- 5.1 Veille Différentielle Multi-Écosystèmes
- 5.2 Mode Dual : Création vs Enrichissement Multiplateforme
- 5.3 Support User-Space des Archives macOS (.dmg)
1. Contexte et Méthodologie d'Analyse
Dans le cadre de l'ingénierie du gestionnaire de paquets Érable, l'écosystème Scoop représente la référence historique sous Windows pour l'installation d'outils portables en espace utilisateur (user-space). Scoop s'appuie sur une constellation de dépôts Git appelés buckets, totalisant plus de 4 000 manifestes JSON.
L'objectif de cette étude est d'analyser systématiquement chaque famille de paquets Scoop pour :
- Identifier leur place exacte dans l'architecture modulaire d'Érable (
bucket/main,bucket/gui,bucket/community,bucket/commercial). - Déterminer l'éligibilité technique : tous les paquets Scoop ont-ils vocation à être importés dans Érable ?
- Détecter les cas d'incompatibilité structurelle (polices, pilotes, installeurs nécessitant les droits administrateur UAC) et formuler les solutions architecturales adéquates.
2. Cartographie Détaillée des Buckets Scoop Officiels
2.1 Le Bucket main (CLI Purs & Sans Dépendances)
- Périmètre Scoop : Environ 1 300 paquets. Outils en ligne de commande stricts (CLI / TUI) destinés aux développeurs (
git,ripgrep,fd,jq,curl,kubectl,neovim,ffmpeg...). - Adéquation avec Érable :
- Destination principale :
bucket/main(outils CLI essentiels). - Filtre de gouvernance : Tout paquet issu de
mainScoop doit satisfaire au seuil de légitimité d'Érable :- Licence 100% FOSS reconnue par l'OSI.
- Au moins 500 étoiles GitHub/GitLab et commit actif < 12 mois.
- Disponibilité multiplateforme (au moins 2 OS majeurs).
- Aiguillage alternatif : Les outils CLI émergents ou de niche (< 500 étoiles) sont basculés automatiquement vers
bucket/community.
2.2 Le Bucket extras (GUI & Applications Mixtes)
- Périmètre Scoop : Environ 2 000 paquets. Regroupe des applications fenêtrées, des utilitaires bureautiques, des clients de bases de données et des IDE (
vscode,notepadplusplus,postman,gimp,vlc,dbeaver,wireshark...). - Adéquation avec Érable :
- Applications Open Source (FOSS) : Intégrées dans
bucket/guiavec génération obligatoire du fichierparts/shortcuts.tomlpour le Menu Démarrer Windows (.lnk) et les lanceurs de bureau Linux (.desktop). - Applications Propriétaires / Commerciales : Les logiciels distribués sous CLUF restrictif ou intégrant de la télémétrie propriétaire (ex: Visual Studio Code officiel Microsoft, Sublime Text, Postman, Slack) relèvent obligatoirement du
bucket/commercialavec bloc[license],requires_acceptance = trueet téléchargement direct chez l'éditeur (Direct Vendor Fetch).
2.3 Le Bucket sysinternals (Utilitaires Système Windows)
- Périmètre Scoop : Environ 70 paquets. Suite d'outils d'administration et de diagnostic système Microsoft Windows éditée par Mark Russinovich (Process Explorer, Process Monitor, Autoruns, Tcpview, PsExec...).
- Adéquation avec Érable :
- Outils en ligne de commande (
handle,procdump,pslist,sigcheck,strings) : Intégrés dansbucket/mainavec la directive de plateforme stricteplatforms = ["x86_64-windows"]. - Outils graphiques (
procexp,procmon,autoruns,tcpview) : Intégrés dansbucket/guiavec création des raccourcis Menu Démarrer (validé opérationnellement avecsysinternals-procexpv17.06). - Propriété intellectuelle : Bien que gratuits, ces outils sont propriétaires Microsoft. Leurs manifestes doivent mentionner explicitement le CLUF Microsoft Sysinternals.
2.4 Le Bucket java (Runtimes & SDKs OpenJDK/Oracle)
- Périmètre Scoop : Environ 150 paquets. Différentes versions de Java (JDK 8 à 23) issues de multiples distributions (Eclipse Temurin, Amazon Corretto, Azul Zulu, GraalVM, Microsoft Build of OpenJDK, Oracle JDK).
- Adéquation avec Érable :
- Distributions OpenJDK libres : Totalement éligibles dans
bucket/main. - Oracle JDK commercial : Basculé dans
bucket/commercial. - Bénéfice structurel Érable : Dans Scoop, installer plusieurs JDKs nécessite des hacks de script complexes (
env_set JAVA_HOME). Avec Érable, le modèle Trampoline Rust + pointeur.targetpermet d'exécuterjava,javacetjarde manière atomique, ou de définir des profils d'outillage complets via des bundles séquentielserable apply.
2.5 Le Bucket php (Environnements PHP & Extensions)
- Périmètre Scoop : Environ 50 paquets. Runtimes PHP (versions 7.4 à 8.3) et gestionnaires de dépendances associés (
composer, extensions Xdebug). - Adéquation avec Érable :
composeret la version PHP stable courante :bucket/main.- Les versions historiques de PHP pour la maintenance legacy :
bucket/community.
2.6 Le Bucket nerd-fonts (Polices Typographiques de Terminaux)
- Périmètre Scoop : Environ 100 paquets. Polices de caractères patchées avec glyphes et icônes pour le terminal (
FiraCode-NF,JetBrainsMono-NF,CascadiaCode-NF,Hack-NF...). - Adéquation avec Érable : Cas limite nécessitant une architecture dédiée.
- Une police n'est pas un fichier exécutable. Elle ne possède pas de binaire à router dans
~/.erable/bin. - L'installation d'une police nécessite l'écriture dans le registre Windows (
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Fonts) ou l'actualisation du cache de polices (fc-cachesous Linux). - Décision : Les polices ne doivent pas polluer
mainnigui. Elles requièrent un bucket dédiébucket/fontsavec un gestionnaire de cycle de vie adapté.
2.7 Le Bucket games (Jeux Open-Source & Émulateurs)
- Périmètre Scoop : Environ 300 paquets. Jeux rétro, roguelikes, émulateurs (RetroArch, Dolphin) et moteurs open-source (Godot).
- Adéquation avec Érable :
- Les moteurs de développement (ex: Godot Engine) : Éligibles dans
bucket/gui(outil de création). - Les jeux purs et émulateurs : Éligibles dans
bucket/communitypour les développeurs souhaitant se détendre, mais strictement exclus des bundles professionnels en entreprise (docs/entreprise.md).
2.8 Le Bucket nonportable (Paquets Modifiant le Système Global)
- Périmètre Scoop : Environ 100 paquets. Outils qui installent des services Windows, écrivent dans
C:\Program Files, manipulent des pilotes de périphériques ou déclenchent des installeurs MSI avec élévation UAC (docker-desktop,virtualbox,openvpn,wiresharkavec WinPcap/Npcap). - Adéquation avec Érable : Incompatibilité structurelle majeure.
- Érable applique le principe fondamental du Zero-Admin / Stateless User-Space. Aucun paquet ne doit forcer l'élévation administrative (UAC ou root).
- Décision : Rejet systématique de la forme non-portable. Seules les déclinaisons pouvant être extraites sans élévation (ex: extraction silencieuse WiX/MSI d'exécutables autonomes) sont admises.
3. Matrice Synthétique d'Adéquation et d'Attribution
| Famille Scoop | Exemple de Paquets | Bucket Cible Érable | Critères d'Éligibilité Spécifiques | Statut d'Intégration |
|---|---|---|---|---|
| CLI Essentiels | git, ripgrep, jq, kubectl |
main |
FOSS OSI, Stars >= 500, Commit < 12 mois, Multiplateforme | 100% Éligible |
| CLI Émergents / Niche | my-rust-cli, outils spécialisés |
community |
Code source public, Audit Zero Egress (.nu), SHA-256 | 100% Éligible |
| GUI Open-Source | notepad-plus-plus, dbeaver, vlc |
gui |
FOSS, shortcuts.toml obligatoire, Sous-système WINDOWS |
100% Éligible |
| GUI / CLI Propriétaires | sublime-text, postman, slack |
commercial |
Bloc [license] avec CLUF, requires_acceptance, Direct Vendor Fetch |
100% Éligible |
| Outils Sysinternals CLI | handle, procdump, strings |
main |
Restriction platforms = ["x86_64-windows"] |
100% Éligible |
| Outils Sysinternals GUI | procexp, procmon, tcpview |
gui |
shortcuts.toml avec raccourci Windows |
100% Éligible |
| Runtimes OpenJDK | temurin-jdk, corretto-jdk |
main |
Licence FOSS, Cibles x86_64 et aarch64 | 100% Éligible |
| Polices Développeurs | JetBrainsMono-NF, FiraCode |
Hors scope actuel | Nécessite un bucket dédié fonts et un hook de registre |
À isoler (bucket fonts) |
| Jeux & Émulateurs | angband, retroarch |
community |
Open-source, binaire portable sans UAC | Toléré en community |
| Outils Non-Portables | virtualbox, pilotes, services |
Exclus | Exige élévation UAC / pilotes noyau | Incompatible / Rejeté |
4. Analyse Approfondie des Cas Limites
4.1 Cas n°1 : Les Polices d'Écriture (Fonts)
Dans Scoop, le bucket nerd-fonts utilise des scripts PowerShell complexes exécutés en post_install pour copier les fichiers .ttf ou .otf dans %LOCALAPPDATA%\Microsoft\Windows\Fonts et écrire dans le Registre Windows.
- Problème pour Érable : Érable repose sur des trampolines Rust pointant vers des fichiers exécutables déclarés dans
parts/targets.toml. Une police ne possède aucun exécutable. De plus, notre politique de sécurité Zero Egress interdit aux scripts de hook d'écrire de manière incontrôlée dans le Registre Windows ou dans des répertoires système globaux. - Solution Recommandée :
- Ne pas mélanger les polices dans
mainougui. - Si le besoin se présente, créer un bucket dédié
bucket/fonts. - Définir un module de métadonnées
parts/font.tomldans le moteur Érable qui prend en charge nativement l'enregistrement de polices sans recourir à des scripts arbitraires.
4.2 Cas n°2 : Les Installeurs Non-Portables et Nécessitant l'UAC
Scoop a créé le bucket nonportable pour les logiciels impossibles à isoler en mode utilisateur (pilotes matériels, virtualiseurs, Wireshark avec capture pcap).
- Problème pour Érable : Accepter des paquets nécessitant l'élévation UAC détruirait le modèle de sécurité d'Érable (absence de root, immunité contre la compromission système globale, déploiement automatisé sans pop-up UAC en entreprise).
- Solution Recommandée :
- Refus formel d'intégration pour tout outil nécessitant un pilote noyau ou un service Windows permanent.
- Pour les installeurs MSI ou InnoSetup simples : utilisation en CI de l'outil d'extraction
lessmsiouinnoextractpour extraire les fichiers portables purs et les distribuer sous forme d'archive zip portable.
4.3 Cas n°3 : Les Runtimes à Versions Multiples Parallèles
Les développeurs ont fréquemment besoin de plusieurs versions majeures simultanées (ex: Java 17 et Java 21, ou Node.js 18 et Node.js 20).
- Avantage d'Érable :
- Dans Scoop, basculer d'une version à l'autre nécessite des scripts personnalisés qui modifient les variables d'environnement globales.
- Dans Érable, les versions coexistent physiquement dans
~/.erable/packages/<nom>/<version>avec déduplication NTFS CoW. Le basculement vers une version s'effectue instantanément par mise à jour du liencurrentet du fichier.target. De plus, la commandeerable apply <bundle.toml>permet à une équipe projet de basculer l'ensemble de ses outils vers les versions exactes du bundle en une seule commande.
4.4 Cas n°4 : Les Outils Propriétaires sous EULA
Scoop intègre indifféremment des logiciels libres et propriétaires dans son bucket extras sans avertissement légal.
- Conformité Érable :
- Ségrégation stricte :
bucket/mainetbucket/guisont 100% réservés aux logiciels open source reconnus par l'OSI. - Tous les logiciels fermés, freewares ou soumis à un contrat de licence payant/commercial sont regroupés dans
bucket/commercial. L'utilisateur doit explicitement valider la licence via--accept-licenseou lors d'un prompt interactif documenté dansdocs/entreprise.md.
5. Architecture de Collecte Différentielle Multi-Sources et Enrichissement Multi-OS
5.1 Veille Différentielle Multi-Écosystèmes
Au-delà de l'amorçage historique via les 9 buckets Scoop sous Windows, Érable fédère désormais quatre écosystèmes user-space complémentaires grâce à un mécanisme de suivi incrémental par curseurs persistants (last_audit_date, empreinte de commit Git ou ETag HTTP) :
-
Scoop (Windows) : Analyse différentielle des ajouts de manifestes portables sur les dépôts communautaires et spécialisés (
main,extras,versions,games,java,nerd-fonts,nirsoft,sysinternals,php). -
Aqua Registry (Multi-OS CLI) : Index déclaratif d'outils en ligne de commande pour
x86_64-linux,aarch64-linux,x86_64-macos,aarch64-macosetx86_64-windowsavec empreintes vérifiées. -
WinGet Portable (Windows) : Sélection stricte des manifestes portables (
portable,.zip) sans élévation de privilèges ni base de registre système. -
Homebrew Cask (macOS) : Collecte conditionnelle par
ETagHTTP des applications et binaires portables.app/.dmg/.zip, en excluant systématiquement tout installateur.pkgou script requérantsudo.
5.2 Mode Dual : Création vs Enrichissement Multiplateforme
Lors de chaque cycle de découverte, chaque candidat conforme à la politique sans privilèges administrateur (Zero-Admin) est confronté au catalogue consolidé des cinq buckets Érable (main, gui, community, commercial, fonts) :
-
Création de nouveau paquet : Si le logiciel est absent du catalogue, une demande d'intégration structurée (
package-request) est ouverte sur le dépôt du bucket cible selon sa nature (CLI populaire open source, CLI émergent, application graphique, logiciel sous licence propriétaire ou police). -
Enrichissement multi-OS d'un paquet existant : Lorsqu'un paquet déjà distribué sur Windows dispose de nouvelles cibles Linux ou macOS vérifiées en amont, l'architecture génère une demande d'enrichissement conservant intégralement les cibles existantes et ajoutant uniquement les plateformes manquantes.
5.3 Support User-Space des Archives macOS (.dmg)
Pour garantir une expérience cohérente sur macOS Apple Silicon et Intel sans jamais demander de droits administrateur, le moteur d'extraction prend en charge les images disque .dmg directement en espace utilisateur :
-
Montage en lecture seule dans un point de montage temporaire privé, copie ciblée des bundles applicatifs ou binaires portables vers le store immuable Érable, puis démontage garanti dans un bloc de nettoyage systématique.
-
Chaque nouvelle proposition suit de bout en bout le circuit unifié de contrôle cryptographique (SHA-256), de validation structurelle, d'audit Zero Egress et de signature Ed25519 avant publication dans le bucket concerné.