えんでぃの技術ブログ

えんでぃの技術ブログ

ネットワークエンジニアの視点で、IT系のお役立ち情報を提供する技術ブログです。

FedoraのOSバージョンアップ手順

fedora-logo

お伝えしたいこと

Fedora 32 から Fedora 33 にバージョンアップしました。
公式手順通りに実行しただけですが、実際にそのまま試してうまくいったということで記録に残します。
バージョンアップ手順は、公式サイトを都度ご確認ください。
手順が更新されている可能性もありますし、複数メジャーバージョンをまたいでバージョンアップするときはアップグレードパスが異なる場合もあります (※)。

(※) Fedora公式ページに書いてあります。Fedora20以前の場合は、Fedora21近辺を経由してから最新版にバージョンアップします。また、Fedora20以前からのバージョンアップ手順は異なります。

バージョンアップ手順の前に、なぜバージョンアップすべきなのか知りたい方は、先に(参考) バージョンアップすべき理由をご覧ください。

バージョンアップ手順

公式情報

  1. Fedora Quick Docs - Upgrading to a new release of Fedora
  2. Fedora Quick Docs - DNF System Upgrade

1つ目の記事に、Fedoraのバージョンアップ手順が複数パターン書いてあります。
公式で推奨されているDNF System Upgrade を利用した手順にて対応しました (2つ目の記事)。

事前バックアップ

公式手順にはさらっと書いてありますが、事前にバックアップを取得します。
今回はrsyncによるバックアップを取得しました。
Timeshift による定期バックアップももちろんセットしていますが、下記記事に記載の通り今回のケースにおいては3つの理由からrsyncの方が向いています。

  • ハードリンクを保持できる
  • システム不具合のリスクが高い作業である
  • バックアップ取得したいタイミングが明確である (バックアップ定期実行ではなく、手動実行でもよい)

rsyncによるバックアップ方法とメリットは、こちらの記事で紹介しています。Timeshiftのメリットにも触れています

endy-tech.hatenablog.jp

↓Timeshiftとは何か、Timeshiftの使い方についてはこちらの記事で紹介しています (基本GUIが必要です)。

endy-tech.hatenablog.jp

バージョンアップの実施

では、下記公式情報に従ってバージョンアップします。
Fedora Quick Docs - DNF System Upgrade

パッケージ更新、再起動

まずは、既存のrpmパッケージを全て最新にします。
--refreshを付けることで、ローカルのメタデータのキャッシュを「期限切れ」扱いにします。
要するにこのタイミングでリポジトリから改めてパッケージ一覧をダウンロードすることで、現時点の最新版のパッケージを確実にオンラインからダウンロードし、インストールするということをやっています。

sudo dnf upgrade --refresh

そしてコンピュータを再起動します (重要プロセスやカーネルの更新が入っている可能性もあるためだと思います)。

sudo reboot

dnf-plugin-system-upgrade のインストール

DNF によって Fedora をバージョンアップするために、DNF System Upgrade Plugin をインストールします。
既にインストール済みでしたらこの手順は不要ですが、とりあえず実行しちゃっても害はありません。

sudo dnf install dnf-plugin-system-upgrade

Fedora 新バージョン用のパッケージをダウンロード

ここは要注意です。
コピペする前にコマンドをよく確認してください。

dnf system-upgrade downloadは、バージョンアップに必要なパッケージをダウンロードするコマンドです (man dnf-system-upgrade)。
--refreshオプションは、メタデータのキャッシュを利用せず、必ずダウンロードするオプションです (man dnf)。

さて、ここが重要です。
--releaseverで、アップグレード先のFedoraバージョンを指定します。
基本的には最新の安定版を指定します (今回は33)。
最新の安定版は、Fedoraダウンロードサイトで確認できます (例えば初期パッケージが最小限のFedora Serverはコチラ)。
その他アグレッシブなバージョン (rawhide版や、現時点では安定版ではない34など) のインストール方法はまた異なりますので、公式サイトにてご確認ください。
https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/

ダウンロードには以下のコマンドを実行します。
大量のダウンロードが発生しますが、この時点ではまだ影響はありません。

sudo dnf system-upgrade download --refresh --releasever=33

もし従来バージョンでは提供されていたパッケージが、バージョンアップ後のリポジトリに存在しない場合にはエラーになることがあります。
その際は、--allowerasingオプションを追加することで存在しないパッケージについてはインストールを諦めることができます。
このオプションをつけて実行した場合、実際に削除されるパッケージ名を確認できるはずです (未検証ですが、downloadコマンドなので悪影響はないはずです)。
このオプションを追加して、「実際に消えても問題ないパッケージか」、「代替品を探しておくべきか」、「新バージョンのリポジトリに追加される見込みがあれば待つべきか」など検討した上で、更新作業を進めてよいかご判断ください。
非公式のリポジトリを追加しているとこのような事態になりうるとのことですが、幸いなことに今回のケースでは何も起こりませんでした。

Fedoraバージョンアップ

以下のコマンドを実行した直後、OS再起動してバージョンアップ処理が実行されます。

sudo dnf system-upgrade reboot

バージョンアップされたことの確認

以下のようなコマンドで確認可能です。

cat /etc/os-release 
# NAME=Fedora
# VERSION="33 (Server Edition)"
# (以下略)

dnf list
# (fc33など、新しいバージョンに対応したパッケージが表示される)

RHEL系の場合は以下コマンドでも確認できます。

cat /etc/redhat-release
# Fedora release 33 (Thirty Three)

以上でバージョンアップ作業は完了です。
お疲れ様でした。

(参考) バージョンアップすべき理由

1つ目の理由は、古いOSバージョンでは最新のパッケージが使えないことがあるためです。
OSがサポート期間中であっても、最新のOSバージョンに紐づく公式リポジトリでしかパッケージが更新されないことがあります。

今回についても、GNS3クライアントをFedora に導入しようとしたら、最新版のGNS3クライアントが新しいバージョンのFedora公式リポジトリでしか提供されていなかったのがバージョンアップのきっかけになりました。
※GNS3サーバとGNS3クライアントは、同じバージョンでないと動きません。今回はGNS3サーバが最新だったので、クライアントも最新にしたかったのです

2つ目の理由は、OSがサポート切れ (End of Life) になると色々と困るためです。
これは言わずもがなですね。
サポートが切れると、パッケージが更新されなくなったり、各種製品の動作要件から外れたり、新しいツールが動作しなくなったりします。
ツールのバージョンを古いまま保ったとしても外部サービスと連携する時に互換性がなくなり、不具合が起こるリスクもあります。

3つ目の理由は、あまりにも古いバージョンのままにしておくと、アップグレードパスが複雑になるためです。
Fedora公式のアップグレード手順にも記載がありますが、End of Life のOSからのアップグレードはサポートされないか、良くても複雑な手順を踏むことになります。
中間のバージョンを経由しつつ複数のバージョンアップ作業が必要になることもザラです。
常に最新に保つ必要まではないですが、あまり最新版とかけ離れないよう意識するのが大事かなと思います。
特にFedoraのようにリリースサイクルの短いディストリビューションではなおさらです。

まとめ

Fedoraのバージョンアップ手順を書きました。
公式通りの手順でうまく行きました。
基本は公式ページに従って操作するのが良いと思いますが、ざっくり予習するのに本記事が少しでもお役に立てれば幸いです。