system / upgrade === ###### tags: `OS / Ubuntu / cmd / system` ###### tags: `OS`, `Ubuntu`, `linux`, `command`, `system`, `apt-get`, `upgrade`, `dist-upgrade`, `Ubuntu 升版`, `20.04`, `22.04`, `24.04`, `26.04` <br> [TOC] <br> ## 參考 - [Ubuntu 系統版本升級](https://cynthiachuang.github.io/Upgrade-Ubuntu/) Ubuntu 系統版本升級 > 辛西亞.Cynthia <br> ## 討論 ### 如何從 20.04 直接升級到 24.04 - ### gpt-o4-mini-high (2025/05/21) ### 1. 升級前準備 1. **完整備份** - 使用 `rsync`、`tar` 或其他備份工具,把 `/etc`、`/home`、資料庫、容器設定、關鍵服務設定等都先備份起來。 2. **確認目前系統已更新** ```bash sudo apt update sudo apt upgrade -y sudo apt dist-upgrade -y ``` 3. **移除不再維護套件** ```bash sudo apt --purge autoremove -y ``` ### 2. 安裝並設定 Update Manager 1. 安裝核心升級工具 ```bash sudo apt install update-manager-core ``` 2. 編輯升級設定 打開 `/etc/update-manager/release-upgrades`,將: ``` Prompt=lts ``` 確認為 `lts`(只升級 LTS 版本)。 ### 3. 第一步:從 20.04 升級到 22.04 1. 開始升級 ```bash sudo do-release-upgrade ``` 2. 依提示一路「Y/Enter」確認即可,過程中系統會自動切換到 22.04 的套件來源、下載並安裝新版套件。 3. 升級完成後重開機 ```bash sudo reboot ``` 4. 確認版本 ```bash lsb_release -a # Release: 22.04 ``` ### 4. 第二步:從 22.04 升級到 24.04 1. 再次確認系統完全更新 ```bash sudo apt update sudo apt upgrade -y sudo apt dist-upgrade -y sudo apt --purge autoremove -y ``` 2. 確認 `/etc/update-manager/release-upgrades` 仍為 `Prompt=lts` 3. 執行升級 ```bash sudo do-release-upgrade ``` 4. 完成後重開機 ```bash sudo reboot ``` 5. 最後確認 ```bash lsb_release -a # Release: 24.04 ``` ### 5. 若想「直接」到 24.04(跳過 22.04) - **不建議**,也不受官方支援。 - 唯一方法是 **全新安裝**: 1. 下載 Ubuntu 24.04 LTS ISO(官方網站)。 2. 製作 USB 開機碟,從 USB 啟動並覆蓋安裝。 3. 安裝完成後,再把備份的設定檔、資料還原回去。 ### 小提醒 - 一定要先在測試機或 VM 上演練一次流程,確認服務(如 Docker、K8s、資料庫)都能正常啟動。 - 每次升級前務必備份,並留意網路連線與電源供應穩定。 <br> --- ### 為何要安裝 `update-manager-core`? - ### gpt-o4-mini-high (2025/05/21) Ubuntu 桌面版在有圖形介面(GNOME Software 或 Update Manager)的情況下,確實可以透過「設定 → 關於」或「軟體更新」直接按按鈕升級到新版本。但那個功能其實是建立在 `update-manager-core` 這套核心程式庫之上,如果你的系統(尤其是伺服器版或最小安裝)沒有裝它,就不會有 “升級到新版 Ubuntu” 的按鈕或命令可用。 - **為何要安裝 `update-manager-core`?** - `do-release-upgrade`、圖形化的 “Software Updater” 背後都呼叫了這個套件裡的工具。 - 在 Ubuntu Server、Minimal Server 或自訂映像中,預設不包含桌面升級工具,也不會安裝 `update-manager-core`。 - 安裝後才會有 `do-release-upgrade` 這條 CLI 升級指令,以及讓桌面環境顯示 “可升級到新版” 的功能。 - **如果你是桌面版卻沒有看到升級選項** 1. 先確認你有安裝 Update Manager GUI: ```bash sudo apt install update-manager ``` 2. 確保 `/etc/update-manager/release-upgrades` 裡的 `Prompt=lts`(或 `normal`),然後重開啟 “軟體與更新” → “升級” 標籤,就能看到「當有新版本時顯示」的選項。 - **小結** - **桌面完整版**:通常已經安裝好,你只要在「軟體更新」裡開啟 LTS 升級選項即可。 - **伺服器版或最小安裝**:預設精簡,不會自帶升級工具,必須手動安裝 `update-manager-core`(和必要的 GUI 套件)才能使用升級指令或按鈕。 <br> --- ### Please install all available updates for your release before upgrading. - ### Question ``` $ sudo do-release-upgrade Checking for a new Ubuntu release Please install all available updates for your release before upgrading. ``` - ### gpt-o4-mini-high (2025/05/21) ### 升級前套件更新指南 你收到這個訊息,是因為系統偵測到還有尚未安裝的套件更新。`do-release-upgrade` 要求在升級作業系統之前,先把所有套件都更新到最新狀態。請依照以下步驟操作: 1. **更新套件清單** ```bash sudo apt update ``` 2. **升級可更新的套件** ```bash sudo apt upgrade -y ``` 3. **進行系統整合升級** > 這一步會處理套件相依關係變動(例如移除舊套件、安裝新相依),相當於舊版的 `apt-get dist-upgrade` ```bash sudo apt full-upgrade -y ``` 4. **清除不用的舊套件** ```bash sudo apt --purge autoremove -y ``` 5. **修復可能的相依問題(如果有錯誤提示才跑)** ```bash sudo apt --fix-broken install ``` 6. **(可選)檢查是否還有被保留(hold)的套件** ```bash apt-mark showhold ``` 如果有,請根據需要解除保留: ```bash sudo apt-mark unhold <package-name> ``` 7. **重開機(選擇性,但建議)** ```bash sudo reboot ``` 8. **重新執行升級命令** ```bash sudo do-release-upgrade ``` 完成上述步驟後,系統就應該不再提示「Please install all available updates for your release before upgrading」,並會進入 20.04 → 22.04(或 24.04)的升級流程。 --- > **小提醒**: > - 如果你之前編輯過 `/etc/apt/sources.list` 或加了第三方 PPA,建議先把它們暫時註解掉,以免升級時衝突。 > - 升級前務必有完整備份,並在測試環境先演練一次。 > - 升級過程依網路與硬體差異,大約需 30 分鐘到數小時不等,請耐心等待。 ### solution - ### Step 0: 退出任何虛擬環境(例如 conda): ``` conda deactivate ``` - ### Step 1: 用這條確認「已沒有可升級套件」: ``` apt list --upgradable ``` 它應該只回報: ``` Listing... Done ``` 而不再有其它套件清單。 - ### Step 2: 如果還有其它套件清單,請依照下面步驟操作: ``` # 1. 一次升級所有可升級套件(含改變相依的套件) sudo apt full-upgrade -y # 2. 移除不再需要的套件 sudo apt autoremove -y # 3. 再次確認沒有可升級套件 apt list --upgradable ``` 此時 apt list --upgradable 應該只顯示: ``` Listing... Done ``` 且不再列出任何套件。 - ### Step 3: 全部都升級完畢後,再執行正式版升級: ``` sudo do-release-upgrade ``` <br> --- ### remove, autoremove, clean 三者指令差在哪裡? - ### gpt-4o (2025/05/26) 這三個 `apt` 指令在功能上各有不同,用來清除安裝包及相關資料,下面是詳細差異說明: --- ### ✅ `sudo apt remove --purge <package>` - **功能**:移除已安裝的軟體包。 - `--purge` 參數:除了移除軟體本體外,**也會刪除該軟體的設定檔案(如 /etc/ 下的設定)**。 - 📦 例如:`sudo apt remove --purge google-chrome-stable` → 會移除 Chrome 本身 + 系統層級的設定檔案。 --- ### ✅ `sudo apt autoremove --purge` - **功能**:自動移除**不再需要的套件**,這些通常是「被其他軟體依賴安裝的,但現在已無人使用」的套件。 - 加上 `--purge`:也會順便刪除這些套件的設定檔案。 - 📦 例如,如果 Chrome 安裝時拉了某些依賴,移除 Chrome 後這些依賴沒被別人用,就會被這個指令清掉。 --- ### ✅ `sudo apt clean` - **功能**:**清除本地下載快取**,也就是 `/var/cache/apt/archives/` 下儲存的 `.deb` 安裝檔。 - 不影響已安裝的程式或設定,只是節省硬碟空間。 - 📦 例如,當你下載 `.deb` 包安裝完後,這個指令可以把那個快取檔刪掉。 --- ### 🧠 總結對比 | 指令 | 移除套件本體 | 移除設定檔 | 清除孤兒依賴 | 清除快取檔 | |--------------------------|-----------|----------|-------------|---------| | `apt remove` | ✅ | ❌ | ❌ | ❌ | | `apt remove --purge` | ✅ | ✅ | ❌ | ❌ | | `apt autoremove` | ✅(依賴) | ❌ | ✅ | ❌ | | `apt autoremove --purge` | ✅(依賴) | ✅ | ✅ | ❌ | | `apt clean` | ❌ | ❌ | ❌ | ✅ | --- 如你想要「徹底移除一個程式和它帶來的所有東西」的話: ``` sudo apt remove --purge <package> sudo apt autoremove --purge sudo apt clean ``` 這三步搭配使用非常常見。 <br> {%hackmd vaaMgNRPS4KGJDSFG0ZE0w %}