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 %}