Solaris 10 1/06: この章の内容は、全面的に改訂されています。
この章では、ゾーンがインストールされるときに、Solaris オペレーティングシステムを維持する方法について説明します。大域ゾーンおよびインストール済みのすべての非大域ゾーン内で、パッケージやパッチをオペレーティングシステムに追加する際の情報を提供します。パッケージおよびパッチの削除に関する情報も含まれます。この章の内容は、既存の Solaris インストールおよびパッチに関するマニュアルの内容を補うものです。詳細は、Solaris 10 Release and Installation Collection - Japanese および『Solaris のシステム管理 (基本編)』を参照してください。
この章で扱う内容は、次のとおりです。
Solaris 10 1/06: この章は、非大域ゾーンがインストールされているシステム上でのパッケージコマンドとパッチコマンドの最新の動作を説明するために、Solaris 10 以降に改訂されています。
Solaris 10 6/06: SUNW_PKG_ALLZONES、SUNW_PKG_HOLLOW、および SUNW_PKG_THISZONE パッケージパラメータに関する情報が改訂されています。「パッケージツールとパッチツールの概要」および 「パッケージパラメータの情報」を参照してください。
Solaris 10 6/06 以降のリリース: システムを登録する方法または Sun Connection (以前は Sun Update Connection と呼ばれていた) を使用してソフトウェアの更新を管理する方法については、BigAdmin の Sun Connection ハブを参照してください。
Solaris 10 8/07 以降のリリース:
pkgadd コマンドに -G オプションを付けてパッケージをインストールした場合、patchadd コマンドを使用してそのパッケージにパッチを追加するときに、patchadd に -G オプションを付ける必要はなくなりました。
さまざまな状態の非大域ゾーンが存在しているシステムで、pkgadd、pkgrm、patchadd、および patchrm の各コマンドを使用するとどうなるかを示す表が追加されました。「ゾーン状態がパッチとパッケージの操作に与える影響」を参照してください。
patchadd -G と pkginfo 変数との相互作用に関する説明が追加されました。「ゾーンが含まれているシステムでの patchadd -G と pkginfo 変数の相互作用」を参照してください。
遅延起動パッチに関する情報が追加されました。「Solaris 10 8/07: 遅延起動パッチ」を参照してください。
pkgrm コマンドの -G オプションに関する情報が削除されました。
Solaris 10 5/08 以降の更新リリース: PatchPro は終了しました。パッチデータベースとパッチツールを使って、大域ゾーンと非大域ゾーンにインストールされているソフトウェアにパッチを適用してきた PatchPro のサポートが、2007 年 9 月で終了しました。現在のプロセスについては、Sun xVM Ops Center を参照してください。
Solaris 10 5/08: この情報は Solaris 10 5/08 リリースで追加されたものですが、すべての Solaris 10 システムに当てはまります。
使用している Solaris システムを登録するには、https://inventory.sun.com/inventory/ にアクセスしてください。Sun Inventory を使用してハードウェア、ソフトウェア、およびオペレーティングシステムを登録する方法については、Sun Inventory Information Center を参照してください。
Sun xVM Ops Center を使用してデータセンターでシステムをプロビジョニング、更新、および管理する場合は、ソフトウェアを Sun xVM Ops Center に登録する方法を Sun xVM Information Center で参照してください。
Solaris 10 10/09: ゾーンの並列パッチは、標準の Solaris 10 パッチユーティリティーの拡張機能です。Solaris 10 10/09 より前のリリースでは、このパッチは、119254-66 以降のリビジョン (SPARC) および 119255-66 以降のリビジョン (x86) のパッチユーティリティーのパッチで提供されます。『「Solaris 10 10/09: パッチ適用時間を短縮するためのゾーンの並列パッチ」』および『「Solaris 10 10/09: 非大域ゾーンに並列でパッチを適用する方法」』を参照してください。「パッチ適用のソリューションとして、接続時更新を使用する」も参照してください。ゾーンを持つシステムでパッチをすばやく更新するには、この方法をお勧めします。
Solaris 10 の新機能の全一覧および Solaris リリースについての説明は、『Oracle Solaris 10 9/10 の新機能』を参照してください。
Solaris パッケージツールは、ゾーン環境の管理に使用されます。大域管理者は、システムを Solaris の新しいバージョンに更新できます。その際、大域ゾーンと非大域ゾーンの両方が更新されます。
大域ゾーンで Solaris Live Upgrade、Solaris 標準の対話型インストールプログラム、またはカスタム JumpStart インストールプログラムを使用して、非大域ゾーンが含まれているシステムをアップグレードできます。zonepath が ZFS 上に設定されているゾーンには、次の制限が適用されます。
zonepath が ZFS 上に設定されているシステムで Solaris Live Upgrade がサポートされるのは、Solaris 10 10/08 リリース以降になります。
システムのアップグレードに使用できるのは Solaris Live Upgrade だけです。
詳細は、『Oracle Solaris ZFS 管理ガイド』の「ゾーンが含まれているシステムを Oracle Solaris Live Upgrade で移行またはアップグレードする (Solaris 10 10/08)」を参照してください。
ゾーン管理者は、このマニュアルに記載されている制限の範囲内でパッケージツールを使用して、非大域ゾーンにインストールされたすべてのソフトウェアを管理できます。
ゾーンがインストールされている場合は、次の一般的な指針が適用されます。
大域管理者は、システムのすべてのゾーン内のソフトウェアを管理できます。
非大域ゾーンのルートファイルシステムは、Solaris パッケージツールおよびパッチツールを使用することで、大域ゾーンから管理できます。Solaris パッケージツールおよびパッチツールは、共通パッケージ (バンドル) 製品、スタンドアロン (別パッケージ) 製品、および他社製品を管理するために、非大域ゾーン内でサポートされます。
パッケージツールおよびパッチツールは、ゾーン対応の環境で動作します。このツールを使用すると、大域ゾーンにインストールされたパッケージやパッチを非大域ゾーンにもインストールできます。
SUNW_PKG_ALLZONES パッケージパラメータにより、パッケージの「ゾーン範囲」が定義されます。この範囲により、個別のパッケージをインストール可能なゾーンの種類が決まります。このパラメータの詳細は、「SUNW_PKG_ALLZONES パッケージパラメータ」を参照してください。
あるパッケージをすべてのゾーンにインストールする必要があり、そのパッケージがすべてのゾーンで同一でなければならない場合、SUNW_PKG_HOLLOW パッケージパラメータはそのパッケージの「可視性」を定義します。 このパラメータの詳細については、「SUNW_PKG_HOLLOW パッケージパラメータ」を参照してください。
SUNW_PKG_THISZONE パッケージパラメータは、あるパッケージを現在のゾーンだけにインストールする必要があるかどうかを定義します。このパラメータについては、「SUNW_PKG_THISZONE パッケージパラメータ」を参照してください。
ゾーンのパッケージパラメータの値が定義されていないパッケージでは、デフォルトの設定は false です。
非大域ゾーン内から可視であるパッケージ情報は、Solaris パッケージツールおよびパッチツールを使用してそのゾーンにインストールされたファイルと一致します。このパッケージ情報は、inherit-pkg-dir ディレクトリと同期しています。
大域ゾーンに追加されたパッチ、パッケージなどの変更は、すべてのゾーンに適用できます。この機能により、大域ゾーンと各非大域ゾーン間の一貫性が維持されます。
パッケージコマンドを使用して、パッケージの追加、削除、および調査を実行できます。パッチコマンドを使用して、パッチを追加および削除できます。
特定のパッケージおよびパッチ操作が行われている間、ゾーンはこの種のほかの操作から一時的にロックされます。システムはまた、要求された操作について管理者に確認してから処理を続行することがあります。
非大域ゾーンのインストール時に、大域ゾーンにインストールされた Solaris パッケージの一部だけが完全に複製されます。たとえば、非大域ゾーン内では、Solaris カーネルを含む多数のパッケージは必要ありません。すべての非大域ゾーンは、大域ゾーンと同一の Solaris カーネルを暗黙的に共有します。ただし、パッケージのデータが不要であるか、非大域ゾーンでは使用されない場合でも、パッケージが大域ゾーンにインストールされるという情報が非大域ゾーン内で必要になる場合があります。この情報を使用すると、非大域ゾーンをソースとするパッケージの依存関係を大域ゾーンで適切に解決できます。
パッケージが保持するパラメータにより、非大域ゾーンのインストールされたシステムで内容を配布および可視にする方法が制御されます。SUNW_PKG_ALLZONES、SUNW_PKG_HOLLOW、および SUNW_PKG_THISZONE パッケージパラメータは、ゾーンがインストールされているシステムでのパッケージの特性を定義します。ゾーン環境内でパッケージを追加または削除する際、システム管理者は、必要に応じてこれらのパッケージパラメータ設定を検査してパッケージの適用範囲を確認できます。pkgparam コマンドを使用して、これらのパラメータの値を表示できます。パラメータの詳細については、「パッケージパラメータの情報」を参照してください。使用方法については、「ゾーンがインストールされているシステムでのパッケージパラメータ設定の検査」を参照してください。
パッケージの特性およびパラメータの詳細は、pkginfo(4) のマニュアルページを参照してください。パッケージのパラメータ値の表示については、pkgparam(1) のマニュアルページを参照してください。
パッケージ用にパッチを生成するときは、パラメータを元のパッケージと同じ値に設定する必要があります。
対話型であることが必要とされるパッケージ、つまり要求スクリプトを含むパッケージは、現在のゾーンだけに追加されます。パッケージはほかのゾーンには伝達されません。大域ゾーンに対話型パッケージを追加すると、そのパッケージは、pkgadd コマンドに -G オプションを指定して追加する場合と同様に処理されます。このオプションの詳細については、「ゾーン内でのパッケージの追加について」を参照してください。
非大域ゾーンにインストールされたソフトウェアと、大域ゾーンにインストールされたソフトウェアとの同期を最大限維持するのが最善です。これにより、複数のゾーンがインストールされたシステムで、管理の問題が発生するのを最小限に抑えることができます。
この目標を達成するために、大域ゾーン内でパッケージを追加または削除する際、次の規則がパッケージツールにより適用されます。
現在、パッケージが大域ゾーンにも、どの非大域ゾーンにもインストールされていない場合、パッケージは次の場所にインストールできます。
SUNW_PKG_ALLZONES=false の場合、大域ゾーンのみ
SUNW_PKG_THISZONE=true の場合、現在の (大域) ゾーンのみ
大域ゾーンおよびすべての非大域ゾーン
現在、パッケージが大域ゾーンだけにインストールされている場合:
すべての非大域ゾーンにパッケージをインストールできます。
パッケージを大域ゾーンから削除できます。
現在、パッケージが大域ゾーンおよび非大域ゾーンの一部だけにインストールされている場合:
SUNW_PKG_ALLZONES が false に設定されている必要があります。
すべての非大域ゾーンにパッケージをインストールできます。すべての非大域ゾーン内の既存のインスタンスは、インストール中のバージョンに更新されます。
パッケージを大域ゾーンから削除できます。
パッケージを大域ゾーンおよびすべての非大域ゾーンから削除できます。
現在、パッケージが大域ゾーンおよびすべての非大域ゾーンにインストールされている場合、そのパッケージを大域ゾーンおよびすべての非大域ゾーンから削除できます。
これらの規則により、次のことが保証されます。
大域ゾーンにインストールされたパッケージは、大域ゾーンだけにインストールされているか、大域ゾーンとすべての非大域ゾーンにインストールされています。
大域ゾーンとすべての非大域ゾーンの両方にインストールされているパッケージは、すべてのゾーンで同一です。
すべての非大域ゾーン内で実行可能なパッケージ操作を次に示します。
現在、パッケージがその非大域ゾーンにインストールされていない場合、SUNW_PKG_ALLZONES=false の場合にだけ、パッケージをインストールできます。
SUNW_PKG_THISZONE=true の場合、パッケージを現在の (非大域) ゾーンにインストールできます。
現在、パッケージがその非大域ゾーンにインストールされている場合:
SUNW_PKG_ALLZONES=false である場合にだけ、パッケージの既存のインスタンス上にパッケージをインストールできます。
SUNW_PKG_ALLZONES=false である場合にだけ、パッケージをその非大域ゾーンから削除できます。
さまざまな状態の非大域ゾーンが存在しているシステムで、pkgadd、pkgrm、patchadd、および patchrm の各コマンドを使用するとどうなるかを、次の表に示します。
Solaris 10 5/08 リリースでは、この表のインストール済み状態の説明にいくつかの修正が加えられました。
ゾーンの状態 |
パッケージとパッチの操作に与える影響 |
---|---|
構成済み |
パッチツールとパッケージツールを実行できます。ソフトウェアはまだインストールされていません。 |
インストール済み |
パッチツールとパッケージツールを実行できます。パッチとパッケージの操作中、システムはゾーンをインストール済み状態から「マウント済み」と呼ばれる新しい内部状態に移行します。パッチの適用が完了したあとで、ゾーンはインストール済み状態に戻されます。 zoneadm -z zonename install が完了した直後にも、ゾーンはインストール済み状態に移行されます。今までに起動したことのないインストール済み状態のゾーンは、パッチを適用することも、パッケージコマンドを実行することもできません。少なくとも 1 度はゾーンを起動して稼働状態にする必要があります。ゾーンを少なくとも一度起動して、その後 zoneadm halt によってインストール済み状態に戻したあとは、パッチおよびパッケージのコマンドを実行できます。 |
準備完了 |
パッチツールとパッケージツールを実行できます。 |
稼働 |
パッチツールとパッケージツールを実行できます。 |
不完全 |
zoneadm によってインストール中または削除中のゾーンです。パッチツールとパッケージツールは使用できません。ツールでは、ツールを使用できる適切な状態にゾーンを移行させることはできません。 |
pkgadd(1M) のマニュアルページに記載されているように、pkgadd システムユーティリティーを使用して、ゾーンがインストールされている Solaris システムでパッケージを追加できます。
大域ゾーンで -G オプションを指定して pkgadd ユーティリティーを使用すると、大域ゾーンだけにパッケージを追加できます。パッケージはほかのゾーンには伝達されません。SUNW_PKG_THISZONE=true の場合、-G オプションは不要です。SUNW_PKG_THISZONE=false の場合、-G オプションが優先されます。
大域ゾーン内で pkgadd ユーティリティーを実行する場合、次の操作が適用されます。
pkgadd ユーティリティーを使用して、パッケージを次の場所に追加できます。
大域ゾーンのみ (パッケージが SUNW_PKG_ALLZONES=true である場合を除く)
大域ゾーンとすべての非大域ゾーン
すべての非大域ゾーンのみ (パッケージが大域ゾーンにインストール済みの場合)
現在のゾーンのみ (SUNW_PKG_THISZONE=true の場合)
pkgadd ユーティリティーを使用して、パッケージを次の場所に追加することはできません。
非大域ゾーンの一部
すべての非大域ゾーン (パッケージが大域ゾーンにインストール済みの場合を除く)
pkgadd ユーティリティーを -G オプションを指定せずに実行し、かつ SUNW_PKG_THISZONE=false であった場合、指定されたパッケージはデフォルトですべてのゾーンに追加されます。パッケージに「大域ゾーンだけにインストール」されているというマークが付けられることはありません。
pkgadd ユーティリティーを -G オプションを指定せずに実行し、かつ SUNW_PKG_THISZONE=true であった場合、指定されたパッケージはデフォルトで現在のゾーン (大域ゾーン) に追加されます。パッケージには「大域ゾーンだけにインストール」されているというマークが付けられます。
-G オプションを指定する場合、pkgadd ユーティリティーは指定されたパッケージを大域ゾーンだけに追加します。パッケージには「大域ゾーンだけにインストール」されているというマークが付けられます。いずれかの非大域ゾーンがインストールされる場合、パッケージはインストールされません。
パッケージを大域ゾーンおよびすべての非大域ゾーンに追加するには、大域ゾーンで pkgadd ユーティリティーを実行します。大域管理者として、-G オプションを指定せずに pkgadd を実行します。
パッケージを大域ゾーンおよびすべての非大域ゾーンに追加する際、パッケージの影響を受ける領域について意識する必要はありません。
pkgadd ユーティリティーにより、次の手順が実行されます。
大域ゾーンおよび非大域ゾーン上でパッケージの依存関係が検査されます。必須のパッケージがどのゾーンにもインストールされていない場合、依存性の検査は失敗します。システムから大域管理者に対し、作業を続行するかどうかの問い合わせが行われます。
パッケージが大域ゾーンに追加されます。
大域ゾーンのパッケージデータベースが更新されます。
パッケージが各非大域ゾーンに追加され、大域ゾーン内のデータベースが更新されます。
各非大域ゾーンのパッケージデータベースが更新されます。
パッケージを大域ゾーンだけに追加するには、大域ゾーンの大域管理者になり、-G オプションだけを指定して pkgadd ユーティリティーを実行します。
次の条件を両方満たす場合に、パッケージを大域ゾーンに追加できます。
パッケージの内容が、いずれかの非大域ゾーンと共有されている大域ゾーンのどの領域にも影響を及ぼさない。
パッケージに SUNW_PKG_ALLZONES=false が設定されている。
pkgadd ユーティリティーにより、次の手順が実行されます。
パッケージの内容がいずれかの非大域ゾーンと共有されている大域ゾーンのいずれかの領域に影響を及ぼす場合、またはパッケージに SUNW_PKG_ALLZONES=true が設定されている場合、pkgadd は失敗します。パッケージを大域ゾーンおよびすべての非大域ゾーンに追加する必要があることを示すエラーメッセージが表示されます。
大域ゾーンだけでパッケージの依存関係が検査されます。必須のパッケージがインストールされていない場合、依存性の検査は失敗します。システムから大域管理者に対し、作業を続行するかどうかの問い合わせが行われます。
パッケージが大域ゾーンに追加されます。
大域ゾーンのパッケージデータベースが更新されます。
大域ゾーンのパッケージ情報に、このパッケージが大域ゾーンだけにインストールされることを示す注釈が付けられます。将来、非大域ゾーンがインストールされる場合、このパッケージはインストールされません。
大域ゾーンにすでにインストールされているパッケージをすべての非大域ゾーンに追加するには、大域ゾーンからそのパッケージを削除し、すべてのゾーンに再インストールする必要があります。
次の手順で、大域ゾーンにすでにインストールされているパッケージをすべての非大域ゾーンに追加します。
大域ゾーンで、pkgrm を使ってパッケージを削除します。
-G オプションを指定せずにパッケージを追加します。
指定された非大域ゾーン内でパッケージを追加するには、ゾーン管理者として、オプションを指定せずに pkgadd ユーティリティーを実行します。次のすべての条件が適用されます。
pkgadd ユーティリティーは、それが使用される非大域ゾーン内だけでパッケージを追加できます。
大域ゾーンから共有されるゾーンのどの領域に対しても、パッケージは操作を行うことはできません。
パッケージに SUNW_PKG_ALLZONES=false が設定されていなければなりません。
pkgadd ユーティリティーにより、次の手順が実行されます。
パッケージの追加前に、非大域ゾーンのパッケージデータベース上でパッケージの依存関係が検査されます。必須のパッケージがインストールされていない場合、依存性の検査は失敗します。システムから非大域ゾーン管理者に対し、作業を続行するかどうかの問い合わせが行われます。次のいずれかが当てはまる場合、検査は失敗します。
パッケージのいずれかの構成要素が、大域ゾーンから共有されているゾーンのいずれかの領域に影響を及ぼす。
パッケージに SUNW_PKG_ALLZONES=true が設定されている。
パッケージがゾーンに追加されます。
ゾーンのパッケージデータベースが更新されます。
pkgrm ユーティリティー (pkgrm(1M) のマニュアルページを参照) は、ゾーンがインストールされている Solaris システムでのパッケージの削除をサポートします。
大域ゾーンで pkgrm ユーティリティーを使用する場合、次の操作が適用されます。
pkgrm は、大域ゾーンとすべての非大域ゾーンを対象として、またはパッケージが大域ゾーンだけにインストールされている場合は、大域ゾーンだけを対象としてパッケージを削除できます。
パッケージが非大域ゾーンにもインストールされている場合、pkgrm は大域ゾーンだけからパッケージを削除できません。削除を実行すると、非大域ゾーンの一部からパッケージが削除されます。
次の条件が満たされる場合、ゾーン管理者は、管理する非大域ゾーンを対象としてパッケージの削除だけを実行できます。
大域ゾーンから共有される非大域ゾーン内のどの領域に対しても、パッケージは影響を及ぼさない。
パッケージに SUNW_PKG_ALLZONES=false が設定されている。
パッケージを大域ゾーンおよび非大域ゾーンから削除するには、大域管理者として大域ゾーン内で pkgrm ユーティリティーを実行します。
パッケージを大域ゾーンおよび非大域ゾーンから削除する際、パッケージの影響を受ける領域について意識する必要はありません。
pkgrm ユーティリティーにより、次の手順が実行されます。
大域ゾーンおよび非大域ゾーン上でパッケージの依存関係が検査されます。依存関係の検査が失敗すると、pkgrm は失敗します。システムから大域管理者に対し、作業を続行するかどうかの問い合わせが行われます。
パッケージが各非大域ゾーンから削除されます。
各非大域ゾーンのパッケージデータベースが更新されます。
パッケージが大域ゾーンから削除されます。
大域ゾーンのパッケージデータベースが更新されます。
ゾーン管理者として、非大域ゾーン内で pkgrm ユーティリティーを使用してパッケージを削除します。次の制限が適用されます。
pkgrm では、非大域ゾーンからのパッケージの削除だけを実行できます。
大域ゾーンから共有されるゾーンのどの領域に対しても、パッケージは操作を行うことはできません。
パッケージに SUNW_PKG_ALLZONES=false が設定されていなければなりません。
pkgrm ユーティリティーにより、次の手順が実行されます。
非大域ゾーンのパッケージデータベース上で、依存関係が検査されます。依存関係の検査が失敗すると、pkgrm が失敗し、ゾーン管理者に通知が行われます。次のいずれかが当てはまる場合、検査は失敗します。
パッケージのいずれかの構成要素が、大域ゾーンから共有されているゾーンのいずれかの領域に影響を及ぼす。
パッケージに SUNW_PKG_ALLZONES=true が設定されている。
パッケージがゾーンから削除されます。
ゾーンのパッケージデータベースが更新されます。
SUNW_PKG_ALLZONES、SUNW_PKG_HOLLOW、および SUNW_PKG_THISZONE パッケージパラメータは、ゾーンがインストールされているシステムでのパッケージの特性を定義します。非大域ゾーンがインストールされたシステムでパッケージを管理できるようにするには、これらのパラメータを設定する必要があります。
次の表に、パッケージパラメータの設定に使用できる 4 つの有効な組み合わせを示します。次の表に示されていない設定の組み合わせは無効であり、そのような設定を選択するとパッケージのインストールは失敗します。
3 つのパッケージパラメータをすべて設定したことを確認してください。3 つのパッケージパラメータをすべて空のままにしてもかまいません。ゾーンのパッケージパラメータが見つからない場合、パッケージツールではその設定は false として解釈されますが、パラメータの設定は省略しないように強くお勧めします。3 つのパッケージパラメータをすべて設定することにより、パッケージをインストールまたは削除するときのパッケージツールの動作を正確に指定します。
表 25–1 有効なパッケージパラメータ設定
オプションの SUNW_PKG_ALLZONES パッケージパラメータには、パッケージのゾーン範囲が記述されます。このパラメータにより、次のことが定義されます。
パッケージをすべてのゾーンにインストールする必要があるかどうか
パッケージがすべてのゾーンで同一である必要があるかどうか
SUNW_PKG_ALLZONES パッケージパラメータに指定可能な値は 2 つあります。その値は、true および false です。デフォルト値は false です。このパラメータが設定されていない場合か、または true および false 以外の値に設定されている場合には、値 false が使用されます。
すべてのゾーンでパッケージのバージョンとパッチの改訂レベルが同一で「なければならない」パッケージでは、SUNW_PKG_ALLZONES パラメータを true に設定することをお勧めします。たとえば Solaris 10 など、特定の Solaris カーネルに依存した機能を提供するすべてのパッケージでも、このパラメータを true に設定することをお勧めします。パッケージに適用するパッチの SUNW_PKG_ALLZONES パラメータは、インストール済みパッケージに設定されている値と同じ値に設定する必要があります。このパラメータを true に設定しているパッケージのパッチ改訂レベルは、すべてのゾーンで一致していなければなりません。
他社製パッケージや Sun コンパイラなど、特定の Solaris カーネルに依存しない機能を提供するパッケージでは、このパラメータを false に設定することをお勧めします。このパラメータを false に設定しているパッケージの場合は、そのパッチのパラメータも false に設定する必要があります。このパラメータを false に設定しているパッケージの場合は、各ゾーンのパッケージバージョンまたはパッチ改訂レベルが異なっていてもかまいません。たとえば、2 つの非大域ゾーンにインストールされている Web サーバーのバージョンは、一致していなくてもかまいません。
SUNW_PKG_ALLZONES パッケージパラメータの値については、次の表で説明します。
表 25–2 SUNW_PKG_ALLZONES パッケージパラメータの値
SUNW_PKG_HOLLOW パッケージパラメータは、パッケージがすべてのゾーンにインストールされ、かつすべてのゾーンで同一であることが求められる場合、そのパッケージをすべての非大域ゾーン内で可視にするべきかどうかを定義します。
SUNW_PKG_HOLLOW パッケージパラメータは、2 つの値 true、false のいずれかを取ります。
SUNW_PKG_HOLLOW が設定されていないか、または true および false 以外の値に設定されている場合、値 false が使用されます。
SUNW_PKG_ALLZONES が false に設定されている場合、SUNW_PKG_HOLLOW パラメータは無視されます。
SUNW_PKG_ALLZONES が false に設定されている場合、SUNW_PKG_HOLLOW を true に設定することはできません。
SUNW_PKG_HOLLOW パッケージパラメータ値については、次の表で説明します。
表 25–3 SUNW_PKG_HOLLOW パッケージパラメータ値
SUNW_PKG_THISZONE パッケージパラメータは、パッケージを現在のゾーン (大域ゾーン、非大域ゾーンのいずれか) だけにインストールする必要があるかどうかを定義します。SUNW_PKG_THISZONE パッケージパラメータに設定可能な値は 2 つあります。その値は、true および false です。デフォルト値は false です。
SUNW_PKG_THISZONE パッケージパラメータの値については、次の表で説明します。
表 25–4 SUNW_PKG_THISZONE パッケージパラメータの値
pkginfo ユーティリティー (pkginfo(1) のマニュアルページを参照) は、ゾーンがインストールされている Solaris システムでのソフトウェアパッケージデータベースの照会をサポートします。データベースの詳細は、「製品データベース」を参照してください。
大域ゾーンで、pkginfo ユーティリティーを使用すると、大域ゾーン内だけでソフトウェアパッケージデータベースを照会できます。非大域ゾーンで pkginfo ユーティリティーを使用すると、非大域ゾーン内だけでソフトウェアパッケージデータベースを照会できます。
パッチ情報:
識別情報 (パッチのバージョンおよびパッチ ID)
適用対象 (オペレーティングシステムの種類、バージョン、およびアーキテクチャー)
依存関係 (必須や廃止など)
プロパティー (適用後にリブートが必要、など)
パッチを適用する 1 つ以上のパッケージ。各パッケージには次のものが含まれます。
パッチを適用可能なパッケージのバージョン
パッチ情報 (ID、廃止、必須など)
パッチの適用されるパッケージの 1 つ以上の構成要素
patchadd コマンドを使用してパッチを適用する場合、稼働中のシステムにパッチを適用可能かどうかの判別にパッチ情報が使用されます。適用不可と判別された場合、パッチは適用されません。パッチの依存関係も、システムのすべてのゾーンに対して検査されます。必須の依存関係のいずれかが満たされない場合、パッチは適用されません。これには、以降のバージョンのパッチがインストール済みである場合も含まれます。
パッチに含まれる各パッケージも検査されます。パッケージがどのゾーンにもインストールされない場合、そのパッケージは省略され、パッチは適用されません。
すべての依存関係が満たされる場合、いずれかのゾーンにインストールされるパッチ内のパッケージすべてが、システムへのパッチ適用に使用されます。パッケージおよびパッチデータベースの更新も行われます。
Solaris 10 3/05 から Solaris 10 11/06: pkgadd -G を使ってインストールされたパッケージや pkginfo 設定が SUNW_PKG_THISZONE=true になっているパッケージにパッチを当てる「唯一の」方法は、patchadd -G を実行する方法です。この制限は Solaris 8/07 リリースで削除されています。
パッチ 119254-41 および 119255-41 以降、patchadd と patchrm のパッチインストールユーティリティーが変更され、機能を提供する特定のパッチの処理方法が変わりました。この変更は、これらのパッチをどの Solaris 10 リリースにインストールする場合にも影響を与えます。これらの遅延起動パッチによって、Solaris 10 3/05 リリース以降の各 Solaris 10 リリースに関連するカーネルパッチなどの機能パッチで提供される、大規模な変更の処理能力が向上します。
遅延起動パッチは、実行中のシステムの安定性を保証するためにループバックファイルシステム (lofs) を使用します。パッチが実行中のシステムに適用されると、lofs はパッチプロセス中の安定性を保持します。これらの大規模なカーネルパッチは必ずリブートを必要としますが、この必須リブートで lofs による変更がアクティブ化されるようになりました。パッチの README には、どのパッチでリブートが必要になるかが説明されています。
非大域ゾーンを実行しているか、lofs を無効にしている場合は、遅延起動パッチをインストールまたは削除する際に次の点を考慮してください。
このパッチ操作を行うには、すべての非大域ゾーンが停止される必要があります。パッチを適用する前に非大域ゾーンを停止してください。
遅延起動パッチには、ループバックファイルシステム (lofs) が必要です。Sun Cluster 3.1 または Sun Cluster 3.2 を実行しているシステムでは、lofs が有効になっていると HA-NFS 機能が制限されるため、lofs がオフになっている可能性があります。このため、遅延起動パッチをインストールする前に、/etc/system ファイルの次の行を削除するかコメントにして、ループバックファイルシステムを再び有効にする必要があります。
exclude:lofs |
その次に、システムをリブートしてパッチをインストールします。パッチのインストール操作を完了した後、/etc/system ファイルから同じ行を復元するか、コメントを解除します。そのあと通常の操作を再開するにはリブートする必要があります。
Solaris Live Upgrade を使用してパッチの管理を行うと、実行中のシステムへのパッチに関連する問題を防ぐことができます。Solaris Live Upgrade は、パッチの適用に伴う停止時間を短縮し、問題発生時のフォールバック機能を提供してリスクを低減します。システムがまだ本稼働していても、アクティブでない起動環境 (BE) にパッチを適用したり、新しい BE で問題が発見された場合、元の BE に戻って起動することができます。『Oracle Solaris 10 9/10 インストールガイド (Solaris Live Upgrade とアップグレードの計画)』の「パッケージまたはパッチによるシステムのアップグレード」を参照してください。
ゾーンの並列パッチは、標準の Solaris 10 パッチユーティリティーの拡張機能です。これは、Solaris 10 システム上の非大域ゾーンにパッチを適用するための方法であり、サポート対象に含まれます。この機能を使用すると、並列で非大域ゾーンへパッチを適用することにより、パッチ適用のパフォーマンスを高めます。
Solaris 10 10/09 より前のリリースでは、この機能は、119254-66 以降のリビジョン (SPARC) および 119255-66 以降のリビジョン (x86) のパッチユーティリティーのパッチで提供されます。
並列でパッチを適用する非大域ゾーンの最大数は patchadd, /etc/patch/pdo.conf の新しい構成ファイルに設定できます。このパッチのリビジョン 66 以降は、すべての Solaris 10 システムおよび Sun xVM Ops Center など高いレベルのパッチ自動化ツールで機能します。
ただし、最初にパッチを適用する必要があるのは大域ゾーンです。大域ゾーンへのパッチの適用が終了した時点で、num_proc= に設定されている数の非大域ゾーンに対して一緒にパッチの適用が行われます。最大数は、オンライン CPU の数の 1.5 倍であり、システム上の実際の非大域ゾーンの数まで設定できます。
次の例を参考にしてください。
オンライン CPU の数は 4 つです。
設定は num_proc=6 です。
システム上にこの数を超える非大域ゾーンがある場合は、最初の 6 つに並列でパッチを適用し、その後、最初のグループへのパッチの適用プロセスが終了すると、残りの非大域ゾーンにパッチが適用されます。
Solaris Live Upgrade とパッチを管理するこの新しいパッチを使用すれば、問題が発生した場合にフォールバック機能が使用できます。システムがまだ本稼働していても、アクティブでない起動環境 (BE) にパッチを適用したり、新しい BE で問題が発見された場合、元の BE に戻って起動することができます。
『「Solaris 10 10/09: 非大域ゾーンに並列でパッチを適用する方法」』も参照してください。
ホストに新しくインストールされた非大域ゾーンで表示される内容と一致するように、ゾーンのすべてのパッケージをすばやく更新するには、大域ゾーンにパッチを適用する間は各ゾーンを切り離しておき、適用後に -U オプションを使用して再接続して、大域ゾーンのレベルと一致させます。詳細は、「パッチ適用のソリューションとして、接続時更新を使用する」を参照してください。
大域ゾーンで適用されるすべてのパッチが、すべてのゾーンで適用されます。非大域ゾーンをインストールする際も、大域ゾーンと同じパッチレベルでパッチが適用されます。大域ゾーンにパッチを適用する際、すべての非大域ゾーンで同様にパッチが適用されます。この処理により、すべてのゾーンにわたって同じパッチレベルが維持されます。
patchadd(1M) のマニュアルページに記載されているように、patchadd システムユーティリティーを使用して、ゾーンがインストールされているシステムにパッチを追加できます。
パッチを大域ゾーンおよびすべての非大域ゾーンに追加するには、大域ゾーン内で大域管理者として patchadd を実行します。
大域ゾーンで patchadd を使用する場合、次の条件が両方適用されます。
patchadd ユーティリティーは、パッチを大域ゾーンおよびすべての非大域ゾーンだけに追加できます。これはデフォルトの動作です。
patchadd ユーティリティーは、パッチを大域ゾーンだけ、または非大域ゾーンの一部に追加することはできません。
パッチを大域ゾーンおよびすべての非大域ゾーンに追加する際、大域ゾーンから共有される領域にパッチが影響を及ぼすかどうかを意識する必要はありません。
patchadd ユーティリティーにより、次の手順が実行されます。
パッチが大域ゾーンに追加されます。
大域ゾーンのパッチデータベースが更新されます。
パッチが各非大域ゾーンに追加されます。
各非大域ゾーンのパッチデータベースが更新されます。
ゾーン管理者が非大域ゾーン内で patchadd を使用する場合、そのゾーンにパッチを追加する用途だけにコマンドを使用できます。次の場合に、パッチを非大域ゾーンに追加できます。
パッチが大域ゾーンから共有されるゾーンのどの領域にも影響を及ぼさない。
パッチ内部のパッケージすべてが SUNW_PKG_ALLZONES=false に設定されている。
patchadd ユーティリティーにより、次の手順が実行されます。
パッチがゾーンに追加されます。
ゾーンのパッチデータベースが更新されます。
次に、大域ゾーンおよび非大域ゾーンにパッチを追加する際の -G オプションと SUNW_PKG_ALLZONES 変数の相互作用について説明します。
SUNW_PKG_ALLZONES=TRUE に設定されているパッケージがある場合、この使用法の結果はエラーとなり、処理は行われません。
SUNW_PKG_ALLZONES=TRUE に設定されているパッケージがない場合は、大域ゾーンのパッケージだけにパッチが適用されます。
SUNW_PKG_ALLZONES=TRUE に設定されているパッケージがある場合は、すべてのゾーンにあるそれらのパッケージにパッチが適用されます。
SUNW_PKG_ALLZONES=TRUE に設定されていないパッケージがある場合は、該当するすべてのゾーンにあるそれらのパッケージにパッチが適用されます。「大域ゾーンのみ」のパッケージは、大域ゾーンだけにインストールされます。
SUNW_PKG_ALLZONES=TRUE に設定されているパッケージがある場合、この使用法の結果はエラーとなり、処理は行われません。
SUNW_PKG_ALLZONES=TRUE に設定されているパッケージがない場合は、非大域ゾーンのパッケージだけにパッチが適用されます。
patchrm システムユーティリティー (patchrm(1M) のマニュアルページを参照) を使用して、ゾーンがインストールされているシステムでパッチを削除します。
大域ゾーン管理者として大域ゾーン内で patchrm ユーティリティーを使用して、パッチを削除できます。patchrm ユーティリティーは、大域ゾーンのみ、または非大域ゾーンの一部からパッチを削除することはできません。
ゾーン管理者として非大域ゾーン内で patchrm ユーティリティーを使用すると、その非大域ゾーンだけを対象としてパッチの削除を実行できます。共有されている領域がパッチの影響を受けることはありません。
各ゾーンの個別パッケージ、パッチ、および製品レジストリデータベースには、そのゾーンで使用可能なインストール済みのソフトウェアすべてが記載されています。インストールする追加ソフトウェアまたはパッチの依存性検査はすべて、パッケージまたはパッチが大域ゾーンおよび 1 つ以上の非大域ゾーンでインストールまたは削除中でない限り、ほかのゾーンのデータベースに一切アクセスすることなく実行されます。パッケージまたはパッチが大域ゾーンおよび 1 つ以上の非大域ゾーンでインストールまたは削除中の場合は、適切な非大域ゾーンデータベースにアクセスする必要があります。
データベースの詳細については、pkgadm(1M) のマニュアルページを参照してください。