Come appare il messaggio
$ sudo apt install htop
Reading package lists... Done
Building dependency tree... Done
E: Unable to locate package htopCause frequenti
apt updatenon è mai stato eseguito, ad esempio su un server nuovo o in un container nuovo, quindi le liste sono vuote.- Il nome del pacchetto è sbagliato, oppure nella tua release si chiama in un altro modo.
- La componente del repository che contiene il pacchetto non è attiva:
universesu Ubuntu,contribonon-freesu Debian. - La release è a fine vita e i repository sono passati a un server di archivio, perciò
apt updatefinisce con errori 404. - Una voce rotta o scritta male nelle sorgenti fa fallire
apt updatee le liste restano incomplete.
Verifica
- apt conosce il pacchetto?
apt-cache policy htop - Cerca il nome reale del pacchetto
apt-cache search htop | head -n 10 - Quali repository e componenti sono attivi?
grep -rE '^(deb |Types:|URIs:|Suites:|Components:)' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null - Che release è?
cat /etc/os-release
Soluzione
- Aggiorna le liste e leggi l'output in cerca di errori:
sudo apt update. - Usa il nome esatto che
apt-cache searchmostra per la tua release. - Attiva la componente mancante: su Ubuntu
sudo add-apt-repository universe, su Debian aggiungicontribonon-freealleComponentsdelle sorgenti, poi di nuovoapt update. - Se
apt updatedà 404 per la tua release, è a fine vita. Passa a una release supportata invece di puntare le sorgenti a un archivio in produzione. - In un Dockerfile esegui
apt-get updateeapt-get installnello stesso passoRUN.
Domande frequenti
Perché sul mio portatile funziona e nel container no?
Le immagini dei container escono senza liste di pacchetti per restare piccole. Esegui prima apt-get update, nello stesso passo di build dell'installazione.
È sicuro aggiungere repository di terzi per risolvere?
Solo se ti fidi della fonte. Controlla prima se il pacchetto esiste con un altro nome o in una componente ufficiale della tua release.