8. Wie es innen funktioniert

8.4 Woher die Werkzeuge stammen

Die offiziellen Quellen jeder Komponente, die kryptografischen Prüfungen, der Download von Hand und die vollständige Tabelle der Quellen.

In der App: «Werkzeuge»

Kurz gesagt

  • Jede Komponente kommt aus der offiziellen Quelle ihres Herstellers, über HTTPS: keine Mirrors, keine Kopien Dritter.
  • Jede Datei wird vor der Verwendung mit ihrem kryptografischen Hash geprüft; stimmt er nicht überein, wird sie verworfen.
  • Wenn ein Download fehlschlägt, kannst du die Datei mit dem Browser herunterladen und dem Kit übergeben, das sie auf dieselbe Weise prüft.

Der Weg eines Downloads

  1. AnfrageWelches die neueste Version ist und wie ihr Hash lautet, bei der offiziellen Quelle.
  2. DownloadIn eine .part-Datei im Arbeitsordner; drei Versuche.
  3. PrüfungBerechnet den Hash der Datei und vergleicht ihn mit dem erwarteten.
  4. Entpackenzip, tar.gz, tar.xz, 7z oder Einzeldatei.
  5. ErsetzenSetzt den neuen Ordner an die Stelle des alten, alles auf einmal.
  6. TestFührt das Programm aus, um zu prüfen, ob es antwortet.
PrüfungWas es bedeutetBeispiele
SHA-256, SHA-512, SHA3-256Der Hash der Datei muss der vom Hersteller veröffentlichte sein (oder der im Katalog des Kits festgelegte).Python, Node.js, Go, Maven, Caddy, SQLite, der Editor, Pi, llama.cpp, die lokalen Modelle
npm sha512Der Integritäts-Hash der npm-Registry.Claude Code, Codex
Authenticode (nur Windows)Zusätzlich die digitale Signatur des Herstellers auf dem Programm, mit Prüfung auf Widerruf.Claude Code, Visual C++ runtime

Wenn ein Download fehlschlägt: „von Hand“

Wenn der Download nach drei Versuchen fehlschlägt (blockierender Proxy, nicht erreichbare Website), erscheint unter der Zeile der Komponente ein Bereich:

  1. Klicke auf „Im Browser herunterladen: <Dateiname>“: Die genaue Adresse öffnet sich im Browser.
  2. Wenn die Datei heruntergeladen ist, ziehe sie in den Bereich oder verwende „durchsuchen…“.
  3. Das Kit bewahrt sie auf und verwendet sie nur, wenn ihr Hash der veröffentlichte ist; die Installation startet von selbst neu („… hinzugefügt: neuer Versuch.“).

Der Bereich erscheint nur, wenn der Hash der Datei bekannt ist. Übergebene, nicht verwendete Dateien werden nach 30 Tagen gelöscht.

GitHub und die Grenzen der API

Viele Komponenten werden auf GitHub veröffentlicht. Ohne Anmeldung erlaubt die GitHub-API 60 Anfragen pro Stunde; mit dem Konto des Kits (Das GitHub-Konto des Kits (6.1)) oder mit einer Variable GITHUB_TOKEN des PCs 5.000. Das Kit bewahrt die Antworten auf und liest, wenn das Limit erreicht ist, die neueste Version direkt von den GitHub-Seiten.

Weitere Dienste, die die App kontaktiert

DienstWarum
api.github.com/repos/nabre/atollo/releasesDie Updates von Atollo.
open-vsx.orgDie Erweiterungen des Editors.
api.anthropic.com · chatgpt.com · cloudcode-pa.googleapis.comDie Limits der Tarife der Agenten, mit der gespeicherten Anmeldung, nur lesend und nur bei geöffneter Seite KI.
huggingface.coDie lokalen Modelle: die Suche nach GGUF-Dateien und die Downloads, die huggingface.co an sein CDN weiterleitet. Nur wenn du ein Modell herunterlädst; das Token, falls vorhanden, geht nur an huggingface.co.
github.com/ggml-org/llama.cpp · github.com/earendil-works/piDie Releases von llama.cpp und Pi, wie bei den anderen auf GitHub veröffentlichten Komponenten (sie stehen in der Tabelle der Quellen unten).
github.com/nabre/atollo/issues„Problem melden“ öffnet hier ein neues Issue im Browser, mit Version und System in der Adresse. Du öffnest es in deinem Browser: Die App sendet nichts, und nichts erreicht GitHub, bevor du das Issue erstellst.
registry.npmjs.org · pypi.org · packagist.org…Nur wenn die Befehle der Projekte und Frameworks es verlangen.

