如何修復 Debian 上 apt-get 升級時的 404 未找到錯誤
在升級過程中出現「404 Not Found」錯誤,通常是因為您的系統嘗試從已不存在或已被移動的軟體倉庫下載套件,這通常發生在已達到生命週期終點並且其套件已被搬移到存檔伺服器的舊版 Debian 發行版上。
由於 Debian 維持嚴格的發行週期,舊版本最終會從活躍的鏡像站轉移到專門的存檔儲存空間。當這種情況發生時,您現有的軟體庫設定將變得過時,套件管理器的操作也會失敗。
了解升級過程中的 404 錯誤
當你執行 apt-get update 或 apt-get upgrade 時,系統會從 /etc/apt/sources.list 讀取你的來源列表,並嘗試從那裡指定的 URL 取得套件資訊。如果那些 URL 指向的軟體庫已被移動或刪除,你就會收到 404 錯誤。
解決方案包括更新您的軟體來源列表,以指向正確的軟體庫位置。由於不同的 Debian 版本需要不同的軟體庫網址,我們將首先識別您當前的版本,然後相應地修改配置。
檢查您的 Debian 版本
在進行任何更改之前,您需要先確定自己正在使用哪個 Debian 版本。
lsb_release -a
上述命令會顯示你的發行版本資訊,包括版本號和代號。
- 蟲書 → Debian 12
- Bullseye → Debian 11
- Buster → Debian 10
記下你的代號,因為在接下來的步驟中你會需要它。
備份來源檔案配置
由於你將修改系統檔案,建立備份可以確保你在需要時能恢復原本的設定。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
這會在相同目錄中建立你的來源清單副本,如果出現任何問題,你可以透過將上述命令中的來源和目標位置對調來還原它。
更新儲存庫來源
接下來,您需要編輯您的軟體來源列表,以指向正確的軟體庫。對於已達生命週期終止的舊版 Debian 發行版,您必須切換到存檔伺服器。
使用文字編輯器打開檔案:
sudo nano /etc/apt/sources.list
針對已停止支援的 Debian 版本
如果您的 Debian 版本不再受支援(例如,Jessie、Stretch 或更舊版本),請將檔案內容替換為:
deb http://archive.debian.org/debian/ CODENAME main contrib non-free
deb http://archive.debian.org/debian-security/ CODENAME/updates main contrib non-free
將 CODENAME 替換為你的 Debian 代號(例如,stretch 代表 Debian 9)。
目前支援的版本
如果您的 Debian 版本仍受支持,但您遇到 404 錯誤(鏡像站問題),請改用官方 Debian 倉庫:
deb http://deb.debian.org/debian/ CODENAME main contrib non-free
deb http://deb.debian.org/debian/ CODENAME-updates main contrib non-free
deb http://security.debian.org/debian-security CODENAME-security main contrib non-free
將 CODENAME 替換為你的版本:
- Debian 12 → bookworm
- Debian 11 → 牛眼
- Debian 10 → Buster
在進行這些更改後,按 Ctrl+O 保存檔案,然後按 Enter,最後使用 Ctrl+X 退出。
處理檔案庫驗證
已終止支援的 Debian 版本的檔案庫不再接收安全性更新,這意味著其發行檔案不再使用有效金鑰簽署。為了避免 apt 指令因簽名過期而失敗,您需要停用這些檔案庫的驗證檢查。
打開或建立以下設定檔:
sudo nano /etc/apt/apt.conf.d/99allow-unauthenticated
添加這一行:
Acquire::Check-Valid-Until "false";
此設定告訴 apt 忽略發行檔案的有效期限,這對於不再接收更新的已存檔軟體庫是必要的。
正在更新套件資訊
現在您的軟體倉庫來源已正確配置,請更新您的套件清單,這將從您新配置的倉庫中獲取最新的套件資訊。如果一切設置正確,應該可以順利完成,且不會出現任何 404 錯誤。
sudo apt-get update
一旦你的套件清單更新完成,就可以升級已安裝的套件,這將下載並安裝你當前系統的可用更新。對於存檔版本,你可能會發現很少或根本沒有套件被升級,因為它們不再接受更新。
sudo apt-get upgrade
考慮進行發行版升級
雖然修復 404 錯誤可以讓你目前的系統正常運作,但使用已達生命週期終點的 Debian 版本意味著你將不再收到安全更新,這在生產或面向互聯網的環境中會帶來重大風險。
你應該考慮升級到目前受支援的 Debian 版本。
sudo apt-get dist-upgrade
然而,升級不同的主要 Debian 版本需要謹慎規劃,不應隨意進行,因為這可能會破壞現有的配置或已安裝的軟體。在嘗試重大升級之前,請查閱目標版本的官方 Debian 發行說明。
摘要
在執行 apt-get upgrade 時出現的 404 錯誤,是由於您的來源配置中的存儲庫 URL 已過時。透過識別您的 Debian 版本、將您的 sources 列表更新為指向適當的存儲庫,並調整驗證設置,即可恢復套件管理功能。
由於運行不受支持的版本會帶來安全風險,因此規劃升級到當前的 Debian 版本仍然是建議的長期解決方案。