# NVIDIA

# nvidia-smi

# „nvidia-smi: command not found“ – so fixt du das (Debian/Kali)

Diese Anleitung hilft dir, `nvidia-smi` wieder lauffähig zu machen und erklärt kurz, warum der Fehler passiert. Sie ist bewusst einfach gehalten – Schritt für Schritt, mit Kopierbefehlen.

## TL;DR – Schnelllösung

1. Stelle sicher, dass das NVIDIA/CUDA-Repository aktiv ist (für Treiber 580.x):

```
install -d /etc/apt/keyrings
curl -fsSL https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/3bf863cc.pub \
  | gpg --dearmor -o /etc/apt/keyrings/cuda-archive-keyring.gpg

cat >/etc/apt/sources.list.d/cuda-debian12-x86_64.list <<'EOF'
deb [arch=amd64 signed-by=/etc/apt/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/debian12/x86_64/ /
EOF

apt-get update
```

2. **Reihen konsistent halten:** gleiche Treiberlinie verwenden (hier 580.x). Prüfe die installierten Versionen:

```
apt-cache policy nvidia-driver nvidia-alternative libnvidia-ml1 | sed -n '1,200p'
```

3. Fehlendes `nvidia-alternative` in 580 installieren (sofern nicht schon da):

```
apt-get install -y nvidia-alternative=580.82.07-1
```

4. **Falls** das 580er Repo keine echte `nvidia-smi`-Binary liefert: nur die Binary aus 560er-Paket extrahieren (kein Downgrade!):

```
apt-get download nvidia-smi=560.35.05-1
dpkg-deb -x nvidia-smi_560.35.05-1_amd64.deb /tmp/nsmi
install -D -m 0755 /tmp/nsmi/usr/lib/nvidia/current/nvidia-smi /usr/local/bin/nvidia-smi
ln -sf /usr/local/bin/nvidia-smi /usr/bin/nvidia-smi
hash -r
nvidia-smi -h
nvidia-smi -q | head -n 20
```

<div class="note" id="bkmrk-hinweis%3A-dieser-weg-">**Hinweis:** Dieser Weg belässt dein System auf Treiberlinie 580, nutzt aber die 560er `nvidia-smi`-Binary. In der Praxis ist das mit `libnvidia-ml1` 580 kompatibel und genügt für Monitoring.</div>---

## Warum passiert der Fehler?

- `nvidia-smi` gehört nicht immer zum Paket `nvidia-smi`. In manchen Repos ist das nur ein „Dummy“ (enthält nur Doku).
- Die echte Binary steckt je nach Distribution/Version in anderen Paketen (z. B. `nvidia-driver-bin`, `nvidia-utils-*`) – oder wird über Metapakete geliefert.
- Mischt man Repositories (z. B. Kali 550.x + NVIDIA 580.x), passen die Versionsabhängigkeiten oft nicht zusammen – dann fehlt am Ende die Binary im `PATH`.

## Sauberer Weg (empfohlen): konsistente Repo-Linie

Entscheide dich für eine Linie: **entweder komplett 580.x (NVIDIA/CUDA)** oder **komplett 550.x (Kali)**. Mischen führt zu Konflikten.

### Variante A – 580.x (NVIDIA/CUDA)

<div class="grid" id="bkmrk-cuda-repo-eintragen-"><div>1. CUDA-Repo eintragen (siehe TL;DR) und doppelte Zeilen entfernen:

</div></div>```
awk '!seen[$0]++' /etc/apt/sources.list.d/cuda-debian12-x86_64.list \
  > /etc/apt/sources.list.d/cuda-debian12_x86_64.fixed && \
mv /etc/apt/sources.list.d/cuda-debian12_x86_64.fixed /etc/apt/sources.list.d/cuda-debian12-x86_64.list
apt-get update
```

<div class="grid" id="bkmrk-sicherstellen%2C-dass-"><div>2. Sicherstellen, dass alle Kernpakete 580 sind:

</div></div>```
apt-cache policy nvidia-driver nvidia-alternative libnvidia-ml1
```

<div class="grid" id="bkmrk-nvidia-alternative-g"><div>3. `nvidia-alternative` ggf. nachziehen:

</div></div>```
apt-get install -y nvidia-alternative=580.82.07-1
```

