如何升級 EoL 的 Ubuntu 版本
最近有從 Ubuntu 18.10 升級的需求,但因為 18.10 早就在 2019/07/18 EoL 了,因此沒辦法直接使用 do-release-upgrade
升級,這個時候該怎麼辦呢?
TL;DR
- 如果還在 Lifespan 的版本:直接
do-release-upgrade [-d]
- 如果已經 EoL 的版本:
- 選擇下一個版本
- LTS:最近的 LTS (
16.04 xenial
->18.04 bionic
) - 非 LTS:最近的版本 (
18.10 cosmic
->19.04 disco
)
- LTS:最近的 LTS (
#!/bin/bash set -euo pipefail NEXT_CODE='disco' # 下一個版本的 codename # 把 apt 源切到 `http://old-releases.ubuntu.com/ubuntu/` sudo sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo apt update sudo apt upgrade pushd `mktemp -d` curl http://old-releases.ubuntu.com/ubuntu/dists/${NEXT_CODE}-updates/main/dist-upgrader-all/current/${NEXT_CODE}.tar.gz | tar -zxf - sudo python3 ./dist-upgrade.py
- 選擇下一個版本
可以使用 do-release-upgrade
的場景
Ubuntu 提供 do-release-upgrade
[1] 方便使用者更新到最新的發行版本,但其更新路線是有限制的。
一般來說 LTS 可以從上一個 LTS 或普通版本更新,而普通版本只能從上一個版本更新,例如 20.04
可以從 18.04
跟 19.10
更新上去,但 19.04
只能從 18.10
更新,更多資訊可以參考 Ubuntu wiki 的版本升級說明[2]。
do-release-upgrade
決定下一個版本的方式可以從 /etc/update-manager/release-upgrades
修改,可以指定到最新普通版本還是最新 LTS 版本。
如果目前使用的版本可以直接更新到最新的版本的話那就直接用 do-release-upgrade [-d]
升級就可以了。
無法使用 do-release-upgrade
的場景
如果目前的版本已經不適用 do-release-upgrade
升級到最新版本或不打算使用的話,可以考慮從下一個版本的軟體源中下載升級工具:(把 ${NEXT_CODE}
換成下一個版本的 codename)
# 還在 Lifespan 的版本
http://archive.ubuntu.com/ubuntu/dists/${NEXT_CODE}-updates/main/dist-upgrader-all/current/${NEXT_CODE}.tar.gz
# 已經 EoL 的版本
http://old-releases.ubuntu.com/ubuntu/dists/${NEXT_CODE}-updates/main/dist-upgrader-all/current/${NEXT_CODE}.tar.gz
下載回來之後可以用 tar -zxf
解壓縮,然後執行 sudo python3 ./dist-upgrade.py
就可以進行更新。
EoL 版本無法 apt update 的解法
對於已經 EoL 的版本,Ubuntu 會將其軟體源移動到 http://old-releases.ubuntu.com/ubuntu
[3] 來保存,大家可以直接把源切到這邊繼續使用,但因為已經 EoL 了的關係,還是建議趕快升級發行版吧 XDDD
大部分情況下會預載,或是可以
apt install update-manager-core
取得 ↩︎19.04 Disco 可以從 18.10 升級;而 20.04 focal 則可以從 19.10/18.04 LTS 升級 ↩︎