So sieht die Meldung aus
$ sudo apt install htop
Reading package lists... Done
Building dependency tree... Done
E: Unable to locate package htopHäufige Ursachen
apt updatewurde nie ausgeführt, z. B. auf einem frischen Server oder in einem neuen Container, die Paketlisten sind also leer.- Der Paketname ist falsch, oder das Paket heißt in deinem Release anders.
- Die Repository-Komponente mit dem Paket ist nicht aktiv:
universebei Ubuntu,contribodernon-freebei Debian. - Das Release ist am Ende seiner Laufzeit und die Repositories sind auf einen Archiv-Server umgezogen, deshalb endet
apt updatemit 404-Fehlern. - Ein kaputter oder falsch getippter Eintrag in den Quellen lässt
apt updatescheitern, die Listen bleiben unvollständig.
Prüfen
- Kennt apt das Paket überhaupt?
apt-cache policy htop - Den echten Paketnamen suchen
apt-cache search htop | head -n 10 - Welche Repositories und Komponenten sind aktiv?
grep -rE '^(deb |Types:|URIs:|Suites:|Components:)' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null - Welches Release ist das?
cat /etc/os-release
Lösung
- Die Listen aktualisieren und die Ausgabe auf Fehler lesen:
sudo apt update. - Den exakten Paketnamen verwenden, den
apt-cache searchfür dein Release zeigt. - Die fehlende Komponente aktivieren: bei Ubuntu
sudo add-apt-repository universe, bei Debiancontribodernon-freein denComponentsder Quellen ergänzen, danach erneutapt update. - Zeigt
apt updatefür dein Release 404, ist es am Ende seiner Laufzeit. Aktualisiere auf ein unterstütztes Release, statt in Produktion die Quellen auf ein Archiv zu biegen. - In einem Dockerfile
apt-get updateundapt-get installim selbenRUN-Schritt ausführen.
Häufige Fragen
Warum klappt es auf meinem Laptop, aber nicht im Container?
Container-Images werden ohne Paketlisten ausgeliefert, um klein zu bleiben. Führe zuerst apt-get update aus, im selben Build-Schritt wie die Installation.
Ist es sicher, dafür Drittanbieter-Repositories einzubinden?
Nur wenn du der Quelle vertraust. Prüfe zuerst, ob das Paket unter anderem Namen oder in einer offiziellen Komponente deines Releases existiert.