Vollständige Tabelle der Quellen (39 Komponenten und 5 Teile)

Für jede Komponente: woher das Kit die Versionen liest, woher es die Datei herunterlädt, wie es sie prüft und wohin es sie legt. Die Spalten beschreiben Windows; wo macOS und Linux eine andere Quelle verwenden, steht sie unter der Adresse.

KomponenteVersionen vonDateien vonPrüfungIn data\apps\<System>\
PowerShell 7 (pwsh)api.github.com/repos/PowerShell/PowerShell/releases/latestPowerShell-<v>-win-(x64|arm64).zipSHA-256

GitHub Release asset.digest

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

GitHub Release asset.digest

gh\<Linie>\bin\gh.exe
Editor (VSCodium Reh Web)Integrierter Katalog (fixierte Version 1.135.06055, D-58)github.com/VSCodium/vscodium/releases/download/<v>/vscodium-reh-web-win32-x64-<v>.tar.gz

macOS und Linux: vscodium-reh-web-<target>-<v>.tar.gz, SHA-256 pro Ziel festgelegt (auch auf ARM64 nativ)

SHA-256

SHA-256 fest in components.json hinterlegt

vscodium-server\
ConPTY (conpty.dll + OpenConsole.exe)Integrierter Katalog (fixierte Version 1.25.260930003, D-148)api.nuget.org/v3-flatcontainer/microsoft.windows.console.conpty/<v>/microsoft.windows.console.conpty.<v>.nupkg

Nur Windows: unter macOS und Linux nutzt das Terminal das PTY des Systems

Authenticode + SHA

SHA-256 des Pakets fest in components.json (SHA-512 von NuGet); conpty.dll und OpenConsole.exe von Microsoft Corporation signiert

conpty\
Claude Coderegistry.npmjs.org/@anthropic-ai/claude-code-win32-<arch>/latestFeld dist.tarball des npm-PaketsAuthenticode + SHA

npm-sha512-Integrität + Authenticode-Signatur von Anthropic

claude\<Linie>\claude.exe
Codex (OpenAI)registry.npmjs.org/@openai/codex/latest → /<ver>-win32-<arch>Feld dist.tarball des architekturspezifischen Paketsnpm sha512

npm-Integrität dist.integrity (sha512-...)

codex\<Linie>\bin\codex.exe
Antigravity (Google)antigravity-cli-auto-updater-974169037036.us-central1.run.app/manifests/windows_(amd64|arm64).jsonFeld url des offiziellen JSON-Manifests

macOS und Linux: manifests/<os>_<arch>.json, .tar.gz-Archiv

SHA-512

SHA-512 (128 Hex) aus dem Feld sha512 des Manifests

antigravity\<Linie>\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 und Linux: pi-<os>-<arch>.tar.gz desselben Releases

SHA-256

SHA-256-Digest von GitHub (oder SHA256SUMS des Releases)

