本文使用「署名 4.0 國際 (CC BY 4.0)」許可協議,歡迎轉載、或從新修改使用,但須要註明來源。 署名 4.0 國際 (CC BY 4.0)html
本文做者: 蘇洋linux
建立時間: 2020年04月25日 統計字數: 6119字 閱讀時間: 13分鐘閱讀 本文連接: soulteary.com/2020/04/25/…docker
本文將介紹如何在當前時間點,將服務器版本的 Ubuntu 18.04 LTS 升級爲最新的 Ubuntu 20.04 LTS,以及升級過程當中的一些細節,但願能幫到躍躍欲試的 Ubuntu 同好。編程
將數據進行備份等操做須要自行處理,另外確保網絡穩定,建議都在服務器跳板機上進行操做,更爲穩妥。ubuntu
當前這篇內容已經運行在 Ubuntu 20.04 LTS 系統環境中,:)bash
先使用 apt update
看看有哪些內容能夠升級。服務器
apt update
Hit:1 http://mirrors.aliyun.com/ubuntu bionic InRelease
Get:2 http://mirrors.aliyun.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:3 http://mirrors.aliyun.com/ubuntu bionic-security InRelease [88.7 kB]
Get:4 http://mirrors.aliyun.com/ubuntu bionic-updates/universe Sources [281 kB]
Get:5 http://mirrors.aliyun.com/ubuntu bionic-updates/main Sources [315 kB]
Get:6 http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 Packages [915 kB]
Get:7 http://mirrors.aliyun.com/ubuntu bionic-updates/main i386 Packages [669 kB]
Get:8 http://mirrors.aliyun.com/ubuntu bionic-updates/main Translation-en [315 kB]
Get:9 http://mirrors.aliyun.com/ubuntu bionic-updates/universe i386 Packages [1,014 kB]
Get:10 http://mirrors.aliyun.com/ubuntu bionic-updates/universe amd64 Packages [1,065 kB]
Get:11 http://mirrors.aliyun.com/ubuntu bionic-updates/universe Translation-en [331 kB]
Hit:12 https://download.docker.com/linux/ubuntu bionic InRelease
Get:13 http://mirrors.aliyun.com/ubuntu bionic-security/universe Sources [168 kB]
Get:14 http://mirrors.aliyun.com/ubuntu bionic-security/main Sources [146 kB]
Get:15 http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 Packages [692 kB]
Get:16 http://mirrors.aliyun.com/ubuntu bionic-security/main i386 Packages [459 kB]
Get:17 http://mirrors.aliyun.com/ubuntu bionic-security/universe amd64 Packages [657 kB]
Get:18 http://mirrors.aliyun.com/ubuntu bionic-security/universe i386 Packages [618 kB]
Fetched 7,823 kB in 3s (3,106 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
19 packages can be upgraded. Run 'apt list --upgradable' to see them.
複製代碼
接着執行 apt upgrade -y
耐心等待軟件升級完畢便可。若是你最近已經更新過,則會獲得相似下面的內容提示。網絡
apt update
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
複製代碼
若是你以爲升級過程當中軟件源比較慢,能夠嘗試替換源,好比像下面這樣操做。ionic
sed -i -e "s/mirrors.cloud.aliyuncs.com/mirrors.tuna.tsinghua.edu.cn/" /etc/apt/sources.list
複製代碼
當咱們執行 do-release-upgrade
嘗試進行升級的時候,可能會出現三種狀況告訴咱們不可以升級。ui
當你執行完畢命令後,可能會獲得「Please install all available updates for your release before upgrading」的提示,這說明你其實並未將全部軟件都完成升級。
do-release-upgrade
Checking for a new Ubuntu release
Please install all available updates for your release before upgrading.
複製代碼
你可能會好奇,我明明執行過 update
和 upgrade
了,爲何還會出現這種狀況呢?
這裏有一個很大的多是,使用過 apt-mark 將部分軟件版本鎖定,須要先執行解鎖操做,好比:
apt-mark unhold docker-ce
複製代碼
至於如何看到須要升級或者解鎖的軟件呢?
可使用 apt update && apt list --upgradable
命令進行查詢:
apt list --upgradable
...
Reading package lists... Done
Building dependency tree
Reading state information... Done
1 package can be upgraded. Run 'apt list --upgradable' to see it.
...
Listing... Done
docker-ce/bionic 5:19.03.8~3-0~ubuntu-bionic amd64 [upgradable from: 5:19.03.6~3-0~ubuntu-bionic]
N: There are 23 additional versions. Please use the '-a' switch to see them.
複製代碼
而後在再次執行 apt upgrade -y
便可完成全部軟件升級。
可是千萬別高興太早,由於你還可能遇到接下來的事情。
當全部軟件都升級就緒後,繼續使用 do-release-upgrade
升級軟件,會看到相似下面的提示。
do-release-upgrade
Checking for a new Ubuntu release
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release
set Prompt=normal in /etc/update-manager/release-upgrades.
複製代碼
這裏由於官網還沒有正式打開版本推送,因此若是要想獲得版本更新,須要對 do-release-upgrade
添加命令行參數 -d
,來容許獲取最新的升級包。
Usage: do-release-upgrade [options]
Options:
-d, --devel-release If using the latest supported release, upgrade to the
development release
複製代碼
若是你是 Ubuntu 18.04 LTS 用戶的話,此刻咱們須要作出一個決定,是一個版本一個版本升級,仍是直接跨版本升級,而若是是 Ubuntu 19.10 的用戶則簡單的多,由於不涉及跨版本問題,逐版本升級後半部份內容便可。
咱們詳細說說兩種升級方式。
有一句流傳甚遠的話叫作「步子不能邁的太大」,某些時候也能夠用在軟件升級這件事上。
打開 /etc/update-manager/release-upgrades
文件,咱們能夠看到文件說明:
[DEFAULT]
# Default prompting behavior, valid options:
#
# never - Never check for, or allow upgrading to, a new release.
# normal - Check to see if a new release is available. If more than one new
# release is found, the release upgrader will attempt to upgrade to
# the supported release that immediately succeeds the
# currently-running release.
# lts - Check to see if a new LTS release is available. The upgrader
# will attempt to upgrade to the first LTS release available after
# the currently-running one. Note that if this option is used and
# the currently-running release is not itself an LTS release the
# upgrader will assume prompt was meant to be normal.
Prompt=lts
複製代碼
將 Prompt=lts
修改成 Prompt=normal
,而後執行 do-release-upgrade -d
,會開始第一階段升級:
do-release-upgrade -d
Checking for a new Ubuntu release
Get:1 Upgrade tool signature [1,554 B]
Get:2 Upgrade tool [1,329 kB]
Fetched 1,331 kB in 0s (0 B/s)
authenticate 'eoan.tar.gz' against 'eoan.tar.gz.gpg'
extracting 'eoan.tar.gz'
Reading cache
...
複製代碼
根據實際狀況,咱們「一路 Next」以後,在即將完成升級時,會看到下面的提示內容:
。。。
System upgrade is complete.
Restart required
To finish the upgrade, a restart is required.
If you select 'y' the system will be restarted.
複製代碼
待系統重啓以後,登錄系統會看到系統已經成功升級爲 Ubuntu 19.10:
Welcome to Ubuntu 19.10 (GNU/Linux 5.3.0-46-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Ubuntu 20.04 LTS is out, raising the bar on performance, security,
and optimisation for Intel, AMD, Nvidia, ARM64 and Z15 as well as
AWS, Azure and Google Cloud.
https://ubuntu.com/blog/ubuntu-20-04-lts-arrives
複製代碼
咱們將 /etc/update-manager/release-upgrades
文件中數值修改成 Prompt=lts
,再次執行 do-release-upgrade -d
就能夠開始第二階段的升級了,操做過程和上面沒有區別,一杯水的功夫,服務端再次重啓,Ubuntu 20.04 LTS 就升級完畢啦。
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Ubuntu 20.04 LTS is out, raising the bar on performance, security,
and optimisation for Intel, AMD, Nvidia, ARM64 and Z15 as well as
AWS, Azure and Google Cloud.
https://ubuntu.com/blog/ubuntu-20-04-lts-arrives
複製代碼
驗證完畢逐版本升級,咱們試試一步到位的跨版本升級。
跨版本升級至關因而逐版本升級的「偷懶版」,偷懶固然要到極致,升級軟件包也可使用 apt full-upgrade -y
這個命令來作。
和逐版本升級不一樣的是,咱們再也不須要修改 release-upgrades
配置文件,在升級前只須要確認 /etc/update-manager/release-upgrades
文件的數值是否設置爲 lts
便可。
確認數值正確後,執行 do-release-upgrade -d
,根據本身需求進行升級配置選擇便可,「一路 Next」 以後,Ubuntu 20.04 就升級完畢啦。
距離將全部機器升級到 18.04 剛巧一年, Ubuntu 20.04 LTS 的到來,算是一個驚喜。
通常狀況下,咱們使用 update
, upgrade
, do-release-upgrade
組合技應該就能順暢完成升級,可是在當前時間點,官網還未徹底正式提供 release 升級方案,因此就有了這篇文章。
呃,促成這篇文章還有一個緣由,回家後直接睡覺忘記喂貓,被毛孩子抗議叫醒...
--EOF
我如今有一個小小的折騰羣,裏面彙集了一些喜歡折騰的小夥伴。
在不發廣告的狀況下,咱們在裏面會一塊兒聊聊軟件、HomeLab、編程上的一些問題,也會在羣裏不按期的分享一些技術沙龍的資料。
喜歡折騰的小夥伴歡迎掃碼添加好友。(請註明來源和目的,不然不會經過審覈)