Dev-Tools¶
Der Pi ist als vollständige Entwicklungsmaschine für ARM64 eingerichtet. Tools,
die in den offiziellen Debian-Paketen nicht oder zu alt vorhanden sind, werden
als ARM64-Binaries direkt installiert und über update-devtools aktuell gehalten.
Übersicht¶
| Kategorie | Tool | Versionsmanager | Wechsel |
|---|---|---|---|
| Runtime | Node.js | nvm | nvm use 22 |
| Runtime | Python | uv | uv python pin 3.12 |
| Runtime | Go | manuell | Binary-Tausch |
| Runtime | Rust | rustup | rustup default stable |
| Container | Podman | apt | Docker-kompatibel, kein Daemon |
| IaC | Terraform | Binary | update-devtools terraform |
| IaC | OpenTofu | Binary | update-devtools tofu |
| K8s | kubectl | Binary | update-devtools kubectl |
| K8s | Helm | Binary | update-devtools helm |
| K8s | kubectx/kubens | apt | Context/Namespace-Switcher |
| AI | Claude Code | nativer Installer | claude update |
Runtimes¶
Node.js via nvm¶
nvm ermöglicht parallele Node.js-Versionen ohne Root-Rechte.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm alias default lts/*
Die nvm-Integration ist in bash/bashrc_custom.sh eingebunden.
Versionswechsel: nvm install 22 / nvm use 22
Python via uv¶
uv von Astral ersetzt pyenv, pip, virtualenv und pip-tools in einem Rust-basierten Tool. Es hat native ARM64-Unterstützung und ist deutlich schneller als klassische Python-Toolchains.
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
uv python install 3.12 3.13
uv python install 3.13 --default
Pro-Projekt-Pinning: uv python pin 3.12 (schreibt .python-version)
Virtual Environments: uv venv / uv add <paket>
Go (manuell)¶
Go wird direkt als ARM64-Binary von go.dev installiert, ohne Paketmanager.
GO_VERSION=$(curl -s https://go.dev/VERSION?m=text | head -1)
wget "https://go.dev/dl/${GO_VERSION}.linux-arm64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "${GO_VERSION}.linux-arm64.tar.gz"
rm "${GO_VERSION}.linux-arm64.tar.gz"
Der PATH (/usr/local/go/bin und $HOME/go/bin) ist in bash/bashrc_custom.sh
gesetzt. Update: Gleiche Schritte erneut ausführen.
Rust via rustup¶
Versionswechsel: rustup default stable / rustup install nightly
Container Runtime: Podman¶
Podman statt Docker — kein Daemon-Prozess, rootless-fähig, weniger
RAM-Verbrauch. Das Paket podman-docker stellt einen docker-Alias bereit,
sodass alle Docker-Befehle transparent über Podman laufen.
sudo apt install -y podman podman-compose buildah skopeo podman-docker
# Rootless-Support aktivieren
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER
podman system migrate
| Docker | Podman-Äquivalent |
|---|---|
docker run |
podman run (oder via podman-docker transparent) |
docker build |
podman build / buildah |
docker-compose |
podman-compose |
docker push/pull |
podman push/pull / skopeo |
dockerd (Daemon) |
nicht nötig |
Kubernetes-Tools¶
kubectl und Helm¶
kubectl und Helm werden als ARM64-Binaries nach /usr/local/bin installiert
und über update-devtools aktuell gehalten (siehe unten).
# Erstinstallation kubectl
KUBECTL_VERSION=$(curl -fsSL https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/arm64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Erstinstallation Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
kubectx + kubens¶
kubectx wechselt den Kubernetes-Kontext, kubens den Namespace — beide
ohne den vollen kubectl config use-context-Befehl tippen zu müssen.
Infrastructure as Code¶
Terraform und OpenTofu sind parallel installiert. Beide werden als ARM64-Binaries
direkt nach /usr/local/bin installiert — ohne HashiCorp- oder OpenTofu-APT-Repos,
weil diese ARM64 nicht immer zeitnah unterstützen.
Erstinstallation manuell (danach übernimmt update-devtools):
# Terraform
TF_VERSION=$(curl -fsSL https://api.github.com/repos/hashicorp/terraform/releases/latest \
| jq -r .tag_name | sed 's/^v//')
wget "https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_arm64.zip"
unzip "terraform_${TF_VERSION}_linux_arm64.zip"
sudo mv terraform /usr/local/bin/
# OpenTofu
TOFU_VERSION=$(curl -fsSL https://api.github.com/repos/opentofu/opentofu/releases/latest \
| jq -r .tag_name | sed 's/^v//')
wget "https://github.com/opentofu/opentofu/releases/download/v${TOFU_VERSION}/tofu_${TOFU_VERSION}_linux_arm64.zip"
unzip "tofu_${TOFU_VERSION}_linux_arm64.zip" tofu
sudo mv tofu /usr/local/bin/
update-devtools¶
Das Skript ~/bin/update-devtools (Quelle: bin/update-devtools im Repo)
hält kubectl, Helm, Terraform und OpenTofu aktuell. Es prüft die installierte
Version gegen die neueste GitHub-Release und lädt nur bei Bedarf herunter.
Verwendung¶
update-devtools # Alle vier Tools prüfen und aktualisieren
update-devtools kubectl # Nur kubectl
update-devtools terraform # Nur Terraform
update-devtools tofu # Nur OpenTofu
update-devtools helm kubectl # Mehrere auswählen
Beispielausgabe:
═══════════════════════════════════════════
DevTools Update – Raspberry Pi (arm64)
═══════════════════════════════════════════
[INFO] kubectl: Prüfe auf Updates...
[OK] kubectl ist aktuell (v1.32.0)
[INFO] Terraform: Prüfe auf Updates...
[INFO] Terraform: v1.9.8 → v1.10.0
[OK] Terraform aktualisiert auf v1.10.0
═══════════════════════════════════════════
Installierte Versionen:
───────────────────────────────────────────
kubectl v1.32.0
helm v3.17.0
terraform v1.10.0
tofu v1.9.0
═══════════════════════════════════════════
Abhängigkeiten¶
Das Skript benötigt curl, jq und unzip — alle via apt verfügbar.
Für die Binaries in /usr/local/bin wird sudo benötigt.
Wöchentlicher Cronjob¶
Das Skript läuft automatisch jeden Sonntag um 03:00 Uhr. Logs landen in
~/log/update-devtools.log. Einrichtung des Cronjobs:
Wichtige Pfade¶
| Pfad | Inhalt |
|---|---|
/usr/local/bin/ |
kubectl, helm, terraform, tofu |
/usr/local/go/ |
Go Installation |
~/.nvm/ |
Node.js Versionen (nvm) |
~/.local/share/uv/ |
Python Versionen (uv) |
~/.cargo/ |
Rust Toolchain (rustup) |
~/bin/ |
Eigene Skripte (update-devtools) |
~/log/ |
Log-Dateien |