pi\<Linie>\pi.exe
llama.cpp (llama-server)im Katalog von Atollo festgelegter Build bNNNNN (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 pro Plattform im Katalog festgelegt (aus dem Digest von 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 (in Rust entpackt)

macOS und Linux: GitHub desktop/dugite-native (dugite-native-v<v>-<sha>-<System>.tar.gz, .sha256 des Assets), zieht mit dem Kit um

SHA-256

GitHub Release asset.digest

git\<Linie>\cmd\git.exe und git\<Linie>\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 aus der offiziellen SHA256SUMS-Liste

python\<Linie>\python.exe (+ pip)
Node.js + npmnodejs.org/dist/index.json (gerade LTS >= 18 + neueste Major)nodejs.org/dist/<v>/node-<v>-win-<arch>.zipSHA-256

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

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

GitHub Release asset.digest

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

macOS und Linux: static-php-cli „bulk“, cli- und fpm-Archive mit im Katalog festgelegtem SHA-256 (8.4 und 8.5)

SHA-256

SHA-256 aus releases.json (oder geprüfter EOL-Tabelle)

php\<Linie>\php.exe
↳ Teil: Composergetcomposer.org/versions (Stable-Kanal oder 2.2 LTS für PHP < 7.2.5)getcomposer.org/download/<v>/composer.pharSHA-256

SHA-256 aus <url>.sha256sum

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

SHA-256 aus cacert.pem.sha256

php\<Linie>\extras\ssl\cacert.pem
↳ Teil: Visual C++ RuntimeBei Fehlen aus CAB vcRuntimeMinimum_amd64\cab1.cab entpacktaka.ms/vc14/vc_redist.x64.exe

Nur Windows

Authenticode + SHA

Authenticode-Signatur O=Microsoft Corporation auf exe und vcruntime140.dll

tools\vcruntime\ (kopiert nach PHP, Apache, MongoDB)
Apache httpdapachelounge.com/download/ (Auslesen von Version und Prüfsumme)apachelounge.com/download/VS<nn>/binaries/httpd-<v>-Win64-VS<nn>.zip

macOS und Linux: Build des Kits, github.com/nabre/atollo/releases/download/httpd-v<v>/httpd-<v>-<target>.tar.gz, SHA-256 pro Ziel im Katalog festgelegt, PHP über php-fpm (D-116)

SHA-256

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

apache\<Linie>\bin\httpd.exe
Caddyapi.github.com/repos/caddyserver/caddy/releases?per_page=100Asset caddy_<v>_windows_amd64.zip aus dem offiziellen GitHub-ReleaseSHA-256

GitHub Release asset.digest (ab 2.10.1), sonst SHA-512 aus caddy_<v>_checksums.txt

caddy\<Linie>\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

Host gnu auf Windows x64, gnullvm auf Windows ARM64 (mit C/C++), msvc über die Seite von Rust unter Werkzeuge („Details“); macOS und Linux: rustup mit nativem Host

SHA-256

SHA-256 aus <url>.sha256

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

SHA-256 aus dem Feld sha256 des offiziellen JSON

go\<Linie>\bin\go.exe
Java JDK (Eclipse Temurin)api.adoptium.net/v3/info/available_releases + /v3/assets/latest/<major>/hotspot.zip-Paket aus der Adoptium-APISHA-256

SHA-256 aus binary.package.checksum

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

SHA-512 aus <url>.sha512

maven\bin\mvn.cmd
↳ Teil: Gradleservices.gradle.org/versions/currentFeld downloadUrl des offiziellen JSONSHA-256

SHA-256 aus checksumUrl des 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 oder <asset>.sha256

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

SHA-256 aus der offiziellen Android-Tabelle

android\cmdline-tools\latest\bin\sdkmanager.bat und adb.exe
.NET SDKbuilds.dotnet.microsoft.com/dotnet/release-metadata/releases-index.json.zip-Archiv für rid=win-x64|win-arm64SHA-512

SHA-512 aus dem Feld hash von releases.json

dotnet\<Linie>\dotnet.exe (mit geteilten SDK-Junctions)
Dart SDKstorage.googleapis.com/dart-archive/channels/stable/release/latest/VERSIONdartsdk-windows-<arch>-release.zipSHA-256

SHA-256 aus <url>.sha256sum

dart\<Linie>\bin\dart.exe
Zigziglang.org/download/index.jsonFeld tarball für (x86_64|aarch64)-windowsSHA-256

SHA-256 aus dem Feld shasum des JSON

zig\<Linie>\zig.exe
Juliajulialang-s3.julialang.org/bin/versions.json.zip-Archiv für os=winnt, arch=x86_64SHA-256

SHA-256 aus dem Feld sha256 von versions.json

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

GitHub asset.digest oder SHASUMS256.txt

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

GitHub asset.digest oder <asset>.sha256sum

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

GitHub Release asset.digest

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

macOS und Linux: TinyTeX-1-<os>-<arch>-v*.tar.xz (universell auf macOS)

SHA-256

GitHub Release asset.digest

tinytex\bin\windows\tlmgr.bat und pdftex.exe
pnpm + yarn (corepack)registry.npmjs.org/pnpm/latest und /corepack/latestInstalliert über npm-cli.js des Kit-Node.jsnpm sha512

Integrität der npm-Registry

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

GitHub Release asset.digest

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

macOS und Linux: Shims cc, c++, gcc, g++, clang über das zig cc des Kits (braucht Zig) und GNU make aus conda-forge, nicht verschiebbar

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 und Linux: conda-forge ruby (ab 3.2) über micromamba, nicht verschiebbar

SHA-256

GitHub Release asset.digest

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

Windows ARM64: die win-64-Pakete in x64-Emulation, vom nativen micromamba (--platform win-64). macOS und Linux: dieselben Pakete für osx-* und linux-*, Starter in kit-bin, nicht verschiebbar

SHA-256

SHA-256 von micromamba + SHA-256 der conda-forge-Pakete

r\<Linie>\bin\R.cmd und Rscript.cmd
MySQL Community ServerLTS-Linien 8.4 und 9.7 im Katalog festgelegt (sha256ByLine)cdn.mysql.com/Downloads/MySQL-<Linie>/mysql-<v>-winx64.zipSHA-256

SHA-256 pro Linie und Ziel nach Oracles GPG-Signatur festgelegt

mysql\<Linie>\bin\mysqld.exe und mysql.exe
MongoDB + mongosh + Database Toolsdownloads.mongodb.org/current.json, GitHub mongodb-js/mongosh, tools/db/release.jsonWindows-x64-.zip-Archive von mongod, mongosh und mongodump/mongorestore

macOS: Archive des Herstellers; Linux: Server aus conda-forge (nicht verschiebbar), generisches mongosh, Database Tools je Distribution

SHA-256

SHA-256 aus den MongoDB-JSONs + GitHub asset.digest für mongosh

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

SHA-256 aus der offiziellen .sha256-Datei + Syntaxprüfung php -l

phpmyadmin\<Linie>\index.php
mongo-express (für MongoDB)im Katalog von Atollo festgelegte Version (Build des Kits, D-147)github.com/nabre/atollo/releases/download/mongo-express-v<v>/mongo-express-<v>.zipSHA-256

Im Katalog festgelegtes SHA-256 (oder die .sha256 des Kit-Releases); in der CI aus dem festgelegten Commit von mongo-express gebaut

mongo-express\<Linie>\app.js
SQLite CLIsqlite.org/download.html (CSV-Zeilen PRODUCT,...)sqlite.org/<Jahr>/sqlite-tools-win-(x64|arm64)-<v>.zip

Linux ARM64: conda-forge sqlite (sqlite.org veröffentlicht keine Tools), nicht verschiebbar; Windows ARM64: das x64-Zip, wenn das arm64-Zip fehlt

SHA3-256

SHA3-256 aus der PRODUCT-Zeile der offiziellen Seite

sqlite\<Linie>\sqlite3.exe
Unter der Haube
  • Arbeitsordner: <System-Temp>\Atollo\<Kit-ID>\setup, oder data\tmp\setup, wenn das Systemlaufwerk weniger als 4 GB frei hat oder nicht beschreibbar ist.
  • Drei Versuche im Abstand von 5 und 10 Sekunden; der Download beginnt bei jedem Versuch von vorn.
  • Verbindungen mit dem Proxy der Einstellungen und den Zertifikaten des Systems plus denen von „Zusätzliche Zertifikate (PEM-Datei)“: Die HTTPS-Untersuchung einer Firewall funktioniert, wenn ihr Zertifikat auf dem PC installiert ist oder in dieser Datei steht.
  • Die installierte Version wird in data\app\versions\<System>\<Komponente>.txt geschrieben.