Home Wiki > Upgrade/Supported
Sign up | Login

Upgrade/Supported

tagline: 提供:openSUSE

Geeko このガイドでは opensuse で zypper を用いたライブ・ディストリビューション・アップグレードについて説明します。ライブ・アップグレードを実行することは 多くの利点と同等の大きな欠点が混在します。

利点としては:

  • アップグレードが必要な最小限のパッケージだけをダウンロードする(低速の回線では有効)
  • アップグレード中もワークステーションの利用を続けることができる;(アップグレード後の一回の再起動時を除く)
  • クールだ!

欠点としては:

  • 何かしらの原因でアップグレードが中断(例:電源が落ちる,ネットワークの切断など)してプロセスが続行できなかった場合,(プロセスが中途半端な状態で)壊れたシステムが後に残ることになるでしょう。


Susemini.png
バージョン:
11.2
openSUSE 11.1 の最終版から openSUSE 11.2 へのライブ・アップグレードが公式にサポートされています。ライブ・アップグレードは,1から10まで,すべてを再読込することなく完全な OS のアップデートの実行を許すものです。他のバージョンから11.2へのアップデートはサポートなしのライブ・アップグレードをご覧ください
Process-stop.png
警告!
This wiki page is in draft form.



目次

Live システムでディストリビューションをアップグレート

openSUSE 11.2 で初めて,直近のバージョンである openSUSE 11.1 からの「Live アップグレード」が公式にサポートされました。[1] これは最初から最後までパッケージをすべて読み込むことなく(つまり,DVD や CDイメージをダウンロードせずに),完全な OS のアップデートを実行します。

ユーザ・エクスペリエンス

GUIでツールを実行する。もしくはステップ通りに一連のコマンドラインを実行する。それだけで新しいディストリビューションにアップグレードできます。

サポートされる模範的な流れ

ただし原則として、このアップデートのプロセスはベストエフォート過ぎない(つまり失敗もあり得る)と考えてください。これは、サードパーティのパッケージの存在や個別のユーザの環境での設定を組み合わせると,前提となる条件が無数に存在することによるもので,いくつかの特定の設定の組み合わせではアップグレードのときに失敗を引き起こす可能であることを意味します。

重要なことは,アップグレードを開始する前にすべての重要なデータを必ずバックアップすることです。

以下に利用可能な2つの方法を提示します:

  1. CLI コマンドライン - zypperを利用する。
  2. GUI グラフィカル・ツール - YaSTからzypperを利用する。

はじめに(前提条件)

サポートされる初期状態は openSUSE 11.1 であり,openSUSE 11.1 リリース後に提供されたすべてのアップデートを適用している状態を,このプロセスの前提条件とします。以下のステップではユーザが openSUSE 11.2 にアップグレードする前に openSUSE 11.1 の最新パッケージにアップデートする方法を提示します。


コマンドライン

1. 11.1 アップデート・リポジトリが存在し,それが有効か否かを確認する。

 zypper repos --uri
もし,下表のようにURIの列の中にhttp://download.opensuse.org/update/11.1/ が存在して,その行のEnabledの値なら大丈夫です。
 #  | Alias           | Name            | Enabled | Refresh | URI
 ---+-----------------+-----------------+---------+---------+------------------------------------------------------------------------------------------
 1  | repo-update     | repo-update     | Yes     | Yes     | http://download.opensuse.org/update/11.1/
もし,Enabled の値が No なら,次のコマンドで有効にしてください。
 zypper modifyrepo --enable repo-update
もし,上記のようにhttp://download.opensuse.org/update/11.1/ が存在して,その行のEnabledの値なら Step3 に進んでください。

2. 11.1 アップデート・リポジトリを追加する。

 zypper addrepo --check --name 'openSUSE-11.1-Update' http://download.opensuse.org/update/11.1/ repo-update

3. 最新のパッケージを適用してシステムを更新する

 zypper refresh
 zypper update

詳細はZypper Usageをご覧ください。


もし,repo-updateリポジトリが現在のリポジトリ・リストに無ければ,以下のコマンドを実行してください。もし存在しているなら必要ありませんので,このステップは飛ばしてください。(Note:このステップは,11.2 にアップデートするために必要な openSUSE11.1 にアップデート・リポジトリを追加して前提条件にアップデートする方法となります。)

zypper ar -c -n 'openSUSE-11.1-Update' http://download.opensuse.org/update/11.1/ repo-update

もし,repo-updateリポジトリが現在のリポジトリ・リストに存在しても,「有効」になっていないときは下記のステップを実行してください。もし既に「有効」となっている場合は飛ばしてください。

zypper mr --enable repo-update

もし,repo-updateリポジトリが現在のリポジトリ・リストに存在して,なおかつ「有効」の場合,下記コマンドを実行してください。

