8. Comment il fonctionne à l'intérieur

8.4 D'où viennent les outils

Les sources officielles de chaque composant, les vérifications cryptographiques, le téléchargement à la main et le tableau complet des sources.

Dans l'application: «Outils»

En bref

  • Chaque composant vient de la source officielle de son éditeur, en HTTPS : pas de miroirs, pas de copies de tiers.
  • Chaque fichier est vérifié avec son empreinte cryptographique avant d'être utilisé ; si elle ne correspond pas, il est écarté.
  • Si un téléchargement échoue, vous pouvez télécharger le fichier avec le navigateur et le remettre au kit, qui le vérifie de la même façon.

Le parcours d'un téléchargement

  1. DemandeÀ la source officielle, quelle est la dernière version et quelle est son empreinte.
  2. TéléchargementDans un fichier .part dans le dossier de travail ; trois tentatives.
  3. VérificationCalcule l'empreinte du fichier et la compare avec celle attendue.
  4. Extractionzip, tar.gz, tar.xz, 7z ou fichier unique.
  5. RemplacementMet le nouveau dossier à la place de l'ancien, d'un seul coup.
  6. TestExécute le programme pour contrôler qu'il répond.
VérificationCe que cela veut direExemples
SHA-256, SHA-512, SHA3-256L'empreinte du fichier doit être celle publiée par l'éditeur (ou fixée dans le catalogue du kit).Python, Node.js, Go, Maven, Caddy, SQLite, l'éditeur, Pi, llama.cpp, les modèles locaux
npm sha512L'empreinte d'intégrité du registre npm.Claude Code, Codex
Authenticode (Windows uniquement)En plus, la signature numérique de l'éditeur sur le programme, avec la vérification de la révocation.Claude Code, Visual C++ runtime

Quand un téléchargement échoue : « à la main »

Si le téléchargement échoue après trois tentatives (proxy qui bloque, site injoignable), un panneau apparaît sous la ligne du composant :

  1. Cliquez sur « Téléchargez-le dans le navigateur : <nom du fichier> » : l'adresse exacte s'ouvre dans le navigateur.
  2. Quand le fichier est téléchargé, faites-le glisser dans le panneau ou utilisez « parcourez… ».
  3. Le kit le conserve et ne l'utilise que si son empreinte est celle publiée ; l'installation reprend toute seule (« … ajouté : nouvel essai. »).

Le panneau n'apparaît que quand l'empreinte du fichier est connue. Les fichiers remis et non utilisés sont supprimés après 30 jours.

GitHub et les limites de l'API

Beaucoup de composants sont publiés sur GitHub. Sans connexion, l'API de GitHub permet 60 requêtes par heure ; avec le compte du kit (Le compte GitHub du kit (6.1)) ou avec une variable GITHUB_TOKEN du PC, 5 000. Le kit conserve les réponses et, si la limite est atteinte, lit la dernière version directement dans les pages de GitHub.

Autres services que l'application contacte

ServicePourquoi
api.github.com/repos/nabre/atollo/releasesLes mises à jour d'Atollo.
open-vsx.orgLes extensions de l'éditeur.
api.anthropic.com · chatgpt.com · cloudcode-pa.googleapis.comLes limites des forfaits des agents, avec la connexion enregistrée, en lecture seule et seulement avec la page IA ouverte.
huggingface.coLes modèles locaux : la recherche des fichiers GGUF et les téléchargements, que huggingface.co redirige vers son CDN. Seulement quand vous téléchargez un modèle ; le jeton, s'il y en a un, ne va qu'à huggingface.co.
github.com/ggml-org/llama.cpp · github.com/earendil-works/piLes releases de llama.cpp et de Pi, comme pour les autres composants publiés sur GitHub (ils sont dans le tableau des sources ci-dessous).
github.com/nabre/atollo/issues« Signaler un problème » ouvre ici une nouvelle issue dans le navigateur, avec la version et le système dans l'adresse. C'est vous qui l'ouvrez, dans votre navigateur : l'application n'envoie rien, et rien n'arrive à GitHub tant que vous ne créez pas l'issue.
registry.npmjs.org · pypi.org · packagist.org…Seulement quand les commandes des projets et des frameworks le demandent.

