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
- AnfrageWelches die neueste Version ist und wie ihr Hash lautet, bei der offiziellen Quelle.
- DownloadIn eine .part-Datei im Arbeitsordner; drei Versuche.
- PrüfungBerechnet den Hash der Datei und vergleicht ihn mit dem erwarteten.
- Entpackenzip, tar.gz, tar.xz, 7z oder Einzeldatei.
- ErsetzenSetzt den neuen Ordner an die Stelle des alten, alles auf einmal.
- TestFührt das Programm aus, um zu prüfen, ob es antwortet.
| Prüfung | Was es bedeutet | Beispiele |
|---|---|---|
| SHA-256, SHA-512, SHA3-256 | Der 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 sha512 | Der 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:
- Klicke auf „Im Browser herunterladen: <Dateiname>“: Die genaue Adresse öffnet sich im Browser.
- Wenn die Datei heruntergeladen ist, ziehe sie in den Bereich oder verwende „durchsuchen…“.
- 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
| Dienst | Warum |
|---|---|
api.github.com/repos/nabre/atollo/releases | Die Updates von Atollo. |
open-vsx.org | Die Erweiterungen des Editors. |
api.anthropic.com · chatgpt.com · cloudcode-pa.googleapis.com | Die Limits der Tarife der Agenten, mit der gespeicherten Anmeldung, nur lesend und nur bei geöffneter Seite KI. |
huggingface.co | Die 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/pi | Die 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.
| Komponente | Versionen von | Dateien von | Prüfung | In data\apps\<System>\ |
|---|---|---|---|---|
| PowerShell 7 (pwsh) | api.github.com/repos/PowerShell/PowerShell/releases/latest | PowerShell-<v>-win-(x64|arm64).zip | SHA-256 GitHub Release asset.digest | pwsh\<Linie>\pwsh.exe |
| GitHub CLI (gh) | api.github.com/repos/cli/cli/releases/latest | gh_<v>_windows_(amd64|arm64).zip | SHA-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.gzmacOS 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>.nupkgNur 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 Code | registry.npmjs.org/@anthropic-ai/claude-code-win32-<arch>/latest | Feld dist.tarball des npm-Pakets | Authenticode + 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 Pakets | npm 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).json | Feld url des offiziellen JSON-ManifestsmacOS 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/latest | github.com/earendil-works/pi/releases/download/v<v>/pi-windows-<arch>.zipmacOS 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>.zipLinux: 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/latest | PortableGit-<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 + pip | raw.githubusercontent.com/astral-sh/python-build-standalone/latest-release/latest-release.json | cpython-3.<minor>.<patch>+<date>-<triple>-install_only_stripped.tar.gz | SHA-256 SHA-256 aus der offiziellen SHA256SUMS-Liste | python\<Linie>\python.exe (+ pip) |
| Node.js + npm | nodejs.org/dist/index.json (gerade LTS >= 18 + neueste Major) | nodejs.org/dist/<v>/node-<v>-win-<arch>.zip | SHA-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/latest | uv-<triple>.zip | SHA-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.zipmacOS 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: Composer | getcomposer.org/versions (Stable-Kanal oder 2.2 LTS für PHP < 7.2.5) | getcomposer.org/download/<v>/composer.phar | SHA-256 SHA-256 aus <url>.sha256sum | php\<Linie>\composer.phar (+ composer.cmd) |
| ↳ Teil: SSL-CA-Bundle (curl) | curl.se/ca/cacert.pem.sha256 | curl.se/ca/cacert.pem | SHA-256 SHA-256 aus cacert.pem.sha256 | php\<Linie>\extras\ssl\cacert.pem |
| ↳ Teil: Visual C++ Runtime | Bei Fehlen aus CAB vcRuntimeMinimum_amd64\cab1.cab entpackt | aka.ms/vc14/vc_redist.x64.exeNur Windows | Authenticode + SHA Authenticode-Signatur O=Microsoft Corporation auf exe und vcruntime140.dll | tools\vcruntime\ (kopiert nach PHP, Apache, MongoDB) |
| Apache httpd | apachelounge.com/download/ (Auslesen von Version und Prüfsumme) | apachelounge.com/download/VS<nn>/binaries/httpd-<v>-Win64-VS<nn>.zipmacOS 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 |
| Caddy | api.github.com/repos/caddyserver/caddy/releases?per_page=100 | Asset caddy_<v>_windows_amd64.zip aus dem offiziellen GitHub-Release | SHA-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.exeHost 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 SDK | go.dev/dl/?mode=json (&include=all) | go.dev/dl/go<v>.windows-(amd64|arm64).zip | SHA-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-API | SHA-256 SHA-256 aus binary.package.checksum | java\<Linie>\bin\java.exe |
| ↳ Teil: Apache Maven | repo.maven.apache.org/maven2/org/apache/maven/apache-maven/maven-metadata.xml | apache-maven-<v>-bin.zip | SHA-512 SHA-512 aus <url>.sha512 | maven\bin\mvn.cmd |
| ↳ Teil: Gradle | services.gradle.org/versions/current | Feld downloadUrl des offiziellen JSON | SHA-256 SHA-256 aus checksumUrl des JSON | gradle\bin\gradle.bat (via data\kit\bin\gradle.cmd) |
| Kotlin Compiler | api.github.com/repos/JetBrains/kotlin/releases?per_page=100 | Asset kotlin-compiler-<v>.zip | SHA-256 GitHub asset.digest oder <asset>.sha256 | kotlin\<Linie>\bin\kotlinc.bat |
| Android SDK + Command-line Tools | developer.android.com/studio (Tabelle commandlinetools-win-*_latest.zip) | dl.google.com/android/repository/commandlinetools-win-<build>_latest.zip | SHA-256 SHA-256 aus der offiziellen Android-Tabelle | android\cmdline-tools\latest\bin\sdkmanager.bat und adb.exe |
| .NET SDK | builds.dotnet.microsoft.com/dotnet/release-metadata/releases-index.json | .zip-Archiv für rid=win-x64|win-arm64 | SHA-512 SHA-512 aus dem Feld hash von releases.json | dotnet\<Linie>\dotnet.exe (mit geteilten SDK-Junctions) |
| Dart SDK | storage.googleapis.com/dart-archive/channels/stable/release/latest/VERSION | dartsdk-windows-<arch>-release.zip | SHA-256 SHA-256 aus <url>.sha256sum | dart\<Linie>\bin\dart.exe |
| Zig | ziglang.org/download/index.json | Feld tarball für (x86_64|aarch64)-windows | SHA-256 SHA-256 aus dem Feld shasum des JSON | zig\<Linie>\zig.exe |
| Julia | julialang-s3.julialang.org/bin/versions.json | .zip-Archiv für os=winnt, arch=x86_64 | SHA-256 SHA-256 aus dem Feld sha256 von versions.json | julia\<Linie>\bin\julia.exe |
| Bun | api.github.com/repos/oven-sh/bun/releases | Asset bun-windows-(x64|aarch64).zip | SHA-256 GitHub asset.digest oder SHASUMS256.txt | bun\<Linie>\bun.exe |
| Deno | api.github.com/repos/denoland/deno/releases | Asset deno-(x86_64|aarch64)-pc-windows-msvc.zip | SHA-256 GitHub asset.digest oder <asset>.sha256sum | deno\<Linie>\deno.exe |
| Typst | api.github.com/repos/typst/typst/releases | Asset typst-(x86_64|aarch64)-pc-windows-msvc.zip | SHA-256 GitHub Release asset.digest | typst\<Linie>\typst.exe |
| TinyTeX (LaTeX) | api.github.com/repos/rstudio/tinytex-releases/releases/latest | Asset 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/latest | Installiert über npm-cli.js des Kit-Node.js | npm sha512 Integrität der npm-Registry | data\npm-global\pnpm.cmd und yarn.cmd |
| CMake + Ninja | GitHub-API: Kitware/CMake und ninja-build/ninja (releases/latest) | cmake-*-windows-(x86_64|arm64).zip und ninja-win(arm64).zip | SHA-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/latest | Asset llvm-mingw-*-ucrt-(x86_64|aarch64).zipmacOS 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 + Bundler | api.github.com/repos/oneclick/rubyinstaller2/releases?per_page=30 | Asset rubyinstaller-<v>-(x64|arm).7zmacOS 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-releases | micromamba-win-64 + Pakete r-base und libblas=*=*openblasWindows 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 Server | LTS-Linien 8.4 und 9.7 im Katalog festgelegt (sha256ByLine) | cdn.mysql.com/Downloads/MySQL-<Linie>/mysql-<v>-winx64.zip | SHA-256 SHA-256 pro Linie und Ziel nach Oracles GPG-Signatur festgelegt | mysql\<Linie>\bin\mysqld.exe und mysql.exe |
| MongoDB + mongosh + Database Tools | downloads.mongodb.org/current.json, GitHub mongodb-js/mongosh, tools/db/release.json | Windows-x64-.zip-Archive von mongod, mongosh und mongodump/mongorestoremacOS: 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.json | files.phpmyadmin.net/phpMyAdmin/<v>/phpMyAdmin-<v>-all-languages.zip | SHA-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>.zip | SHA-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 CLI | sqlite.org/download.html (CSV-Zeilen PRODUCT,...) | sqlite.org/<Jahr>/sqlite-tools-win-(x64|arm64)-<v>.zipLinux 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.