apt update fallisce: passare una vecchia Debian all'archivio
Dopo la fine del supporto di una versione Debian, apt update si interrompe con un errore 404. Ecco come puntare la sources.list su archive.debian.org e rendere il server di nuovo aggiornabile.
Lanci apt update su un vecchio server Debian e, al posto dell'elenco dei pacchetti, ottieni solo messaggi di errore: "404 Not Found", "Release file is not valid yet" oppure "Repository does not have a Release file". In questa guida spieghiamo la causa e mostriamo come rendere di nuovo aggiornabile il server.
Sono interessate tutte le versioni di Debian il cui supporto è terminato: Debian 8 (Jessie), Debian 9 (Stretch), Debian 10 (Buster) e, a breve, anche Debian 11 (Bullseye).
Perché apt update fallisce sulle vecchie versioni di Debian
Debian gestisce server dei pacchetti dedicati per ogni release. Quando una versione arriva alla fine del supporto, sparisce dai mirror ufficiali su deb.debian.org e security.debian.org. I pacchetti non vanno però persi, cambiano semplicemente indirizzo: finiscono su archive.debian.org.
Il tuo file /etc/apt/sources.list continua invece a puntare ai vecchi indirizzi, per questo apt segnala un errore 404. A questo si aggiunge un secondo problema: i file Release depositati nell'archivio hanno una data di scadenza ormai ampiamente superata. Anche su questo apt si interrompe, persino quando gli indirizzi sono corretti.
Entrambi i punti si possono risolvere. È importante però inquadrare bene la situazione: una Debian senza supporto non riceve più aggiornamenti di sicurezza. I passaggi seguenti rendono il server di nuovo gestibile, ma non sostituiscono un passaggio a una versione più recente.
Quale versione di Debian gira sul tuo server?
Controllalo per prima cosa, perché da questo dipendono gli indirizzi corretti:
cat /etc/debian_version
lsb_release -a
Il nome in codice restituito (jessie, stretch, buster, bullseye) ricompare in tutte le righe che seguono.
Salvare e modificare la sources.list
Crea prima un backup, così puoi tornare indietro in qualsiasi momento:
cp /etc/apt/sources.list /etc/apt/sources.list.bak
Apri poi il file nell'editor:
nano /etc/apt/sources.list
Cancella il contenuto attuale e inserisci il blocco adatto alla tua versione, lo trovi nella sezione successiva. Controlla poi anche la directory /etc/apt/sources.list.d/: spesso lì si trovano file aggiuntivi con indirizzi obsoleti, che continuano a provocare l'errore.
I repository di archivio corretti
Debian 10 (Buster)
Il supporto è terminato a metà 2024, Buster si trova ormai completamente nell'archivio:
deb http://archive.debian.org/debian/ buster main contrib non-free
deb-src http://archive.debian.org/debian/ buster main contrib non-free
deb http://archive.debian.org/debian-security/ buster/updates main contrib non-free
deb-src http://archive.debian.org/debian-security/ buster/updates main contrib non-free
Debian 9 (Stretch)
deb http://archive.debian.org/debian/ stretch main contrib non-free
deb-src http://archive.debian.org/debian/ stretch main contrib non-free
deb http://archive.debian.org/debian-security/ stretch/updates main contrib non-free
deb-src http://archive.debian.org/debian-security/ stretch/updates main contrib non-free
Debian 8 (Jessie)
Jessie è il caso classico di questo tipo di errore, perché molte vecchie guide in rete rimandano ancora a security.debian.org. Per Jessie quell'indirizzo non restituisce più nulla:
deb http://archive.debian.org/debian/ jessie main contrib non-free
deb-src http://archive.debian.org/debian/ jessie main contrib non-free
deb http://archive.debian.org/debian-security/ jessie/updates main contrib non-free
deb-src http://archive.debian.org/debian-security/ jessie/updates main contrib non-free
deb http://archive.debian.org/debian/ jessie-backports main
deb-src http://archive.debian.org/debian/ jessie-backports main
Debian 11 (Bullseye)
Bullseye arriva alla fine della fase LTS ad agosto 2026. Da quel momento vale lo stesso schema. Tieni presente che a partire da Bullseye è cambiata la denominazione del repository di sicurezza: non si scrive più bullseye/updates, ma bullseye-security:
deb http://archive.debian.org/debian/ bullseye main contrib non-free
deb-src http://archive.debian.org/debian/ bullseye main contrib non-free
deb http://archive.debian.org/debian-security/ bullseye-security main contrib non-free
deb-src http://archive.debian.org/debian-security/ bullseye-security main contrib non-free
Finché Bullseye è ancora supportata, i mirror ufficiali restano la scelta giusta. Passa all'archivio solo quando apt segnala davvero un errore 404.
Una nota per i sistemi più recenti: da Debian 13 (Trixie) i repository non vengono più gestiti per impostazione predefinita in /etc/apt/sources.list, ma nel formato deb822 sotto /etc/apt/sources.list.d/debian.sources. Lì la struttura è diversa, il principio resta lo stesso.
Accettare elenchi di pacchetti scaduti
Dopo il salvataggio apt con ogni probabilità continuerà a interrompersi, questa volta segnalando che il file Release è scaduto. Con le versioni archiviate è normale. Indica ad apt di ignorare la data di scadenza:
echo 'Acquire::Check-Valid-Until "false";' | tee /etc/apt/apt.conf.d/10-nocheckvalid
Se ti serve una volta sola, puoi anche passare l'impostazione direttamente al comando invece di creare un file:
apt-get -o Acquire::Check-Valid-Until=false update
Dopodiché il consueto aggiornamento torna a funzionare:
apt-get update
apt-get upgrade
Messaggi di errore frequenti e cosa significano
- "404 Not Found": l'indirizzo nella sources.list punta ancora a un mirror ufficiale. Passa ad archive.debian.org.
- "Release file ... is not valid yet" oppure "expired": la data di scadenza del file Release è superata. Imposta l'opzione Check-Valid-Until come descritto sopra.
- "The repository ... does not have a Release file": di solito è un errore di battitura nel nome in codice oppure una suite che nell'archivio non esiste. Controlla la scrittura carattere per carattere.
- "NO_PUBKEY" oppure "EXPKEYSIG": la chiave di firma della vecchia release è scaduta. In molti casi basta reinstallare il pacchetto debian-archive-keyring.
- L'errore resta anche con la sources.list corretta: in
/etc/apt/sources.list.d/c'è ancora un secondo file con gli indirizzi vecchi.
La soluzione definitiva: aggiornamento di versione o reinstallazione
Il passaggio all'archivio riporta il tuo server in uno stato gestibile, ma non fornisce aggiornamenti di sicurezza. Per un server raggiungibile da internet dovrebbe quindi seguire il passaggio a una versione di Debian supportata.
Le strade percorribili sono due:
- Reinstallazione: nella maggior parte dei casi è la via più rapida e più pulita. Puoi reinstallare il tuo server con un sistema operativo aggiornato in qualsiasi momento, direttamente dall'area clienti. Salva prima i tuoi dati e i file di configurazione.
- Aggiornamento graduale: Debian si aggiorna di versione in versione, quindi ad esempio da Buster a Bullseye e poi a Bookworm. I salti di più versioni non sono supportati e finiscono regolarmente in un sistema rotto.
In ogni caso fai prima un backup. Un aggiornamento che attraversa versioni vecchie di diversi anni è, per esperienza, il momento in cui le vecchie configurazioni e i repository di terze parti creano problemi.
Domande frequenti
Perché apt update segnala improvvisamente un errore 404?
Quali versioni di Debian sono interessate?
Che cosa significa il messaggio che indica il file Release come scaduto?
Dopo il passaggio ricevo di nuovo aggiornamenti di sicurezza?
Posso aggiornare direttamente da Debian 8 a Debian 12?
2023-2026 KernelHost GmbH. Tutti i diritti riservati. Questa guida è protetta dal diritto d'autore. La ripubblicazione su altri siti web, anche parziale o in forma modificata, non è consentita senza il nostro consenso scritto. Le citazioni con indicazione della fonte e un link sono le benvenute.

