Upgrade/Supported
tagline: 提供:openSUSE
| このガイドでは opensuse で zypper を用いたライブ・ディストリビューション・アップグレードについて説明します。ライブ・アップグレードを実行することは 多くの利点と同等の大きな欠点が混在します。
利点としては:
欠点としては:
|
| バージョン: 11.2
|
openSUSE 11.1 の最終版から openSUSE 11.2 へのライブ・アップグレードが公式にサポートされています。ライブ・アップグレードは,1から10まで,すべてを再読込することなく完全な OS のアップデートの実行を許すものです。他のバージョンから11.2へのアップデートはサポートなしのライブ・アップグレードをご覧ください |
| 警告!
|
This wiki page is in draft form. |
目次 |
Live システムでディストリビューションをアップグレート
openSUSE 11.2 で初めて,直近のバージョンである openSUSE 11.1 からの「Live アップグレード」が公式にサポートされました。[1] これは最初から最後までパッケージをすべて読み込むことなく(つまり,DVD や CDイメージをダウンロードせずに),完全な OS のアップデートを実行します。
ユーザ・エクスペリエンス
GUIでツールを実行する。もしくはステップ通りに一連のコマンドラインを実行する。それだけで新しいディストリビューションにアップグレードできます。
サポートされる模範的な流れ
ただし原則として、このアップデートのプロセスはベストエフォート過ぎない(つまり失敗もあり得る)と考えてください。これは、サードパーティのパッケージの存在や個別のユーザの環境での設定を組み合わせると,前提となる条件が無数に存在することによるもので,いくつかの特定の設定の組み合わせではアップグレードのときに失敗を引き起こす可能であることを意味します。
重要なことは,アップグレードを開始する前にすべての重要なデータを必ずバックアップすることです。
以下に利用可能な2つの方法を提示します:
- CLI コマンドライン - zypperを利用する。
- 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
加えて,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) です。
- yast2-wagon パッケージをインストール
- 11.2 リポジトリだけを有効にする
- YaST2 wagon を開始する
- ダイアログに従う
- reboot
サブ・フィーチャ
- #305624: インストール前のすべてのパッケージ一括ダウンロード
- リビルドされたパッケージを更新することなしにダウンロードすることを回避
- 信頼できるダウンロードのために aria2 を有効化
テスト
- アップグレードに適応した前提条件の 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"を手で消したら解決しました
- それはきっと Bug #551929 のことですね。 --Bmwiedemann 14:04, 16 November 2009 (UTC)
- アップグレード後に再起動時にグラフィカル・ログイン(kdm/gdm)でマウスやキーボードが反応しない問題があります。
- /etc/X11/xorg.conf の Section "ServerLayout" に Option "AllowEmptyInput" "off" を追加してください。参考:はとちゃんの足跡 / Keyboard & Mouse not responding 11.2 - openSUSE Forums
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
完了。上記の手順に戻ってください。

