更新する前に、次の手順を実行してください。
ライセンスを確認します。Displaying License Requirementsは、そのライセンスに同意する必要があるパッケージを一覧表示する方法について説明します。これらのパッケージをインストールまたは更新するには、--accept オプションを指定しなければならない場合があります。Displaying Package Licensesは、ライセンステキストを表示する方法について説明しています。
リリースノートを読みます。Oracle Solaris リリースのリリースノートは、docs.oracle.com にあります。SRU のリリースノートは、support.oracle.com にあります。
構成済みのパブリッシャーの起点から使用可能なパッケージバージョンを確認します。Check Available Versionsを参照してください。パブリッシャーに対して pkg refresh コマンドを実行するか、起点の場所で pkgrepo refresh コマンドを実行することが必要な場合もあります。独自のリポジトリを作成する場合は、部分的なリポジトリを作成しないでください。Copying and Creating Package Repositories in Oracle Solaris 11.3の説明に従って、完全なリポジトリを作成してください。
-nv オプションを指定して pkg update コマンドを使用することで、実際には更新を実行せずに、更新されるパッケージのリストを表示します。Preview the Update Operationを参照してください。
更新の際は、Specify a New Boot Environmentに記載されているように、--be-name または --require-new-be オプションを使用して、現在のブート環境ではなく新規ブート環境で変更を行います。
更新が失敗した場合は、Troubleshooting Package Installation and Updateを確認してください。
更新後に、インストールされているパッケージを確認します。
$ beadm mount name-of-new-BE /mnt $ pkg -R /mnt verify -v
エラーが報告されている場合は、pkg fix コマンドを使用して、エラーが修正されていることを確認します。
$ pkg -R /mnt fix -v $ pkg -R /mnt verify -v
BE を必ずアンマウントしてください。
$ beadm unmount name-of-new-BE
更新済みまたはインストール済みのパッケージでリリースノートが報告されているかどうかを確認するには、pkg history コマンドで -N オプションを使用します。
Applying Support Updatesの説明に従って、すべてのサポート更新を適用してシステムを常に最新にします。「Oracle Solaris バイナリおよびソース保証プログラム」(ドキュメント ID 1391762.1) は、リリースの境界を越える更新のリスクが低いことを保証します。
オペレーティングシステムのリリースを更新する場合は、pkg:/entire 制約パッケージの入手可能なバージョンを確認します。次のコマンドは、Oracle Solaris 11 11/11 SRU 10 がインストールされており、Oracle Solaris 11 11/11 SRU 11、12、および 13 が入手可能であり、さらに現在構成されている solaris パブリッシャーから Oracle Solaris 11.1 が入手可能であることを示しています。FMRI 内のフィールドについては、Fault Management Resource Identifiersを参照してください。
$ pkg list -af entire NAME (PUBLISHER) VERSION IFO entire 0.5.11,5.11-0.175.1.0.0.24.2 --- entire 0.5.11,5.11-0.175.0.13.0.4.0 --- entire 0.5.11,5.11-0.175.0.12.0.4.0 --- entire 0.5.11,5.11-0.175.0.11.0.4.1 --- entire 0.5.11,5.11-0.175.0.10.0.5.0 i--
これらの中に必要なバージョンがない場合は、solaris パブリッシャー起点を別のパッケージリポジトリの場所に設定する必要があります。
デフォルトでは、各パッケージは、現在インストールされているバージョンを提供したパブリッシャーから更新されます。パブリッシャーのスティッキネスと検索順を指定することにより、パッケージを提供するパブリッシャーを制御できます。Adding, Modifying, or Removing Package Publishersを参照してください。
システムは、システムに現在インストールされているパッケージを提供するパッケージリポジトリにアクセスできる必要があります。たとえば、Oracle Solaris 11.2 から Oracle Solaris 11.3 に更新する場合は、solaris パブリッシャーに、インストールされている Oracle Solaris 11.2 パッケージと目的の Oracle Solaris 11.3 パッケージの両方へのアクセスが構成されている必要があります。パッケージが ha-cluster や solarisstudio などの別のパブリッシャーからインストールされている場合は、それらのパブリッシャーにも現在インストールされているパッケージに加えて目的の新しいパッケージへのアクセスが構成されている必要があります。
ほとんどの更新エラーの原因は不完全なパッケージリポジトリです。Best Practices for Creating and Using Local IPS Package Repositories in Copying and Creating Package Repositories in Oracle Solaris 11.3を参照してください。
Oracle Solaris パッケージリポジトリに、そのリポジトリ内の pkg:/entire の最新のバージョンよりも新しいオープンソースソフトウェアのバージョンが含まれている場合があります。たとえば、次のパッケージはすべて同じ Oracle Solaris パッケージリポジトリから使用できる場合があります。
entire 0.5.11-0.175.3.1.0.5.0 runtime/python-26 2.6.8-0.175.3.0.0.30.0 runtime/python-27 2.7.11-5.12.0.0.0.95.0 runtime/python-27 2.7.11-5.12.0.0.0.90.0 runtime/python-27 2.7.9-0.175.3.0.0.30.0 runtime/python-34 3.4.4-5.12.0.0.0.95.0 runtime/python-34 3.4.3-5.12.0.0.0.90.0 runtime/python-34 3.4.3-0.175.3.0.0.30.0 runtime/python-35 3.5.1-5.12.0.0.0.95.0 runtime/python-35 3.5.1-5.12.0.0.0.90.0
runtime/python-26、runtime/python-27、および runtime/python-34 の 0.175.3.0.0.30.0 バージョンが、 (userland-incorporation@0.5.11-0.175.3.1.0.3.0 によって) オペレーティングシステムバージョン 0.175.3.1.0.5.0 に組み込まれています。これらのパッケージと runtime/python-35 の新しいバージョンはリポジトリから使用できます。version-lock ファセットをロック解除すると、これらの新しいバージョンをインストールできます。詳細な手順については、使用可能な FOSS コンポーネントを判断する方法のドキュメントを参照してください。いくつかの使用可能な FOSS コンポーネントのリスト、および FOSS コンポーネント関連のハウツー記事については、Oracle Solaris での FOSS に関する記事を参照してください。
次のコマンドは、更新によって実際にどのパッケージがインストールされるか (存在する場合) を示しています。-v オプションが指定されているため、このコマンドは、完全な FMRI (複数のバージョンを含む) の 627 のすべてのパッケージが更新され、3 つのパッケージが削除され、1 つの新しいパッケージがインストールされることを示しています。この例では、その出力のほとんどが省略され、entire パッケージのみが示されています。-n オプションが指定されているため、実際に更新は実行されません。-n オプションなしで更新を実行する前に、この出力を確認してください。
$ pkg update -nv Packages to remove: 3 Packages to install: 1 Packages to update: 627 Estimated space available: 48.43 GB Estimated space to be consumed: 3.14 GB Create boot environment: Yes Activate boot environment: Yes Create backup boot environment: No Rebuild boot archive: Yes Changed packages: solaris ... entire 0.5.11,5.11-0.175.0.10.0.5.0:20120803T182627Z -> 0.5.11,5.11-0.175.1.0.0.24.2:20120919T190135Z ...
前の例は、Oracle Solaris 11.1 の pkg:/entire 制約パッケージがインストールされることを示しています。
それに応じて、entire 制約パッケージによって制約されているすべてのインストール済みパッケージが更新されます。
パッケージ FMRI が指定されなかったため、entire 制約パッケージによって制約されていないインストール済みパッケージもすべて更新されます。すべてのインストール済みパッケージが、システムの制約で許可された最新バージョンに更新されます。この制約は、インストール済みパッケージの依存関係およびパブリッシャーの構成によってシステムに課せられるものです。
更新されたインストール済みパッケージで新しい依存関係が指定されている場合は、インストール済みパッケージが削除され、新しいパッケージがインストールされる可能性があります。
Preview the Update Operationの例では、-n オプションなしでこのコマンドを実行した場合、この更新に対して新規 BE が作成されることを示しています。-n オプションなしでこのコマンドを実行した場合は、更新出力の最後に次のメッセージが表示されます。
A clone of currentBE exists and has been updated and activated. On the next boot the Boot Environment newBE will be mounted on '/'. Reboot when ready to switch to this updated BE.
現在の BE は変更されません。すべての変更は新しい BE で行われます。
新しい BE を明示的に指定することは、インストールまたは更新のもっとも安全な方法です。BE が作成される状況については、Boot Environment Policy Image Propertiesを参照してください。--be-name オプションを使用すると、新しい BE にわかりやすい名前を付けることもできます。新しい BE がアクティブになるため、次回システムをブートしたときにはこの新しい環境がデフォルトでブートされます。次回のリブートで新規 BE をデフォルトにしないようにする場合、pkg update コマンドで --no-be-activate オプションを使用します。beadm activate コマンドを使用して、デフォルトブート BE をいつでも変更できます。ブート環境オプションの詳細については、Boot Environment Optionsを参照してください。
新規 BE に問題がなければ、古い BE を破棄してかまいません。