SDB:システムアップグレード

アップグレードから転送)
移動先: 案内, 検索
このガイドでは、 openSUSE を動作させた状態のままディストリビューション全体を Zypper でアップグレード (ライブアップグレード) するための手順を説明しています。
openSUSE で確認済み おすすめの記事 関連する記事
Icon-checked.png

Icon-manual.png Icon-help.png

以前のバージョンを動作させた状態のままアップグレードする方法を 公式にサポートしています 。これにより、何もない状態からパッケージをインストールしなおしたりすることなく、その場でオペレーティングシステムをアップグレードすることができるようになっています。


概要

このページでは、ツールやコマンドラインを実行して、お使いのシステムを最新バージョンの openSUSE にするための手順を説明しています。

ライブアップグレードには、様々な利点や欠点があります。

利点:

  • アップグレード対象のパッケージのみをダウンロードしますので、インターネット接続が遅い環境でも有用です。
  • アップグレードの処理中であっても、コンピュータを使い続けることができます (あまりお勧めはできませんが・・) 。ダウンタイムとして全く使えなくなってしまうのは、アップグレード終了後の再起動の間だけです。
  • DVD や DVD ライターなどを使用する必要がありません (net メディアや USB メモリから起動して、残りをインターネットからダウンロードする方法もあります) 。

欠点:

  • 何らかの理由 (停電やネットワークの切断など) でアップグレードが中断されてしまい、処理を続行することができなくなってしまうと、場合によってはシステムが全く動作しなくなってしまうことがあります (もちろん、どの処理まで完了できたのかによります) 。
  • 複数のシステムをアップグレードする場合、それぞれのシステムで帯域を使用することになります。したがって、複数のシステムをお持ちの場合は、 ISO イメージをダウンロードしたほうが便利です。
  • (オフラインの) DVD アップグレードが実施する、クリーンアップやメンテナンスなどの作業は行なわれません。

警告: アップグレードに際しては、バージョンを飛ばしたりしないでください。たとえば 42.2 から 15.0 などへのアップグレードは してはなりません 。 42.2 から 15.0 にアップグレードする際には、 42.2 から 42.3 に、 42.3 から 15.0 にアップグレードしてください。

その他の選択肢: 従来から提供されているアップグレード方式である、 オフラインアップグレード もご検討ください。このアップグレード方式は、より安全で様々な用途に適用することができます。特に理由がなければ、 オフラインアップグレード のほうをお勧めします。


サポート範囲について

32 ビット版の openSUSE から Leap へのアップグレードはサポートされていません。Leap は 64 ビット版のみ提供しています。ハードウェアが x86_64 をサポートしている場合は、まず 13.2 を 64 ビット版にアップグレードしてください。参考:32bit to 64-bit upgrade

AArch64 アーキテクチャ(64 ビット ARM)では、Leap 42.1 から Leap 42.2 へのアップグレードはサポートされていません。これらのシステムでは新規インストールを行ってください。

ここで説明しているアップグレードは、あくまでも "ベストエフォート" (最善努力) であり、確実に実現できる保証があるわけではないことにご注意ください。サードパーティ製のソフトウエアが存在していたりするほか、各ソフトウエアでは様々な設定を行なうことができるため、場合によってはアップグレードが失敗することがありえます。

また、下記の点についてもご注意ください:

  • アップグレードを開始する前に、すべての重要なデータをバックアップしなければなりません。
  • zypper dup を実行する前に、現在実行中のリリースに対して提供されている、すべての更新を適用しなければなりません。
  • zypper dup ではバージョン間を飛ばすような更新をしてはなりません。例えば 13.1 から 42.1 などへの更新については、サポート範囲外となります。



最新の状態であることの確認

アップグレードを実施するにあたって、 サポート範囲内となる アップグレード元の環境は、その時点で提供されているすべての更新をインストールしている環境です。なお、 openSUSE Build Service (OBS) で提供されているリポジトリをお使いの場合は、アップグレードの際にそれらを利用しないようにしてください。具体的には、アップグレード作業の前にすべての OBS リポジトリを無効化し、アップグレード完了後に有効に戻してください。下記の手順では、アップグレードを行なう前に、現在の openSUSE ディストリビューション向けに提供されているすべての更新をインストールする方法を説明しています。

リリースノート

アップグレードの重要な手順と更新されたパッケージに関する情報は リリースノートにリストしています。

コマンドライン

1. 更新リポジトリが設定されていて、かつ有効化されていることの確認

zypper repos --uri