Wenn *keine* 580er `nvidia-smi`-Binary verfügbar ist: siehe Abschnitt „Binary pragmatisch bereitstellen“.

### Variante B – 550.x (Kali)

*Nur falls du auf Kali-Stand bleiben willst.*

<div class="grid" id="bkmrk-cuda-repo-deaktivier"><div>1. CUDA-Repo deaktivieren (um Versionen nicht zu mischen).
2. Kali-Pakete sauber auf 550 ausrichten:

</div></div>```
apt-get update
apt-get install -y \
  nvidia-driver=550.163.01-3 \
  nvidia-driver-bin=550.163.01-3 \
  nvidia-alternative=550.163.01-3 \
  libnvidia-ml1=550.163.01-3 \
  --allow-downgrades
```

Danach ist `/usr/bin/nvidia-smi` normalerweise direkt vorhanden.

## Binary pragmatisch bereitstellen (ohne System-Downgrade)

Wenn die 580er Repo-Linie keine `nvidia-smi`-Binary liefert, extrahieren wir nur die Binary aus dem 560er Paket:

```
apt-get download nvidia-smi=560.35.05-1
dpkg-deb -x nvidia-smi_560.35.05-1_amd64.deb /tmp/nsmi
install -D -m 0755 /tmp/nsmi/usr/lib/nvidia/current/nvidia-smi /usr/local/bin/nvidia-smi
ln -sf /usr/local/bin/nvidia-smi /usr/bin/nvidia-smi
hash -r
nvidia-smi -q | head -n 20
```

<div class="note" id="bkmrk-aufr%C3%A4umen-%28optional%29">**Aufräumen (optional):**</div>```
rm -f /usr/bin/nvidia-smi /usr/local/bin/nvidia-smi
rm -rf /tmp/nsmi
```

## Prüfen, ob der Treiber wirklich läuft

`nvidia-smi` startet auch ohne aktive GPU, zeigt dann aber z. B. „No devices were found“. Treiberstatus prüfen:

```
lsmod | grep -i nvidia || modprobe nvidia || true
dmesg | grep -i nvidia | tail -n 60
uname -r

```

Wenn das Kernelmodul fehlt oder nicht baut:

```
apt-get install -y dkms linux-headers-$(uname -r)
reboot
```

## Alternative: Im Container testen

Mit `nvidia-docker2`/`nvidia-container-toolkit` kannst du `nvidia-smi` im Container ausführen (ohne Host-Binary):

```
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu24.04 nvidia-smi
```

## Fehlersuche (Kurzcheckliste)

- **Repo doppelt?** Datei auf doppelte Zeilen prüfen: ```
    nl -ba '/etc/apt/sources.list.d/cuda-debian12-x86_64.list'
    ```
- **zsh „bad pattern“?** Eckige Klammern in Befehlen quoten: ```
    noglob cat /etc/apt/sources.list.d/cuda-debian12-x86_64.list
    ```
- **Welche Versionen verfügbar?**```
    apt-cache policy nvidia-driver nvidia-driver-bin nvidia-alternative libnvidia-ml1
    ```
- **Wo liegt die Binary?**```
    apt-file update
    apt-file search -x '(^|/)nvidia-smi$'
    ```
- **Secure Boot?** Kann das Laden des Moduls blockieren → Logs prüfen: ```
    dmesg | grep -i 'nvidia\|secure\|module verification'
    ```

## FAQ

**Ist die 560er Binary mit 580 kompatibel?**  
Für die reine Abfrage über NVML (`nvidia-smi`) funktioniert das üblicherweise problemlos. Wir installieren keine 560er Systempakete, sondern nutzen nur die einzelne Binary.

**Warum nicht einfach „apt install nvidia-smi“?**  
Weil dieses Paket in einigen Repositories nur ein Platzhalter/Dummy ist (liefert keine Binary). Die echte `nvidia-smi` kann in anderen Paketen stecken.

**Wie mache ich das rückgängig?**  
Symlinks/Binary entfernen:

```
rm -f /usr/bin/nvidia-smi /usr/local/bin/nvidia-smi
```

Repository-Zeilen ggf. wieder anpassen und `apt-get update`.

---

Stand: Beispielbefehle für Debian 12/Kali, Treiberlinie 580.x. Versionsnummern bitte bei Bedarf mit `apt-cache policy` prüfen.