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

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

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

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) 原始的な方法.

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

データのバックアップ

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

Fedora Linux のアップグレード

まず、次のパッケージを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 だと、

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になって、次のようにします。

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

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

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

パッケージの補正

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

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

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

アップグレード後は、package-cleanup コマンドで問題がないか調べておいたほうがいいでしょう。

package-cleanup は yum-utils パッケージに含まれます。主なオプションは、

--problems
何か問題がないか表示する
--orphans
インストールされていて、サーバリポジトリにないものを表示。リポジトリ以外から別にrpmファイルをインストールしたようなもの以外は、すべて削除していい。
--leaves
ほかのどのRPMからも依存されていないRPM。余計なものである可能性が高い。rpmでないソースをコンパイルするとき必要なもの以外は、すべて削除していい。
--dupes
バージョン違いなどが重複してインストールされている
--cleandupes
重複を探し、古いほうをアンインストールするところまでやってくれる

外部リンク