URI の列に http://download.opensuse.org/update/13.2/ (openSUSE 13.2 およびそれ以前の場合。 13.2 には既存の openSUSE バージョン番号が入ります) や http://download.opensuse.org/update/leap/42.1/ (openSUSE Leap 42.1 およびそれ以降の場合。 42.1 には既存の openSUSE バージョン番号が入ります) と書かれている行があるかどうかを確認します。また、その行の 有効 の列が はい になっていることも、合わせて確認します。例えば下記のようになります:

#  | 別名            | 名前            | 有効    | 更新    | URI
---+-----------------+-----------------+---------+---------+---------------------------------------
1  | repo-update     | repo-update     | はい    | はい    | http://download.opensuse.org/update/13.2/

有効 の列が いいえ になっている場合は、下記のコマンドを実行することで有効化することができます:

zypper modifyrepo --enable repo-update
ここで、 repo-update には 別名 欄に書かれている更新リポジトリの別名を指定してください。

上記のような行が存在していて有効化されている場合は、 4. システムを最新の状態に更新 に飛んでください。

2. 更新リポジトリの追加

上記のような行が存在していない場合は、下記のコマンドを実行してリポジトリを追加してください:

(openSUSE Leap 42.1 およびそれ以降の場合):

zypper addrepo --check --refresh --name 'openSUSE-Leap-42.3-Update' http://download.opensuse.org/update/leap/42.3/oss/ repo-update
ここで、 42.3 には既存の openSUSE のバージョン番号を指定します。

(openSUSE 13.2 およびそれ以前の場合):

zypper addrepo --check --refresh --name 'openSUSE-13.2-Update' http://download.opensuse.org/update/13.2/ repo-update
ここで、 13.2 には既存の openSUSE のバージョン番号を指定します。

3. /var/cache を別のサブボリュームに移動

注意:root ファイルシステムが Btrfs でないか、42.2 以降のバージョンからのアップグレードの場合は、このセクションをスキップしてステップ 4 に進んでください。

/var/cache にはアップデートごとの異なるバージョンの RPM パッケージを含む Zypper キャッシュのようなよく更新されるデータが多く収められています。ほとんどが冗長ながら頻繁に変更されるデータを保存している結果、スナップショットが占めるディスク容量が非常に速く増加することがあります。この問題を解決するには、 /var/cache を別のサブボリュームに移してください。

  • root ファイルシステムのデバイス名を検索します:
df /
  • 全ての他のサブボリュームの親サブボリュームを識別します。openSUSE 13.2 をインストールしたシステムでは、これは名前が @ のサブボリュームになります:
btrfs subvolume list / | grep '@'
  • コマンドの出力結果が空だった場合、@ と名前の付いたサブボリュームが無いことを示します。この場合、より古いバージョンの openSUSE で使われていた、ID 5 のサブリュームで続けることができるかも知れません。
  • そのサブボリュームを一時的なマウントポイントにマウントします:
mount /dev/<root-device> -o subvol=@ /mnt
もし名前が @ のサブボリュームが無ければ、ID 5 のサブボリュームを代わりに使います:
mount /dev/<root-device> -o subvolid=5 /mnt
  • /mnt/var/cache が既に存在し、/var/cache と同じディレクトリになっているかも知れません。データの損失を防ぐために、move します:
mv /mnt/var/cache /mnt/var/cache.old
  • 新たなサブボリュームを作ります:
btrfs subvol create /mnt/var/cache
  • /var/cache.old ディレクトリがある場合、その内容を新しい場所に move します:
mv /var/cache.old/* /mnt/var/cache
無い場合は代わりに次のようにします:
mv /var/cache/* /mnt/var/cache/
  • (オプション)ファイルを移動したら、/mnt/var/cache.old を削除します:
rm -rf /mnt/var/cache.old
  • 一時マウントポイントからサブボリュームをアンマウントします:
umount /mnt
  • /etc/fstab に新しい /var/cache サブボリュームのエントリを追加します。既存のサブボリュームのエントリをテンプレートとしてコピーして使います。UUID は触らないよう注意し(これは root ファイルシステムの UUID です)、サブボリューム名を変更してマウントポイントが /var/cache であることを確認してください。
  • /etc/fstab で指定した新しいサブボリュームをマウントします:
mount /var/cache


4. システムを最新の状態に更新

zypper refresh
zypper update

詳しくは Zypper_の使い方 をお読みください。

グラフィカルツール

YaST オンライン更新 をご覧ください。


アップグレードの実行

下記に示す手順は、お使いの openSUSE ディストリビューションを次のリリース (例えば 42.3 から 15.0 など) にアップグレードする方法を説明しています。すでに説明しているとおり、サードパーティ製や OBS リポジトリが存在していると問題になる場合がありますので、下記の手順を実施する前にそれらのリポジトリを無効化するか、削除しておいてください。

アップグレードを始める前に

まずはアップグレード後のバージョンに対して、 厄介なバグの一覧 を確認します。バグの種類によってはアップグレードに影響があるためです。また、バグによっては解決方法や回避方法が存在するものもありますので、あらかじめ知識を得ておくことをお勧めします。

このほか、 リリースノート でも、新しいバージョンでの変更点や問題点を説明しています。

コマンドライン

例として、 42.3 から 15.0 へのアップグレード手順を示します:

  • まずは設定されているリポジトリの一覧を確認します:
    zypper lr
    
    一覧の中に、サードパーティ製もしくは OBS のリポジトリが存在している場合は、それらを下記のコマンドで削除します:
    # zypper rr <別名>
    
  • 残りの全てのリポジトリの URL を新しいバージョンのものに書き換えます(root で実行する必要があります):
    # cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.Old
    
    (上記はバックアップコピーを作成するためのコマンドライン), 続けて (必用に応じてバージョン番号を書き換える):
    # sed -i 's/42.3/15.0/g' /etc/zypp/repos.d/*
    
  • 新しいリポジトリを更新 (refresh) します (新しい GPG 鍵を受け入れる旨のメッセージが表示されるはずです)
    # zypper ref
    
    っこまでの作業でサードパーティ製や OBS のリポジトリを削除していなかった場合は、それらのリポジトリが存在していない旨のメッセージや、推測不可能な URL であるとしてエラーメッセージが表示される場合があります。これらはいったん削除ないしは無効化しておき、アップグレード完了後に追加しなおし、もしくは有効化しなおしてください。
  • あとは、下記のようにしてディストリビューションのアップグレードを実行するだけです:
Process-stop.png
警告!
アップグレードの実行は X-window グラフィカルモード以外で実行することを強くお勧めします。したがって、ランレベル 3 (テキスト + ネットワーク) か仮想コンソールでコマンドを実行することをお勧めします。残念ながら、WIFI コネクションはランレベル 5 でのみ管理/利用可能なため、裏でグラフィカルコンソールにログインしたまま仮想コンソールを使うのが良い方法です。アップグレード中に X セッションが停止したりクラッシュしたりしてしまった場合、アップグレード処理もまた中断されることになってしまい、システムが不安定な状態になってしまう場合がありえます。ランレベル 3 に切り替えるには SDB:ランレベルの切り替え を参照してください。ランレベル 5 のままで "仮想コンソール" を使う場合は、例えば Ctrl-Alt-F1 をタイプします。
# zypper dup
上記のコマンドを実行すると、zypper はインストールに必要なパッケージをダウンロードしてからヒープにインストールを行います。全てのパッケージを事前にダウンロードするには次のコマンドを用います:
# zypper dup --download-in-advance
上記のディストリビューションアップグレードを、公式のリリース日 (たとえば Leap 15.0 の場合、2018 年 5 月 25 日) よりも前に実行すると、リリース候補版 (RC) もしくはマイルストーン版と呼ばれる正式リリース前のバージョンがインストールされてしまいます。この場合公式のリリース日より後に再び zypper dup を実行して最終バージョンをインストールし直すことになります。
  • あとは、必要であれば従来利用していたサードパーティ製、もしくは OBS リポジトリを追加しなおします。もちろん新しいバージョンに対応したリポジトリであることを確認のうえ、追加してください:
Process-stop.png
警告!
サードパーティ製もしくは OBS リポジトリの使用にあたっては、よく注意して作業を行なってください。これらのリポジトリは、場合にょってはシステム自身を壊してしまう場合がありうるほか、安定性を失ってしまうこともあります。
zypper addrepo --name <名前> <URL> <別名>
.repo ファイルの URL がお分かりの場合は、下記のようにして追加することもできます:
# zypper ar <url.repo>
  • アップグレードが完了したら、あとは新しいバージョンのカーネルとその他のソフトウエアを動作させるため、システムを再起動してください。
これに加えて、有効化した各種のリポジトリが提供するパッケージを最新の状態にするため、 zypper up を定期的に実行することをお勧めします。 YOU (YaST オンライン更新) では公式のリポジトリが提供するセキュリティ更新のみを実施するためです。

Links to other openSUSE or SUSE projects