zypper refresh
zypper up

以上で,前提条件となるアップデートが適応された openSUSE11.1 となります。 詳細はZypper Usageを参照してください。

GUI グラフィカル・ツール

YaST オンライン・アップデートを参照してください。


アップグレード実行

このステップでは前提条件下にある openSUSE 11.1 から openSUSE 11.2 にアップグレードする方法を提示します。

コマンドライン

1. お使いのリポジトリの一覧から openSUSE 11.2 と互換性がないリポジトリを確認してください。英語版のDiscussionにも情報があります。

 zypper ls -d

2. お使いのリポジトリを openSUSE 11.2 をサポートするものに替えてください。(古いパッケージは使い得ないものとお考えください)

  • お使いのリポジトリ一覧から openSUSE 11.1 とあるものは競合するでしょう。
例えば openSUSE-11.1 向けの OSS や non-OSS そして update リポジトリは次のようにリネームしてください。
 zypper renamerepo repo-oss 111-repo-oss
 zypper renamerepo repo-update 111-repo-update
 zypper renamerepo repo-non-oss 111-repo-non-oss
  • すべての openSUSE 11.2 以前のリポジトリを削除する。
 zypper modifyrepo --all --disable
  • openSUSE 11.2 リポジトリを新たに追加する。
 zypper addrepo --name "openSUSE-11.2 OSS" http://download.opensuse.org/distribution/11.2/repo/oss/ repo-oss
 zypper addrepo --name "openSUSE-11.2 Non-OSS" http://download.opensuse.org/distribution/11.2/repo/non-oss/ repo-non-oss
 zypper addrepo --name "openSUSE-11.2 Updates" http://download.opensuse.org/update/11.2/ repo-update
上記コマンドの最後の変数は,エイリアス(alias)です。ユーザーは 112-oss, 112-non-oss,あるいは 112-update のように簡潔でわかりやすい名前を設定することができます。
  • openSUSE 11.2 と互換性があるサードパーティのリポジトリを探して,追加してください。
警告: 細心の注意を払ってください。サードパーティのリポジトリはリスクを含み,アップグレードの正常な完了を妨げる要素を含んでいます。
 zypper -n <name> ar <url> <alias>      # もしくは:
 zypper ar <url.repo>                   # .repo ファイルの URL を利用する場合

3. 以上が完了したら,次のコマンドを実行してください。

 zypper refresh          # ローカルなメタデータとリポジトリの内容を更新する
 zypper in zypper        # 11.2 リポジトリから zypper を先行してインストール 
libzypp と依存関係は,この段階でパッケージがアップデートされることで解決されるでしょう。 もし,大量のパッケージを削除することを提案され,かつユーザーが削除する意思がない場合,--no-force-resolutionオプションを上記コマンドに付与する(もしくはContinue?(続行しますか?)と尋ねられたときにpを押してください。)zypper が どのパッケージを削除して,他のリポジトリのパッケージを代替するか,その理由をご覧ください。
'zypper refresh' を実行中にエラーが出る場合, 次善策(Workarounds)をご覧ください。

4. さあアップグレードを開始しましょう。

まず最初に zypper で必要なすべてのパッケージを事前にダウンロードします:
 zypper dup -d
関連のある /var/ パテーション(ディレクトリ)の空き容量を再確認してください。(上記コマンドの実行中に情報のレポートが表示されます)。
すべての必要なパッケージがダウンロードできたら,安全なシステムのアップグレードを実行します:
 zypper dup

もし,アップグレード前のリポジトリを一部でも維持したい場合,別の方法としてアップデート時に現時点のリポジトリ・リストを(下記のように)完全に入れ替えることです。これは上記の zypper in zypper の後 zypper dup の前にしなければなりません。

 mv /etc/zypp/repos.d /etc/zypp/repos.d-backup
openSUSE 11.2 は2009年11月12日にリリースされました。この日程以前に上記の手順を試した場合,評価版(RC)もしくはマイルストーン版がインストールされたでしょう。その場合,公式リリース後の今,最後のzypper dupを改めて実行する必要があります。

加えて,zypper dup はユーザーが設定したリポジトリから,その時々で,利用可能な最新版をインストールしようとします。一方で,YOU (Yast Online Update)では,公式の安全な場所からだけパッケージのインストールを試みます。

既知の問題(Known Issues)

パッケージ内のいくつかの %post インストール・スクリプトはYAST_IS_RUNNING=instsys 環境変数に依存しているため,この値が設定されていないときに問題を引き起こす。もし,このような問題に遭遇したら,bugzilla に報告してください。また,プログラムを正常に動作させるために,zypper dup コマンドを実行する前にこの変数を設定してみてください。その場合,zypper dup 終了後にSuSEConfigを実行する必要があるのでご注意ください。

 YAST_IS_RUNNING=instsys zypper dup   # 変数を設定するとともにすべてのパッケージをインストール
 SuSEconfig                           # SuSEConfig を実行,その後,再起動する。

