openSUSE 10.3 稼働中のシステムを 11.0 へアップグレード
Weekly News/28 で紹介されていた Benjamin Weber のブログ記事より。
以下に紹介するアップグレード手順はある程度システムに精通している方を対象とした手順であり、完全に無保証です。実行される場合は自己責任で行ってください。また、必要なデータのバックアップをお忘れなく!
稼働中の openSUSE を新しいバージョンにアップグレードしようと思っても、現状では公式にサポートされた方法はありません。インストールメディアから起動してオプションでアップグレードを選択するという方法のみがサポートされています。とはいえ、稼働中のシステムをアップグレードすることは可能です。RPM のペイロード・フォーマットが bz2 から lzma に変更されたことに伴い 10.3 のシステムへ 11.0 の RPM をインストールすることができなくなったため、10.3 から 11.0 へのアップグレードは、これまでよりも難しくなっています。
以下がその方法の概要です。
-
RPM を 11.0 で使われているものにアップグレードする
-
11.0 のすべてのパッケージマネジメントスタックをインストールする
-
すべてのパッケージをアップグレードする
手順
アップグレードするための具体的なステップはシステムにより異なってきます。以下はあくまで一例です。
10.3 で使っていたすべてのリポジトリを無効にする。
mv /etc/zypp/repos.d /etc/zypp/repos.d.old
リポジトリのキャッシュを削除する。
rm /var/cache/zypp/zypp.db
openSUSE 11.0 のメインリポジトリを追加する。
zypper ar http://download.opensuse.org/distribution/11.0/repo/oss \
openSUSE110
openSUSE 11.0 の新しい RPM をインストールする。
64bit 版の場合
rpm -Uhv ‘http://download.opensuse.org/distribution/11.0/repo/oss/suse/x86_64/rpm-4.4.2-199.1.x86_64.rpm’
32bit 版の場合
rpm -Uhv ‘http://download.opensuse.org/distribution/11.0/repo/oss/suse/i586/rpm-4.4.2-199.1.i586.rpm’
11.0 のパッケージマネジメントスタックをインストールする。
zypper in zypper
インストールソースとして追加していたリポジトリがあるなら、それらの 11.0 対応リポジトリを追加する。(以下、例として nonoss と packman の 11.0 対応リポジトリを追加する場合)
zypper ar http://download.opensuse.org/distribution/11.0/repo/non-oss \
openSUSE110_NonFree
zypper ar http://packman.iu-bremen.de/suse/11.0/ packman
すべてのパッケージをアップグレード。この段階でいくつかのパッケージでベンダが変更されることや、いくつかの古いパッケージがなくなっていることを確認されます。
zypper ref
zypper dup
再起動します。
問題点
アップグレードの後、いくつか重要な問題が発生するようです。以下に例として紹介する2点については、いずれもアップデートされた設定ファイルが自動では上書きされず、自前で編集した設定ファイルがなくなってしまっていたために起こる問題でした。
Networkmanager が、接続後すぐに切断してしまう。これは、古い dhclient の設定ファイルがなくなっていたことに起因していました。これについては以下の通り対処します。
mv /etc/dhclient.conf.rpmnew /etc/dhclient.conf
openSUSE updater がバックエンドを見つけ出せない。これは、古い zypp の設定ファイルがなくなっていたことに起因していました。これについては以下の通り対処します。
mv /etc/zypp/zypp.conf.rpmnew /etc/zypp/zypp.conf
アップグレードに伴い設定ファイルが欠落すると、予期せぬ箇所での不具合がを引き起こされます。アップグレード後何らかの問題が確認された場合、ど の設定ファイルを見ればいいのか、どう修復すればいいのか見当がつかないようでしたら、上記手順でのアップグレードは止めておいた方が無難かもしれませ ん。その点はどうぞご承知置きください。