本文給想讓Debian GNU/Linux系統大版本升級的用戶參考,例如Debian 12 Bookworm升級到Debian 13 Trixie,或是Stable分支升級到下一個Stable分支這樣。
想從Debian Stable分支升級成Debian Testing或Debian Sid分支的桌面系統用戶亦可以參考本文作法,但風險自負。
升級所需時間視系統規模而定。例如我升級3000個套件的Debian系統大約要一小時左右,這還不包含除錯時間。而伺服器生產環境尤其需謹慎考量升級風險。
不建議跳大版本升級,例如Debian 11升Debian 13?Debian開發者說無法保證這樣做會不會有問題。建議依序從11 → 12 → 13升到最新版Debian比較保險。
有時候,你不用急著更新,Debian開發團隊在推出新版本後仍會維護舊版的套件幾年時間(參見Debian LTS),所以不是新版本推出後,舊版就不能用了。不急的情況下可以緩一緩。
1. 前置作業#
使用uname -a ; lsb_release -a
指令查看目前系統版本
接著確認以下事項:
準備幾包乖乖放在主機上。
閱讀Debian官網的發行說明,查看目前的最新穩定版本代號,還有升級前的注意事項。每一個Debian正式版本發布後都會有一本詳盡的參考手冊。有時候,新版本會有一些breaking changes,例如Debian 11升級12的時候,要重新區分
non-free
與non-free-firmware
套件庫。大版本更新前建議備份資料,除了手動指令複製之外,桌面用戶可以用Timeshift完整備份至另外一個硬碟。
用Ventoy製作Debian開機LiveUSB,防止無法開機的時候可以修復系統。
如果你的軟體是需要從第三方套件庫安裝的,例如Nvidia CUDA、Google Chrome、Docker這類的,請先查詢是否有支援新版Debian再考慮要不要升級。如何確認目前有啟用哪些第三方套件庫?檢查
/etc/apt/sources.list.d/
目錄下的檔案就知道了。用APT以外途徑安裝的軟體(例如make編譯)不會自動升級,可能要在大版本更新之後重新編譯安裝。
使用Flatpak、Snap、AppImage安裝的軟體應在系統大版本更新後再嘗試更新。
確認以上事項後,將系統套件更新至目前Debian版本的最新版
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
重開機。
為了方便除錯,推薦安裝Aptitude,它能夠更智慧的處理套件衝突問題:
sudo apt install aptitude
2. 變更Debian套件庫的版本代號#
Debian沒有官方工具能幫你升級系統,一切要靠指令手動修改。
請至Debian官網查詢各個版本的代號。例如目前系統是Debian 12穩定版,而我想要升級到下一個Debian 13穩定版,那麼就要將套件庫裡全部的bookworm
字串替換成trixie
。
- 編輯
/etc/apt/sources.lists
和/etc/apt/sources.lists.d/
目錄下的全部檔案
# Debian自身的套件庫
sudo vim /etc/apt/sources.lists
# 第三方套件庫
sudo vim /etc/apt/sources.lists.d/
將看到的
bookworm
字串全部換成trixie
字串。要注意有些第三方套件庫不會用代號表示而是使用數字,這時請自行變通。更新套件列表
sudo apt clean
sudo apt update
就會看到爆出許多更新。
此時要檢查有沒有套件庫是顯示紅字404警告的,這代表開發者尚未支援最新版本的Debian,有的話要先將其處理掉再繼續。看是要:
- 放棄升級。把改過的字串再改回去,因為你還沒真的升級,只要再
apt update
一次重新整理套件目錄,一切照舊。 - 手動將套件庫刪除再升級,刪除
/etc/apt/sources.lists.d/
下的套件庫檔案,然後再繼續升級。
3. 開始升級Debian系統#
升級系統時保持網路連線穩定,不要讓螢幕自動鎖定,關閉自動休眠設定。需注意升級Debian系統的時候桌面環境有機率會自動重啟,終端機崩潰,導致升級中斷的風險產生。最保險的辦法是用SSH或tty純文字模式跑更新指令,這樣就不會有升級到一半GUI崩潰的問題。
使用
systemctl
指令停止正在執行的重要服務,防止干擾升級。升級所有套件。APT的升級日誌位於
/var/log/apt/term.log
sudo apt upgrade
sudo apt full-upgrade
- 在升級的過程有時候要依照畫面指示,手動介入操作。
閱讀APT的發行新聞,讀完就按q退出
要不要讓系統在沒有詢問的情況下就重啟服務?建議選No。
可能還得確認是否要讓程式的新版設定檔覆寫舊版檔案。按Z查看你是否有變更過該檔案。如果你沒動過該檔案就選Y。
像SSH的設定很重要,先保留原版設定。
- 遇到 下列的套件有未滿足的相依關係 (The following packages have unmet dependencies) 的錯誤就得手動排除
通常是先嘗試sudo apt install -f
讓它修復。或者用apt remove
移除沒有滿足依賴的套件,再重試sudo apt upgrade
。
或者執行:sudo aptitude
,依照畫面指示來處理衝突的套件。
- 升級完成後,重開機
sudo shutdown -r now
輸入指令
uname -a ; lsb_release -a
查看升級後的Debian版本再跑一次
sudp apt update
確認沒有套件要升級即是完成。使用sudo apt autopurge
清除多餘的套件。