YAST_IS_RUNNINGを設定すると個別のパッケージのインストール後にSuSEConfigを呼び出すプロセスをスキップします。これは zypper が X クライアントのウィンドウ中で実行されているときに,アップデート途中で X クライアントが落ちて(死んで),システムが使用不可能になるバグを回避することになります。

この手順は,feature 305472が準備できるまで,インストールの速度を大いに加速させる。


GUI グラフィカル・ツール

詳細は Wagon Wagon を利用した11.1から11.2へのアップグレート例(Example_usage:_Upgrading from 11.1 to 11.2 via Wagon) です。

  1. yast2-wagon パッケージをインストール
  2. 11.2 リポジトリだけを有効にする
  3. YaST2 wagon を開始する
  4. ダイアログに従う
  5. reboot

サブ・フィーチャ


テスト

  • アップグレードに適応した前提条件の openSUSE 11.1 を開発版(factory)に移行してみてください。
    期待される結果: 文書化されていない回帰することなしに(without undocumented regressions)システムが実行されるでしょう。
  • 開発テスト: サポートツールで開発版(factory)を追跡してください。

既知の問題 (open issues)

  • アップグレードのリポジトリ管理の段階で補助する CLI ツールかスクリプトが必要
  • SUSEconfig
  • 関連するバグレポートをどうするべきか?どんな情報が必要か?
  • テスト方法が不完全指定であること(How to test is underspecified)
  • もしユーザーが Proxy 越しの環境の場合,export ZYPP_ARIA2C=0 が必要です。Edinardo Potrich 氏に感謝。
  • 再起動後にグラフィカル・ログインが起動できなかったけど,/etc/X11/xorg.conf の Option "AutoAddDevices" "off"を手で消したら解決しました
  • アップグレード後に再起動時にグラフィカル・ログイン(kdm/gdm)でマウスやキーボードが反応しない問題があります。
Section "ServerLayout"
    ...中略...
    Option "AllowEmptyInput" "off"
    ...中略...
EndSection

次善策(Workarounds)

  • 上記手順で oss と non-oss リポジトリを追加しました。しかし 'zypper refresh' の実行中に下記のようなエラーが発生します:
 Retrieving repository 'openSUSE-11.2 Non-OSS' metadata [error]
 Repository 'openSUSE-11.2 Non-OSS' is invalid.
 Can't read public key from /var/cache/zypp/raw/112-repo-non-ossUVzbjU/repodata/repomd.xml.key, file not found
 Please check if the URIs defined for this repository are pointing to a valid repository.
 Skipping repository 'openSUSE-11.2 Non-OSS' because of the above error.
 Retrieving repository 'openSUSE-11.2 OSS' metadata [error]
 Repository 'openSUSE-11.2 OSS' is invalid.
 Can't read public key from /var/cache/zypp/raw/112-repo-ossCGwk6a/repodata/repomd.xml.key, file not found
 Please check if the URIs defined for this repository are pointing to a valid repository.
 Skipping repository 'openSUSE-11.2 OSS' because of the above error.
 Repository 'openSUSE-11.2 Updates' is up to date.
 Some of the repositories have not been refreshed because of an error.

それは奇妙なことです。次の指示に従ってください。: 一時的なリポジトリ repo-oss-temp と repo-non-oss-temp を追加してください。このとき'suse/' の下位ディレクトリを存在します。

 zypper addrepo --name "openSUSE-11.2 OSS" http://download.opensuse.org/distribution/11.2/repo/oss/suse/ repo-oss-temp
 zypper addrepo --name "openSUSE-11.2 Non-OSS" http://download.opensuse.org/distribution/11.2/repo/non-oss/suse/ repo-non-oss-temp
 zypper addrepo --name "openSUSE-11.2 Updates" http://download.opensuse.org/update/11.2/ repo-update

上記のように zypper を更新してください。

 zypper refresh
 zypper in zypper

ここまで終わったら,先ほど一時的に指定したリポジトリを通常のものに再指定してください。

 zypper addrepo --name "openSUSE-11.2 OSS" http://download.opensuse.org/distribution/11.2/repo/oss/suse/ repo-oss
 zypper addrepo --name "openSUSE-11.2 Non-OSS" http://download.opensuse.org/distribution/11.2/repo/non-oss/suse/ repo-non-oss
 zypper rr repo-oss-temp repo-non-oss-temp

完了。上記の手順に戻ってください。