Tableau complet des sources (39 composants et 5 parties)

Pour chaque composant : d'où le kit lit les versions, d'où il télécharge le fichier, comment il le vérifie et où il le met. Les colonnes décrivent Windows ; quand macOS et Linux utilisent une autre source, elle est écrite sous l'adresse.

ComposantVersions depuisFichiers depuisVérificationDans data\apps\<système>\
PowerShell 7 (pwsh)api.github.com/repos/PowerShell/PowerShell/releases/latestPowerShell-<v>-win-(x64|arm64).zipSHA-256

GitHub Release asset.digest

pwsh\<ligne>\pwsh.exe
GitHub CLI (gh)api.github.com/repos/cli/cli/releases/latestgh_<v>_windows_(amd64|arm64).zipSHA-256

GitHub Release asset.digest

gh\<ligne>\bin\gh.exe
Editor (VSCodium Reh Web)Catalogue intégré (version figée 1.135.06055, D-58)github.com/VSCodium/vscodium/releases/download/<v>/vscodium-reh-web-win32-x64-<v>.tar.gz

macOS et Linux : vscodium-reh-web-<target>-<v>.tar.gz, SHA-256 fixé par cible (natif aussi sur ARM64)

SHA-256

SHA-256 intégré dans components.json

vscodium-server\
ConPTY (conpty.dll + OpenConsole.exe)Catalogue intégré (version figée 1.25.260930003, D-148)api.nuget.org/v3-flatcontainer/microsoft.windows.console.conpty/<v>/microsoft.windows.console.conpty.<v>.nupkg

Windows uniquement : sur macOS et Linux le terminal utilise le PTY du système

Authenticode + SHA

SHA-256 du paquet intégré dans components.json (SHA-512 de NuGet) ; conpty.dll et OpenConsole.exe signés Microsoft Corporation

conpty\
Claude Coderegistry.npmjs.org/@anthropic-ai/claude-code-win32-<arch>/latestChamp dist.tarball du paquet npmAuthenticode + SHA

Intégrité npm sha512 + signature Authenticode Anthropic

claude\<ligne>\claude.exe
Codex (OpenAI)registry.npmjs.org/@openai/codex/latest → /<ver>-win32-<arch>Champ dist.tarball du paquet spécifique à l'architecturenpm sha512

Intégrité npm dist.integrity (sha512-...)

codex\<ligne>\bin\codex.exe
Antigravity (Google)antigravity-cli-auto-updater-974169037036.us-central1.run.app/manifests/windows_(amd64|arm64).jsonChamp url du manifeste JSON officiel

macOS et Linux : manifests/<os>_<arch>.json, archive .tar.gz

SHA-512

SHA-512 (128 hex) depuis le champ sha512 du manifeste

antigravity\<ligne>\agy.exe (via data\kit\bin\agy.cmd)
Pi (Earendil)api.github.com/repos/earendil-works/pi/releases/latestgithub.com/earendil-works/pi/releases/download/v<v>/pi-windows-<arch>.zip

macOS et Linux : pi-<os>-<arch>.tar.gz de la même release

SHA-256

Digest SHA-256 de GitHub (ou SHA256SUMS de la release)

pi\<ligne>\pi.exe
llama.cpp (llama-server)build bNNNNN fixée dans le catalogue d'Atollo (D-151)github.com/ggml-org/llama.cpp/releases/download/<b>/llama-<b>-bin-win-vulkan-<arch>.zip

Linux : llama-<b>-bin-ubuntu-vulkan-<arch>.tar.gz ; macOS : llama-<b>-bin-macos-<arch>.tar.gz (Metal)

SHA-256

SHA-256 par plateforme fixé dans le catalogue (depuis le digest de GitHub)

llama\llama-server.exe
Git + Git Bash (PortableGit)api.github.com/repos/git-for-windows/git/releases/latestPortableGit-<v>-(64-bit|arm64).7z.exe (extrait en Rust)

