2008.11.26 作成。(2006.11.12, 2007.6.2 の日記に加筆)
半年に一度やってくる Fedora Linux のバージョンアップ手順と、関連するコマンドなど。
DBMSのデータベースなどは、事前に適宜バックアップしておきます。今も昔も変わらない。PostgreSQL は PostgreSQL の管理 を参照。
dnf-plugin-system-upgrade パッケージを使います。
Upgrading Fedora 29 to Fedora 30
(2017.7.15)
このページの記述どおりでOK. Upgrading Fedora 25 to Fedora 26 - Fedora Magazine
[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 ここまで]
(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) 原始的な方法.
下で説明している方法で, 何とか成功。
まず、次のパッケージをrpmコマンドでインストールします。(rpm -Uvh)
(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 パッケージは、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 コマンドでエラーになるパッケージをアンインストールして、もう一度試します。
まれに、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 コマンドへの変更