Go-Binaries über PyPI verteilen – mit sqlite‑scanner als Beispiel
In den letzten Wochen habe ich mich intensiv mit Go beschäftigt, um kleine, schnelle und eigenständige Binärdateien zu erstellen. Go bietet dabei einen klaren, leicht verständlichen Weg, um kompakte Programme zu schreiben – ein Ansatz, den auch große Sprachmodelle mühelos nachvollziehen können. Das eigentliche Problem liegt jedoch in der Verteilung dieser Binärdateien.
Eine elegante Lösung ist die Veröffentlichung von Go‑Binaries auf PyPI. Durch die Nutzung von uvx kann jedes Go‑Programm wie ein normales Python‑Paket installiert und sofort ausgeführt werden. Das bedeutet, dass ein Go‑Programm nur noch einen uvx paketname Befehl benötigt, um auf jedem System lauffähig zu sein.
Ein praktisches Beispiel dafür ist sqlite-scanner, ein eigenes Go‑CLI‑Tool, das Dateisysteme nach SQLite‑Datenbanken durchsucht. Es erkennt Datenbanken, indem es die ersten 16 Bytes einer Datei mit dem SQLite‑Magic‑Number‑Sequenz SQLite format 3\x00 vergleicht. Der Scanner nutzt mehrere Goroutinen, um die Suche zu beschleunigen, und liefert die Ergebnisse in Klartext, JSON oder newline‑delimited JSON aus. Optional kann die Dateigröße angezeigt werden.
Die Nutzung ist denkbar einfach: Mit uvx sqlite-scanner wird das aktuelle Verzeichnis durchsucht. Man kann beliebige Pfade angeben, z. B. uvx sqlite-scanner ~ /tmp, und Ausgabeoptionen wie --json, --size oder --jsonl steuern. Für Anwender, die noch nicht mit uv vertraut sind, bietet sich die klassische pip install sqlite-scanner Alternative an, gefolgt von sqlite-scanner im Terminal.
Durch die Kombination von Go für die Performance und PyPI für die Distribution entsteht ein äußerst flexibles Ökosystem. Entwickler können ihre Tools schnell bereitstellen, ohne sich um plattformspezifische Build‑Prozesse kümmern zu müssen, und Endnutzer profitieren von einer einfachen, einzeiligen Installation.