macOS et Linux : GitHub desktop/dugite-native (dugite-native-v<v>-<sha>-<système>.tar.gz, .sha256 de l'asset), suit le kit

SHA-256

GitHub Release asset.digest

git\<ligne>\cmd\git.exe et git\<ligne>\bin\bash.exe
Python + pipraw.githubusercontent.com/astral-sh/python-build-standalone/latest-release/latest-release.jsoncpython-3.<minor>.<patch>+<date>-<triple>-install_only_stripped.tar.gzSHA-256

SHA-256 depuis la liste officielle SHA256SUMS

python\<ligne>\python.exe (+ pip)
Node.js + npmnodejs.org/dist/index.json (LTS paires >= 18 + dernière majeure)nodejs.org/dist/<v>/node-<v>-win-<arch>.zipSHA-256

SHA-256 depuis nodejs.org/dist/<v>/SHASUMS256.txt

node\<ligne>\node.exe
uv (uv, uvx, uvw)api.github.com/repos/astral-sh/uv/releases/latestuv-<triple>.zipSHA-256

GitHub Release asset.digest

uv\<ligne>\uv.exe, uvx.exe, uvw.exe
PHP (Thread Safe)windows.php.net/downloads/releases/releases.json (+ archives EOL 8.1..5.6)windows.php.net/downloads/releases/php-<v>-Win32-vs*-x64.zip

macOS et Linux : static-php-cli « bulk », archives cli et fpm avec SHA-256 fixé dans le catalogue (8.4 et 8.5)

SHA-256

SHA-256 depuis releases.json (ou table EOL vérifiée)

php\<ligne>\php.exe
↳ Partie : Composergetcomposer.org/versions (canal stable ou 2.2 LTS pour PHP < 7.2.5)getcomposer.org/download/<v>/composer.pharSHA-256

SHA-256 depuis <url>.sha256sum

php\<ligne>\composer.phar (+ composer.cmd)
↳ Partie : Bundle CA SSL (curl)curl.se/ca/cacert.pem.sha256curl.se/ca/cacert.pemSHA-256

SHA-256 depuis cacert.pem.sha256

php\<ligne>\extras\ssl\cacert.pem
↳ Partie : Visual C++ RuntimeExtrait du CAB vcRuntimeMinimum_amd64\cab1.cab si absentaka.ms/vc14/vc_redist.x64.exe

Windows uniquement

Authenticode + SHA

Signature Authenticode O=Microsoft Corporation sur exe et vcruntime140.dll

tools\vcruntime\ (copié dans PHP, Apache, MongoDB)
Apache httpdapachelounge.com/download/ (extraction de version et somme de contrôle)apachelounge.com/download/VS<nn>/binaries/httpd-<v>-Win64-VS<nn>.zip

macOS et Linux : build du kit, github.com/nabre/atollo/releases/download/httpd-v<v>/httpd-<v>-<target>.tar.gz, SHA-256 fixé par cible dans le catalogue, PHP via php-fpm (D-116)

SHA-256

SHA-256 depuis <url>.txt (SHA256-Checksum for:)

apache\<ligne>\bin\httpd.exe
Caddyapi.github.com/repos/caddyserver/caddy/releases?per_page=100Asset caddy_<v>_windows_amd64.zip depuis la release GitHub officielleSHA-256

GitHub Release asset.digest (depuis 2.10.1), sinon SHA-512 depuis caddy_<v>_checksums.txt

caddy\<ligne>\caddy.exe
Rust (rustup, cargo, clippy)static.rust-lang.org/dist/channel-rust-stable.toml ([pkg.rustc])static.rust-lang.org/rustup/dist/<triple>/rustup-init.exe

Hôte gnu sur Windows x64, gnullvm sur Windows ARM64 (avec C/C++), msvc depuis la page de Rust dans Outils (« Détails ») ; macOS et Linux : rustup avec l'hôte natif

SHA-256

SHA-256 depuis <url>.sha256

rust\cargo\bin\rustc.exe et rustup.exe
Go SDKgo.dev/dl/?mode=json (&include=all)go.dev/dl/go<v>.windows-(amd64|arm64).zipSHA-256

SHA-256 depuis le champ sha256 du JSON officiel

go\<ligne>\bin\go.exe
Java JDK (Eclipse Temurin)api.adoptium.net/v3/info/available_releases + /v3/assets/latest/<major>/hotspotPaquet .zip renvoyé par l'API AdoptiumSHA-256

SHA-256 depuis binary.package.checksum

java\<ligne>\bin\java.exe
↳ Partie : Apache Mavenrepo.maven.apache.org/maven2/org/apache/maven/apache-maven/maven-metadata.xmlapache-maven-<v>-bin.zipSHA-512

SHA-512 depuis <url>.sha512

maven\bin\mvn.cmd
↳ Partie : Gradleservices.gradle.org/versions/currentChamp downloadUrl du JSON officielSHA-256

SHA-256 depuis checksumUrl du JSON

gradle\bin\gradle.bat (via data\kit\bin\gradle.cmd)
Kotlin Compilerapi.github.com/repos/JetBrains/kotlin/releases?per_page=100Asset kotlin-compiler-<v>.zipSHA-256

GitHub asset.digest ou <asset>.sha256

kotlin\<ligne>\bin\kotlinc.bat
Android SDK + Command-line Toolsdeveloper.android.com/studio (table commandlinetools-win-*_latest.zip)dl.google.com/android/repository/commandlinetools-win-<build>_latest.zipSHA-256

SHA-256 publié dans la table officielle Android

android\cmdline-tools\latest\bin\sdkmanager.bat et adb.exe
.NET SDKbuilds.dotnet.microsoft.com/dotnet/release-metadata/releases-index.jsonArchive .zip pour rid=win-x64|win-arm64SHA-512

SHA-512 depuis le champ hash de releases.json

dotnet\<ligne>\dotnet.exe (avec jonctions SDK partagées)
Dart SDKstorage.googleapis.com/dart-archive/channels/stable/release/latest/VERSIONdartsdk-windows-<arch>-release.zipSHA-256

SHA-256 depuis <url>.sha256sum

dart\<ligne>\bin\dart.exe
Zigziglang.org/download/index.jsonChamp tarball pour (x86_64|aarch64)-windowsSHA-256

SHA-256 depuis le champ shasum du JSON

zig\<ligne>\zig.exe
Juliajulialang-s3.julialang.org/bin/versions.jsonArchive .zip pour os=winnt, arch=x86_64SHA-256

SHA-256 depuis le champ sha256 de versions.json

julia\<ligne>\bin\julia.exe
Bunapi.github.com/repos/oven-sh/bun/releasesAsset bun-windows-(x64|aarch64).zipSHA-256

GitHub asset.digest ou SHASUMS256.txt

bun\<ligne>\bun.exe
Denoapi.github.com/repos/denoland/deno/releasesAsset deno-(x86_64|aarch64)-pc-windows-msvc.zipSHA-256

GitHub asset.digest ou <asset>.sha256sum

deno\<ligne>\deno.exe
Typstapi.github.com/repos/typst/typst/releasesAsset typst-(x86_64|aarch64)-pc-windows-msvc.zipSHA-256

GitHub Release asset.digest

typst\<ligne>\typst.exe
TinyTeX (LaTeX)api.github.com/repos/rstudio/tinytex-releases/releases/latestAsset TinyTeX-1-windows-v*.exe (7z SFX extrait en Rust)

macOS et Linux : TinyTeX-1-<os>-<arch>-v*.tar.xz (universel sur macOS)

SHA-256

GitHub Release asset.digest

tinytex\bin\windows\tlmgr.bat et pdftex.exe
pnpm + yarn (corepack)registry.npmjs.org/pnpm/latest et /corepack/latestInstallé avec npm-cli.js du Node.js du kitnpm sha512

Intégrité du registre npm

data\npm-global\pnpm.cmd et yarn.cmd
CMake + NinjaAPI GitHub : Kitware/CMake et ninja-build/ninja (releases/latest)cmake-*-windows-(x86_64|arm64).zip et ninja-win(arm64).zipSHA-256

GitHub Release asset.digest

cmake\<ligne>\bin\cmake.exe et tools\ninja.exe
C/C++ (llvm-mingw)api.github.com/repos/mstorsjo/llvm-mingw/releases/latestAsset llvm-mingw-*-ucrt-(x86_64|aarch64).zip

macOS et Linux : shims cc, c++, gcc, g++, clang sur le zig cc du kit (requiert Zig) et GNU make de conda-forge, non relocalisable

SHA-256

GitHub Release asset.digest

cc\bin\clang.exe (+ make.cmd)
Ruby + Bundlerapi.github.com/repos/oneclick/rubyinstaller2/releases?per_page=30Asset rubyinstaller-<v>-(x64|arm).7z

macOS et Linux : ruby de conda-forge (3.2 et suivantes) via micromamba, non relocalisable

SHA-256

GitHub Release asset.digest

ruby\<ligne>\bin\ruby.exe
R (conda-forge + OpenBLAS)api.anaconda.org/package/conda-forge/r-base + mamba-org/micromamba-releasesmicromamba-win-64 + paquets r-base et libblas=*=*openblas

Windows ARM64 : les paquets win-64 en émulation x64, par le micromamba natif (--platform win-64). macOS et Linux : mêmes paquets pour osx-* et linux-*, lanceurs dans kit-bin, non relocalisable

SHA-256

SHA-256 de micromamba + SHA-256 des paquets conda-forge

r\<ligne>\bin\R.cmd et Rscript.cmd
MySQL Community ServerLignes LTS 8.4 et 9.7 fixées dans le catalogue (sha256ByLine)cdn.mysql.com/Downloads/MySQL-<ligne>/mysql-<v>-winx64.zipSHA-256

SHA-256 fixé par ligne et cible après la signature GPG d'Oracle

mysql\<ligne>\bin\mysqld.exe et mysql.exe
MongoDB + mongosh + Database Toolsdownloads.mongodb.org/current.json, GitHub mongodb-js/mongosh, tools/db/release.jsonArchives .zip Windows x64 de mongod, mongosh et mongodump/mongorestore

macOS : archives de l'éditeur ; Linux : serveur depuis conda-forge (non relocalisable), mongosh générique, Database Tools par distribution

SHA-256

SHA-256 depuis les JSON MongoDB + asset.digest GitHub pour mongosh

mongodb\<ligne>\bin\mongod.exe, mongosh\, mongodb-tools\
phpMyAdmin (pour MySQL)www.phpmyadmin.net/home_page/version.jsonfiles.phpmyadmin.net/phpMyAdmin/<v>/phpMyAdmin-<v>-all-languages.zipSHA-256

SHA-256 depuis le fichier .sha256 officiel + vérification syntaxique php -l

phpmyadmin\<ligne>\index.php
mongo-express (pour MongoDB)version fixée dans le catalogue d'Atollo (build du kit, D-147)github.com/nabre/atollo/releases/download/mongo-express-v<v>/mongo-express-<v>.zipSHA-256

SHA-256 fixé dans le catalogue (ou le .sha256 de la release du kit) ; build en CI depuis le commit fixé de mongo-express

mongo-express\<ligne>\app.js
SQLite CLIsqlite.org/download.html (lignes CSV PRODUCT,...)sqlite.org/<année>/sqlite-tools-win-(x64|arm64)-<v>.zip

Linux ARM64 : sqlite de conda-forge (sqlite.org ne publie pas les outils), non relocalisable ; Windows ARM64 : le zip x64 s'il manque le zip arm64

SHA3-256

SHA3-256 publié dans la ligne PRODUCT de la page officielle

sqlite\<ligne>\sqlite3.exe
Sous le capot
  • Dossier de travail : <temporaires du système>\Atollo\<id du kit>\setup, ou data\tmp\setup si le disque système a moins de 4 Go libres ou n'est pas accessible en écriture.
  • Trois tentatives à 5 et 10 secondes d'intervalle ; le téléchargement repart de zéro à chaque tentative.
  • Connexions avec le proxy des Paramètres et les certificats du système plus ceux de « Certificats supplémentaires (fichier PEM) » : l'inspection HTTPS d'un pare-feu fonctionne si son certificat est installé sur le PC ou se trouve dans ce fichier.
  • La version installée est écrite dans data\app\versions\<système>\<composant>.txt.