概要
- Ubuntu 20.04 LTS (Focal Fossa) から Ubuntu 20.10 (Groovy Gorilla) へアップグレードする
- 外部から ssh にて接続した状態でアップグレードを実施する
アップグレード前のバージョンを確認
20.04 focal になっていることを確認。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
アップグレード前のパッケージリポジトリを確認
sources.list にて focal が指定されていることを確認。
$ grep ^deb /etc/apt/sources.list
deb http://jp.archive.ubuntu.com/ubuntu focal main restricted
deb http://jp.archive.ubuntu.com/ubuntu focal-updates main restricted
deb http://jp.archive.ubuntu.com/ubuntu focal universe
deb http://jp.archive.ubuntu.com/ubuntu focal-updates universe
deb http://jp.archive.ubuntu.com/ubuntu focal multiverse
deb http://jp.archive.ubuntu.com/ubuntu focal-updates multiverse
deb http://jp.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu focal-security main restricted
deb http://security.ubuntu.com/ubuntu focal-security universe
deb http://security.ubuntu.com/ubuntu focal-security multiverse
アップグレード前の外部パッケージリポジトリを確認
今回の環境では Node.js 用の外部パッケージリポジトリとして NodeSource を設定してある。
/etc/apt/sources.list.d 以下のファイル等を確認する。
$ cat /etc/apt/sources.list.d/*
deb https://deb.nodesource.com/node_14.x focal main
deb-src https://deb.nodesource.com/node_14.x focal main
$ dpkg -l | grep nodejs
ii nodejs 14.15.3-deb-1nodesource1 amd64 Node.js event-based server-side javascript engine
アップグレード前のパッケージを更新
パッケージ構成を綺麗にしておく。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt autoremove
$ sudo reboot
update-manager の準備
update-manager-core パッケージをインストールする。
$ sudo apt install update-manager-core
/etc/update-manager/release-upgrades ファイルにて Prompt=normal を指定する。
$ cat /etc/update-manager/release-upgrades
# Default behavior for the release upgrader.
[DEFAULT]
# Default prompting and upgrade 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=normal
アップグレードできるバージョンが存在するか確認
$ sudo do-release-upgrade -c
Checking for a new Ubuntu release
New release '20.10' available.
Run 'do-release-upgrade' to upgrade to it.
アップグレードを実施
今回は外部から ssh で接続した状態でアップグレードを実施するため、必要に応じてファイアウォールの 1022 ポートを開けておく。
$ sudo iptables -I INPUT -p tcp --dport 1022 -j ACCEPT
$ sudo iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:1022
(以下略)
アップグレードを実施。
$ sudo do-release-upgrade
Checking for a new Ubuntu release
(中略)
パッケージマネージャーをチェック中です
SSH経由で実行していますが、続けますか?
このセッションはSSH上で実行されているようです。アップグレードをSSH越しに行うことは推奨されません。アップグレードに失敗した時の復元が困難になるからです。
続行する場合、追加のSSHデーモンをポート '1022' で起動します。
本当に作業を進めてよろしいですか?
続行する[yN] y
予備のsshdを開始します
障害が起こったときに復旧しやすくするため、ポート '1022' でもう一つの sshd
を開始します。現在実行中のsshにおかしなことが起きても、もう一方のポートに接続することができます。
ファイアウォールを実行している場合、このポートを一時的に開く必要があります。この操作は、潜在的な危険があるため自動的には行われません。以下の例のようにしてポートを開けます:
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT'
続けるには [ENTER] キーを押してください
リポジトリ情報のアップデート
サードパーティが提供するリポジトリを使わない設定にしました
sources.list にあるサードパーティが提供するリポジトリを使わない設定にしました。アップグレード完了後、'ソフトウェアソース'
ツールもしくはパッケージマネージャーを使って再び利用可能な設定にすることができます。
続けるには [ENTER] キーを押してください
アップグレードを開始しますか?
3 個のインストール済みパッケージは Canonical
によってサポートされなくなりました。ただしコミュニティからのサポートは受けることができます。
2 個のパッケージが削除されます。 97 個の新規パッケージがインストールされます。 503 個のパッケージがアップグレードされます。
合計 814 M をダウンロードする必要があります。 このダウンロードは 1Mbit DSL 接続で約 1 時間 43 分 、56k
モデムで約 1 日 7 時間 かかります。
アップグレードの取得とインストールには数時間かかることがあります。ダウンロードが完了してしまうと、処理はキャンセルできません。
続行する[yN] 詳細 [d]
システムのアップグレードが完了しました。
再起動が必要です
アップグレードを完了するには再起動が必要です。
'Y' を選択すると再起動します。
続行する[yN] y
アップグレード後のバージョンを確認
ssh で再接続しバージョンを確認。
20.10 groovy になっていることを確認。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.10
Release: 20.10
Codename: groovy
アップグレード後のパッケージリポジトリを確認
sources.list にて groovy が指定されていることを確認。
$ grep ^deb /etc/apt/sources.list
deb http://jp.archive.ubuntu.com/ubuntu groovy main restricted
deb http://jp.archive.ubuntu.com/ubuntu groovy-updates main restricted
deb http://jp.archive.ubuntu.com/ubuntu groovy universe
deb http://jp.archive.ubuntu.com/ubuntu groovy-updates universe
deb http://jp.archive.ubuntu.com/ubuntu groovy multiverse
deb http://jp.archive.ubuntu.com/ubuntu groovy-updates multiverse
deb http://jp.archive.ubuntu.com/ubuntu groovy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu groovy-security main restricted
deb http://security.ubuntu.com/ubuntu groovy-security universe
deb http://security.ubuntu.com/ubuntu groovy-security multiverse
アップグレード後の外部パッケージリポジトリを設定
/etc/apt/sources.list.d 以下のファイルを確認する。
ファイルが増えていたり、中身がコメントアウトされていたりする。
$ ls -1 /etc/apt/sources.list.d
nodesource.list
nodesource.list.distUpgrade
$ cat /etc/apt/sources.list.d/nodesource.list
# deb https://deb.nodesource.com/node_14.x groovy main # groovyへのアップグレード時に無効化されました
# deb-src https://deb.nodesource.com/node_14.x groovy main # groovyへのアップグレード時に無効化されました
$ cat /etc/apt/sources.list.d/nodesource.list.distUpgrade
deb https://deb.nodesource.com/node_14.x focal main
deb-src https://deb.nodesource.com/node_14.x focal main
/etc/apt/sources.list.d 以下のファイルを Ubuntu 20.10 (Groovy Gorilla) 用に書き換えて整理する。
$ cat /etc/apt/sources.list.d/*
deb https://deb.nodesource.com/node_14.x groovy main
deb-src https://deb.nodesource.com/node_14.x groovy main
外部パッケージリポジトリに接続できているか確認する。
$ sudo apt update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu groovy InRelease
取得:2 http://jp.archive.ubuntu.com/ubuntu groovy-updates InRelease [110 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu groovy-backports InRelease [101 kB]
取得:4 http://security.ubuntu.com/ubuntu groovy-security InRelease [110 kB]
取得:5 https://deb.nodesource.com/node_14.x groovy InRelease [4,584 B]
取得:6 https://deb.nodesource.com/node_14.x groovy/main amd64 Packages [768 B]
327 kB を 2秒 で取得しました (164 kB/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
パッケージはすべて最新です。
必要に応じてパッケージを更新する。
$ sudo apt upgrade
参考資料
- GroovyUpgrades - Community Help Wiki
- Upgrades - Community Help Wiki
- UpgradeNotes - Community Help Wiki
- How To Upgrade Ubuntu To 20.10 - LinuxConfig.org
- Ubuntuをコマンドでバージョンアップしよう! | basalla100.site
- Ubuntu Manpage: sources.list - APT のデータ取得元の設定リスト
- Ubuntu Manpage: do-release-upgrade - upgrade operating system to latest release
- Ubuntu – focal の update-manager-core パッケージに関する詳細
- For mission-critical Node.js applications - NodeSource
- GitHub - nodesource/distributions: NodeSource Node.js Binary Distributions