Fedora Linux のバージョンアップ (アップグレード)

2008.11.26 作成。(2006.11.12, 2007.6.2 の日記に加筆)

半年に一度やってくる Fedora Linux のバージョンアップ手順と、関連するコマンドなど。

最近の方法

DBMSのデータベースなどは、事前に適宜バックアップしておきます。今も昔も変わらない。PostgreSQL は PostgreSQL の管理 を参照。

dnf-plugin-system-upgrade パッケージを使います。

Upgrading Fedora 29 to Fedora 30

バージョンごとの注意点

Fedora 25 to 26

(2017.7.15)

このページの記述どおりでOK. Upgrading Fedora 25 to Fedora 26 - Fedora Magazine

Fedora 22 to 23

[2015-11-07]
Fedora 22 Linux までにアップグレードするのは, fedup コマンドを使ってきました。

# fedup --network 22

Fedora 22 から Fedora 23 Linux に上げるのに, fedup はエラーになることがあります。(上手くいくこともある.)

fedup が失敗した機械では, 内部で dnf が呼び出されたものの, Fedora 22 の dnf-plugin-system-upgrade rpm パッケージが上手く動きませんでした。

名前が似ていますが, fedora-upgrade パッケージの同名コマンドを使えば, Fedora 23 に上げられました。

[2015-11-07 ここまで]

Fedora 20 to 23

(2015-11-29)

いくつかのリリースをスキップして, 特に22と23を跨いでアップグレードするのは難しい。

1) fedora-upgrade は, Fedora 21 (一つ上) へのアップグレードしかできません。

2) fedupコマンドでも, 結局うまくいきませんでした。

失敗例::

# fedup --network 23
      --product=nonproduct    # workstation でも失敗
      --instrepo=http://dl.fedoraproject.org/pub/fedora/linux/releases/23/Workstation/i386/os/   # Everything だと boot image が見つからない

3) 原始的な方法.

下で説明している方法で, 何とか成功。

Fedora Linux のアップグレード (原始的な方法)

まず、次のパッケージをrpmコマンドでインストールします。(rpm -Uvh)

  • fedora-release
  • fedora-release-notes

(F20 to F23 ここから)

Fedora 23 に上げる場合は, fedora-release-23-1.noarch.rpm, fedora-repos-23-1.noarch.rpm. このうち fedora-repos パッケージのほうに, RPM-GPG-KEYs が含まれる。

rpm コマンドでこれらをインストールする際に, /usr/lib/systemd/system-preset/90-default.preset ファイルが衝突してエラーになることがあります。とりあえずこのファイルを別名にコピーして, --force オプションを付けて rpm を実行し、上書きすればいいです。

(F20 to F23 ここまで)

Fedoraのリポジトリに含まれないパッケージを使っているときは、加えて、追加リポジトリのリリースパッケージもインストールします。

例えば, Freshrpms だと次のパッケージてす;

  • freshrpms-release

Note.

Freshrpms (とDribble, Livna) は RPM Fusion に移行、統合された。

freshrpms-release パッケージは、Fedora 10 にアップグレードする過程で、自動的にRPM Fusionのものに切り替わる。

*-release パッケージは、/etc/yum.repos.d ディレクトリにyumリポジトリの情報ファイルを作ります。freshrpmsの設定は freshrpms.repo ファイルです。

repoファイル内で enabled=1 となっていると、yumコマンドで自動的に使用されます。そうでないときは、yumコマンドの--enablerepoオプションで、都度、指定します。

あとは、yum コマンドでアップグレード開始です。

# yum clean all
# yum upgrade     # update --obsoletes と同じ

Fedora 20 to 23 だと, yum --releasever=23 distro-sync

新しいFedoraではパッケージが提供されなくなっている場合や、依存関係が変わっていて、アップグレードに失敗することがあります。

rpm コマンドでエラーになるパッケージをアンインストールして、もう一度試します。

rpmデータベースの復元

まれに、yum upgrade の最中に rpmデータベースが壊れることがあります。

rpm データベースを復元するには、rootになって、次のようにします。

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages
# rpm -v --rebuilddb

/usr/lib/rpm/rpmdb_verify コマンドは, Packages ファイルの整合性を検査します。

もしエラーがあった場合には、次のステップに進みます。

--rebuilddb オプションは、インストールされているパッケージのヘッダからデータベースのインデックスを再作成します。

yum コマンドの途中でエラーになったりした場合は、yum-complete-transaction コマンドで継続できます。

[2020.10加筆] DNF では yum-complete-transaction コマンドに相当するものは提供されない。DNF のサブコマンドを組み合わせる。例えばこの辺; Yum-complete-transaction to DNF

パッケージの補正

パッケージによっては、古いほうのアンインストールスクリプトにエラーがあり、rpmパッケージが重複してしまうことがあります。

そのときは次のようにします。

# rpm -e --noscripts 古いほうのパッケージ名 

アップグレード後は、package-cleanup コマンドで問題がないか調べておいたほうがいいでしょう。package-cleanup は yum-utils パッケージに含まれます。

[2020.10] 主なpackage-cleanup のコマンドオプション, DNFに移行後のサブコマンドは、こちらのページを参照してください。package-cleanup (yum) から dnf コマンドへの変更

外部リンク