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

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

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

概要

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

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

利点:

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

欠点:

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

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

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


サポート範囲について

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

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

  • アップグレードを開始する前に、すべての重要なデータをバックアップしなければなりません。
  • 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 には 別名 欄に書かれている更新リポジトリの別名を指定してください。

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

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

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

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

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

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

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

3. 最新の状態への更新

zypper refresh
zypper update

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

グラフィカルツール

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


アップグレードの実行

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

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

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

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

コマンドライン

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

  • まずは設定されているリポジトリの一覧を確認します:
    zypper lr
    一覧の中に、サードパーティ製もしくは OBS のリポジトリが存在している場合は、それらを下記のコマンドで削除します:
    # zypper rr <別名>
  • リポジトリの URL を、新しいバージョンのものに書き換えます (root で実行する必要があります):
    # cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.Old
    (上記はバックアップコピーを作成するためのコマンドライン)
    # sed -i 's/openSUSE_13\.2/openSUSE_Leap_42\.1/g' /etc/zypp/repos.d/*
    # sed -i 's/13\.2/leap\/42\.1/g' /etc/zypp/repos.d/*
    注意 - 上記のように sed をベースにしたバージョン番号の置き換えは、公式以外のリポジトリでもうまく動作する場合もありますが、失敗する場合もあります。失敗してしまった場合は、下記のようにいったんリポジトリを削除して、追加しなおしてください (下記は 1 行としてコピーして実行してください):
# zypper rr repo-update repo-update-non-oss && zypper ar -f http://download.opensuse.org/update/leap/42.1/oss/ openSUSE-Leap-42.1-Update && zypper ar -f http://download.opensuse.org/update/leap/42.1/non-oss/ openSUSE-Leap-42.1-Update-Non-Oss
  • openSUSE 12.1 もしくはそれ以前のバージョンを利用していた場合は、下記のようにして non-oss-update リポジトリを追加します:
# zypper ar -f http://download.opensuse.org/update/leap/42.1/non-oss/ repo-update-non-oss
  • 続いて、新しいリポジトリを更新 (refresh) します (新しい GPG 鍵を受け入れる旨のメッセージが表示されるはずです)
    # zypper --gpg-auto-import-keys ref
    ここまでの作業でサードパーティ製や OBS のリポジトリを削除していなかった場合は、それらのリポジトリが存在していない旨のメッセージや、推測不可能な URL であるとしてエラーメッセージが表示される場合があります。これらはいったん削除ないしは無効化しておき、アップグレード完了後に追加しなおし、もしくは有効化しなおしてください。
  • あとは、下記のようにしてディストリビューションのアップグレードを実行するだけです:
Process-stop.png
警告!
ディストリビューションをアップグレードする場合は、ランレベル 5 (グラフィカルモード) ではなく、ランレベル 3 (テキスト + ネットワーク) で実行することを強くお勧めします。

これは、アップグレードの途中で X セッションが停止したりクラッシュしたりしてしまった場合、アップグレード処理もまた中断されることになってしまい、システムが不安定な状態になってしまう場合がありうるためです。

ランレベルの切り替え方について、詳しくは SDB:ランレベルの切り替え をお読みください。


# zypper dup
上記のコマンドを実行すると、 zypper はインストールに必要なパッケージのセットをダウンロードしてからインストールを行ない、一貫性を損なわないようにしながらインストールします。インストール対象のすべてのパッケージを事前にダウンロードしたい場合は、下記のようにオプションを指定してください:
# zypper dup --download in-advance
上記のディストリビューションアップグレードを、公式のリリース日 (たとえば openSUSE 13.2 の場合、 2014 年 11 月 4 日) よりも前に実行してしまうと、インストールされるのは最終バージョンではなく、リリース候補版 (RC) もしくはマイルストーン版と呼ばれる正式リリース前のバージョンになってしまいます。このような場合は、公式のリリース日を過ぎてから zypper dup を実行しなおし、最終バージョンをインストールしてください。


 deleted providers: libyui-ncurses-pkg5-2.44.4-2.1.5.x86_64                                                                  
Solution 1: Following actions will be done:                                                                                  
 deinstallation of PackageKit-backend-zypp-0.8.11-2.3.1.x86_64
 deinstallation of PackageKit-0.8.11-2.3.1.x86_64
 deinstallation of PackageKit-branding-openSUSE-13.1-2.2.1.noarch
 deinstallation of apper-lang-0.8.1-11.7.1.noarch
Solution 2: deinstallation of patterns-openSUSE-yast2_basis-13.1-13.6.1.x86_64
Solution 3: deinstallation of sysvinit-2.88+-89.1.2.x86_64
Solution 4: install PackageKit-0.8.17-3.1.3.i586 despite the inferior architecture
Solution 5: keep libyui-ncurses-pkg5-2.44.4-2.1.5.x86_64
Solution 6: keep libyui-ncurses-pkg5-2.44.4-2.1.5.x86_64
Solution 7: break patterns-openSUSE-yast2_basis-13.1-13.6.1.x86_64 by ignoring some of its dependencies

Choose from above solutions by number or skip, retry or cancel [1/2/3/4/5/6/7/s/r/c] (c): 

Make the choice to delete sysvinit. }}

  • あとは、必要であれば従来利用していたサードパーティ製、もしくは OBS リポジトリを追加しなおします。もちろん新しいバージョンに対応したリポジトリであることを確認のうえ、追加してください:
Process-stop.png
警告!
サードパーティ製もしくは OBS リポジトリの使用にあたっては、よく注意して作業を行なってください。これらのリポジトリは、場合にょってはシステム自身を壊してしまう場合がありうるほか、安定性を失ってしまうこともあります。
zypper addrepo --name <名前> <URL> <別名>
.repo ファイルの URL がお分かりの場合は、下記のようにして追加することもできます:
# zypper ar <url.repo>
  • アップグレードが完了したら、あとは新しいバージョンのカーネルとその他のソフトウエアを動作させるため、システムを再起動してください。
これに加えて、有効化した各種のリポジトリが提供するパッケージを最新の状態にするため、 zypper up を定期的に実行することをお勧めします。 YOU (YaST オンライン更新) では公式のリポジトリが提供するセキュリティ更新のみを実施するためです。

他の openSUSE/SUSE プロジェクトへのリンク

openSUSE フォーラム