名前 | 形式 | 機能説明 | サブコマンド | オプション | オペランド | 使用例 | 使用上の留意点 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項
prodreg [--help] | [subcommand operand …]
prodreg は、Solaris Product Registry のコンポーネントのブラウズ、登録解除、およびアンインストールに使用するユーティリティです。
一部のインストーラは、libwsreg(3LIB) を使って情報を登録します。Solaris Product Registry には、このインストール済みソフトウェアに関する情報が含まれています。
Solaris Product Registry のデータベースのパスは、インストール済みファイルシステムのルートを基点としています (通常、ファイルシステムのルートを基点とする場合はスラッシュ (/) で始まります)。ただし、Live Upgrade インストールの実行時には、代替ルートを基点とする異なった Solaris Product Registry インストールデータベースが使用されることがあります。live_upgrade(5) を参照してください。
Registry データベースは、インストーラに、インストール済みソフトウェアの情報を伝達します。Registry や prodreg ユーティリティが直接インストールまたはアンインストールを実行することはありません。prodreg は、prodreg 自体またはその他の方法で起動され、外部で実行されるインストーラをサポートします。
prodreg コマンドでは、サブコマンドを使って、コマンド行または GUI ビューアと同等の機能を使用できます。GUI ビューアには 2 つのバージョンがあります。1 つは Java Swing GUI (デフォルト)、もう 1 つは Java AWT GUI です。後者は、Java Swing がサポートされていない環境で使用します。
unregister サブコマンドは、CLI (コマンド行インタフェース) からは実行できても GUI からは実行できない唯一の機能です。たとえば、アンインストーラを使用せずに手動でソフトウェアを削除した場合、Product Registry に破損が生じる可能性があります。削除されたソフトウェアのエントリが、この後に実行されるインストーラを混乱させることがあるためです。このような場合は、unregister サブコマンドを使って無効なエントリを強制的に削除します。再帰オプションや強制オプションを使用してソフトウェアの登録を解除するときは、Registry 内の有効なエントリを誤って削除しないように注意してください。
prodreg コマンドは、あくまでも、その時点の Registry の内容を表示するものです。これは、GUI から起動した場合もコマンド行インタフェースブラウザから起動した場合も変わりません。prodreg ビューアの起動後または起動と同時に、ソフトウェアをインストールまたはアンインストールした場合、コマンドの出力結果と実際の Solaris Product Registry の内容が一致しなくなることがあります。
prodreg コマンドには、サブコマンドを指定せずにオプションを指定できます。サブコマンドの指定を省略すると、swing サブコマンドが指定されたものと見なされます。
サポートされているサブコマンドは次のとおりです。
Java awt GUI を起動します。
awt サブコマンドの形式は次のとおりです。
awt [-R alt_root | --help] |
コマンド行インタフェースから、テキスト形式で Solaris Product Registry の内容を表示します。この出力結果から、Product Registry ツリー内のすべてのコンポーネントの情報を、親コンポーネントおよび子コンポーネントの情報を含めて確認できます。このサブコマンドを繰り返し指定することにより、Product Registry 内を対話的にブラウズできます。
データベースコンポーネントはツリー形式で表され、1 つ以上の子コンポーネントを持つ場合もあります。ルート以外のコンポーネントは、親コンポーネントを 1 つ持ちます。このサブコマンドを実行すると、Solaris Product Registry データベース内の指定のコンポーネントの親コンポーネントおよび子コンポーネントが表示されます。
prodreg browse サブコマンドを実行するたびに、Registry 内のコンポーネントとその子コンポーネント、さらにそのコンポーネントからルートに至る親 (祖先) コンポーネントが表示されます。prodreg GUI を使用する場合は、任意のノードを選択し、クリックして展開します。コマンド行インタフェースでも同様の処理が可能です。あるノードの子ノードを順番にブラウズしていくことで、Registry を展開できます。
prodreg browse コマンドを実行して、まず Registry のルートをブラウズします。その後、コンポーネントを順に選択して、ブラウズする範囲を展開していきます。このように対話形式でブラウズする場合はブラウズ番号を指定すると便利ですが、スクリプト内に指定することはできません。ブラウズ番号は、セッションまたは使用するシステムごとに異なります。なぜなら、ブラウズ番号は、特定のシステム上で特定のユーザーによって最初に使用されるときに生成されるものだからです。
browse サブコマンドの形式は次のとおりです。
browse [-R alt_root] [-u uuid [-i instance | -p location]] browse [-R alt_root] -n bnum [-i instance | -p location] browse [-R alt_root] -m name browse --help |
各コンポーネントについて、次の情報が出力されます。
コンポーネントのブラウズ番号です。prodreg browse や info サブコマンドの引数として使用できます。
子コンポーネントがすべて非表示になっているコンポーネントは、「+」で表されます。1 個以上の子コンポーネントが表示されているコンポーネントは、「-」で表されます。子コンポーネントを持たないコンポーネントは、「.」で表されます。下の世代のコンポーネントほど、フィールド内の記号の位置が右寄りに表示されます。
コンポーネントの一意の識別子です。
コンポーネントのインスタンス番号です。ソフトウェアコンポーネントは複数回インストールできます。ソフトウェアレジストリによって、各コンポーネントに 1 つずつ一意のインスタンスが割り当てられます。
Solaris Product Registry データベース内の各コンポーネントに割り当てられている、各言語対応の名前です。この名前は、Registry 内で一意とは限りません。同じ名前を持つコンポーネントが複数存在している可能性があります。
browse サブコマンドで Registry データベースを表示するときは、4 種類のオプションを指定できます。あるコンポーネントに複数のインスタンスがある場合、どのインスタンスの情報が出力されたのか判別できないことがあります。要求は明確にする必要があります。-u オプションや -n オプションを使って、オペランド instance または location を指定すると、出力する情報を明確にできます。
オペランド情報の指定がない場合は、レジストリツリーのルートとその子コンポーネントが表示されます。ここを起点にして、対話形式で Registry データベース全体をブラウズできます。
ブラウズ番号が指定された場合は、該当コンポーネントが表示されます。
uuid が指定された場合は、該当コンポーネントが表示されます。
名前が指定された場合は、該当コンポーネントが表示されます。
コンポーネントの識別情報を指定して、その属性を表示します。Solaris Product Registry 内のすべてのコンポーネントについて情報を表示できます。
Product Registry 内のコンポーネントは属性を持ちます。これらの属性は、name 文字列と単一の value 文字列から構成されています。
このサブコマンドは、Solaris Product Registry 内のコンポーネントの属性情報を出力します。コンポーネントの指定方法は、UUID、名前、ブラウズ番号のいずれかを必ず指定するという点を除けば、browse サブコマンドの場合と同じです。
このサブコマンドで指定したコンポーネントが複数のインスタンスを持つ場合や、Registry 内に同じ名前のコンポーネントが複数存在する場合は、コンポーネントの指定があいまいになります。このような場合、属性情報ではなく、指定した条件に合致するコンポーネントの一覧が出力されます。
デフォルトでは、コンポーネントの属性が 1 行に 1 つずつ出力されます。まず属性名に続いてコロン (:) と空白文字が出力され、RETURN キーを押すと属性値が出力されます。その他、指定できるオプションとして、-a および -d があります。
info サブコマンドの形式は次のとおりです。
info --help info [-R alt_root] -u uuid [-i instance | -p location] info [-R alt_root] -n bnum [-i instance | -p location] info [-R alt_root] -m name [-a attr | -d ] |
ヘルプテキストを表示します。
help サブコマンドの形式は次のとおりです。
help | --help | -? |
Java Swing GUI を起動します。Java Swing GUI を使用できない環境では失敗します。
swing サブコマンドの形式は次のとおりです。
swing [-R alt_root | --help] |
現在のバージョン文字列を出力します。
version サブコマンドの形式は次のとおりです。
version | --version | -V |
Registry 内のエントリの登録を解除します。
Solaris Product Registry からコンポーネントを削除します。-u オプションで指定した UUID に対応するコンポーネントは、単一のインスタンスである必要があります。同じ UUID のコンポーネントが複数存在する場合、削除処理は実行されません。代わりに、指定した UUID に一致するインスタンスの一覧が表示されます。この場合は、登録を解除するコンポーネントインスタンスを一意に指定できる -p または -i オプションを使って、サブコマンドを再発行してください。
Registry 内に、登録を解除しようとするコンポーネントに依存するコンポーネントが存在する場合、unregister サブコマンドは失敗します。
ユーザーが Registry に対する書き込み権を持っていない場合、unregister サブコマンドは失敗します。これについては、wsreg_can_access_registry(3WSREG) を参照してください。ユーザーが Solaris Product Registry に登録されたコンポーネントではなくシステムコンポーネントの登録を解除しようとした場合、unregister サブコマンドは失敗します。システムコンポーネントに該当するのは、PKG 属性を持つコンポーネントと、いくつかの特別な Registry ノードです。次にその一部を紹介します。
UUID Name ==================================== ============================= root System Registry a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b Solaris System Software 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b Unclassified Software b96ae9a9-1dd1-11b2-a3f2-0800209a5b6b System Software Localizations b1c43601-1dd1-11b2-a3f2-0800209a5b6b Additional System Software a8dcab4f-1dd1-11b2-a3f2-0800209a5b6b Software Localizations |
unregister サブコマンドの -f オプションを使用するときは、これから登録を解除するコンポーネントに依存するコンポーネントがないかどうかを事前に注意深く確認してください。-r オプションは、-f オプション以上に注意を要するオプションです。このオプションを指定してコンポーネントの登録を解除すると、そのコンポーネントに依存するすべての子コンポーネントおよびソフトウェアコンポーネントの登録が解除されます。依存コンポーネントを確認するには、次のコマンドを使用します (uuid には UUID を指定)。
prodreg info -u uuid -a "Dependent Components" |
必須コンポーネントを確認するには、次のコマンドを使用します。
prodreg info -u <uuid> -a "Required Components" |
コンポーネントの名前、UUID、およびインスタンスが出力されます。
unregister サブコマンドの形式は次のとおりです。
unregister [-R alt_root] [-fr] -u uuid [-p location | -i instance] unregister --help |
アンインストールプログラムを起動します。
Registry 内のコンポーネントが個別にアンインストーラを備えている場合があります。-u オプションでコンポーネントを指定すると、そのアンインストーラが起動します。この指定は、アンインストーラを持たないコンポーネントに対しては無効です。-u オプションで指定された UUID を持つコンポーネントが複数存在する (そのコンポーネントのインスタンスが複数インストールされている) 場合、該当するコンポーネントインスタンスの一覧が出力されます。このように -u オプションで指定された UUID があいまいな場合は、-i または -p オプションを指定して、サブコマンドを再発行してください。ただし、これらからアンインストールするコンポーネントに依存するコンポーネントが存在する場合、コマンドは失敗します。
-x オプションを指定してアンインストーラを起動することもできます。この場合、依存コンポーネントを持つコンポーネントをアンインストールするかどうかの確認は行われません。
ユーザーが Registry に対する書き込み権を持っていない場合、uninstall コマンドは実行されません。これについては、wsreg_can_access_registry(3WSREG) を参照してください。
uninstall コマンドの形式は次のとおりです。
uninstall [-R alt_root] [-f] -u uuid -p location uninstall [-R alt_root] -i instance[arguments ...] uninstall --help |
awt サブコマンドは次のオプションをサポートします。
ヘルプテキストを表示します。ビューアは起動しません。
指定された代替ルートを使って、GUI ビューアに表示するデータベースの場所を決定します。
alt_root の仕様については、「オペランド」を参照してください。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
browse サブコマンドは次のオプションをサポートします。
ヘルプテキストを表示します。browse サブコマンドは実行しません。
指定されたコンポーネントインスタンスを出力します。
指定された名前のコンポーネントインスタンスを出力します。
指定されたブラウズ番号のコンポーネントインスタンスを出力します。
指定された位置にインストールされているコンポーネントインスタンスを出力します。コンポーネントがインストールされている位置を確認するには、info サブコマンドを使用します。
指定された代替ルートを使って、データベースの場所を決定します。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
指定された UUID のコンポーネントインスタンスを出力します。
info サブコマンドは次のオプションをサポートします。
オペランド attr で指定された属性だけを出力します。指定されたコンポーネントの属性をすべて出力するわけではありません。
isDamaged という名前の属性だけを出力します。指定されたコンポーネントの属性をすべて出力するわけではありません。値が true に設定されている場合、この属性は Registry 内のコンポーネントを示します。
ヘルプテキストを出力します。info サブコマンドは実行しません。
オペランド instance により、同じ uuid またはブラウズ番号を持つ複数のコンポーネントインスタンスを識別します。
オペランド name により、Registry 内の 1 つ以上のコンポーネントを指定します。
ブラウズ番号 bnum のコンポーネントインスタンスの属性を出力します。該当するインスタンスが複数存在する場合は、-i または -p オプションを指定して、あいまいさを解決する必要があります。
インストール先を指定して、同じ UUID またはブラウズ番号を持つ複数のコンポーネントインスタンスを識別します。
指定された代替ルートを使って、データベースの場所を決定します。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
指定された UUID を持つコンポーネントインスタンスの属性を出力します。該当するインスタンスが複数存在する場合は、-i または -p オプションを指定して、あいまいさを解決する必要があります。
swing サブコマンドは次のオプションをサポートします。
ヘルプテキストを出力します。swing サブコマンドは実行しません。
指定された代替ルートを使って、データベースの場所を決定します。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
uninstall サブコマンドは次のオプションをサポートします。
強制的にアンインストールを行います。指定された UUID を持つコンポーネントインスタンスが複数存在する場合は、該当するすべてのコンポーネントインスタンスをアンインストールします。
ヘルプテキストを出力します。unregister サブコマンドは実行しません。
指定された UUID のあいまいさを解決します。
指定された UUID のあいまいさを解決します。location には、ソフトウェアコンポーネントがインストールされている位置を指定します。
指定された代替ルートを使って、データベースの場所を決定します。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
指定された UUID を持つコンポーネントの登録を解除します。同じ UUID を持つコンポーネントが複数回インストールされている場合は、-i または -p オプションを使って、指定のあいまいさを解決します。
unregister サブコマンドは次のオプションをサポートします。
強制的に登録を解除します。指定されたコンポーネントに依存するコンポーネントが存在する場合も登録を解除します。
ヘルプテキストを出力します。unregister サブコマンドは実行しません。
指定された UUID のあいまいさを解決します。
指定された UUID のあいまいさを解決します。location には、ソフトウェアコンポーネントがインストールされている位置を指定します。
指定されたコンポーネントの子コンポーネントと依存コンポーネントを含めて、再帰的にコンポーネントの登録を解除します。
指定された代替ルートを使って、データベースの場所を決定します。
いかなる非大域ゾーンのルートファイルシステムも -R で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
指定された UUID を持つコンポーネントの登録を解除します。同じ UUID を持つコンポーネントが複数回インストールされている場合は、-i または -p オプションを使って、指定のあいまいさを解決します。
次のオペランドを指定できます。
代替ルートを示すファイルのパス名です。Solaris Product Registry データベースは、代替ルートを基点としています。この位置を基点とするデータベースが存在しない場合は、自動的に作成されます。
いかなる非大域ゾーンのルートファイルシステムも alt_root で参照しないでください。この操作によって、大域ゾーンのファイルシステムを損傷したり、大域ゾーンのセキュリティーを損ねたり、非大域ゾーンのファイルシステムを損傷したりする可能性があります。zones(5) のマニュアルページを参照してください。
属性の名前です。このオペランドは、info サブコマンド専用です。attr がコンポーネントに関連している場合、属性名と値が表示されます。
ブラウズ番号です。
Solaris Product Registry の各コンポーネントには、ブラウズ番号が割り当てられます。この番号は、対話形式でブラウズを行うユーザーのために生成されます。ただし、この番号は、システムを再起動または再インストールすると変更されます。この番号を browse または info サブコマンドの補助以外の目的で使用または保存することは避けてください。ブラウズ番号は、prodreg browse サブコマンドを実行すると出力されます。これ以外の値を、browse または info サブコマンドの入力値として指定することはできません。
ソフトウェアは、複数の場所にインストールできます。Solaris Product Registry は、それぞれに一意のインスタンス番号を割り当てます。Registry 内の各コンポーネントのインスタンス番号を表示するには、browse サブコマンドを使用します。このオペランドは、インストール済みソフトウェアの (おそらく同一ではない) 複数のコピーが存在する場合、これらを識別する目的で使用します。
ファイルシステム内の特定のファイルまたはディレクトリのパスです。登録されたソフトウェアのインストール先を示します。たとえば、ソフトウェアのインストール先が /usr/local からの相対位置である場合、このオペランドの値は /usr/local になります。インストール先の情報は、インストーラによって使用されます。インストーラの位置を指定したり、ソフトウェアコンポーネントのインスタンスが複数存在する場合は、指定のあいまいさを解決する目的でも使用されます。
Solaris Product Registry 内の各ソフトウェアコンポーネントには、名前が割り当てられています。この名前は、browse サブコマンドで確認できます。また、一部のサブコマンドではオペランドとしてソフトウェアの名前を指定できます。ただし、こうした名前が一意であるとは限りません。指定された名前のコンポーネントが複数存在する場合、条件に合致するコンポーネントの一覧が出力されます。名前が各言語対応になっている場合、すなわち、言語設定によって名前が異なる場合もあります。
Solaris Product Registry 内の各ソフトウェアコンポーネントには、一意の識別子が割り当てられています。この識別子が、Registry データベース内のエントリにアクセスする際のハンドルになります。UUID は、インストールされているコンポーネントインスタンスの数やコンポーネントの各言語対応の名前に関係なく、そのコンポーネントに対応しています。
ブラウズを実行するには、prodreg の browse サブコマンドを使用します。この要求を繰り返し実行することにより、GUI を使ってコンポーネントおよびそれに含まれるコレクションを展開していく場合と同様に、ツリーの内容を確認することができます。ブラウズ番号を使ったブラウズは、こうした再帰的ブラウズ処理以外では実行しないでください。ブラウズ番号は、ブラウズ操作の結果として生成されるものです。
引数なしで browse サブコマンドを実行すると、Registry のトップからブラウズすることになります。出力内容は、そのシステムにインストールされているソフトウェアによって異なります。
$ prodreg browse BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software |
ルートコンポーネントとその子コンポーネントのブラウズ番号、UUID、インスタンス番号、および名前が出力されます。コンポーネントの祖先 (ルートに至る親コンポーネント) も表示されます。「+/-/.」列は、ツリー内のコンポーネントが展開済みの親コンポーネントであるか (-)、子コンポーネントを持つ子コンポーネントであるか (+)、子コンポーネントを持たないコンポーネントであるか (.) を示します。
UUID、名前、およびブラウズ番号の各フィールドを使って、ツリー内のコンポーネントの情報を要求できます。次の例では、UUID を指定してコンポーネントをブラウズします。
$ prodreg browse -u a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = =========== 1 - root 1 System Registry 2 - a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 4 + b96ae9a9-1dd1-11b2-a3f2-0800209a5b6b 1 System Software Localizations 5 + SUNWCall 1 Entire Distribution |
次の例では、名前を指定してノードをブラウズします。
$ prodreg browse -m "System Software Localizations" BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = =========== 1 - root 1 System Registry 2 - a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 4 - b96ae9a9-1dd1-11b2-a3f2-0800209a5b6b 1 System Software Localizations 316 . SUNWceuow 1 Central Europe OW Support 317 . SUNWcsfw 1 Simplified Chinese freeware message 318 . SUNWceuox 1 Central Europe 64-bit OS Support |
追加出力は省略されています。再帰的ブラウズには、ブラウズ番号を使用すると便利です。ブラウズ番号は、prodreg コマンドを実行するシステム、コマンドを実行するユーザー、およびコマンドを実行するログインセッションによって異なるため、保存できません。
$ prodreg browse -n 3 BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = =========== 1 - root 1 System Registry 2 - a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 5 - SUNWCall 1 Entire Software Distribution 6 . SUNWrsmo 1 RSMPI Operations Registration Module 7 + SUNWCjvx 1 JavaVM (64-bit) 8 . SUNWrsmx 1 Remote Shared Memory (64-bit) 9 + SUNWCacc 1 System Accounting |
要求された値があいまいな場合、条件に合致するインスタンスの一覧が表示されます。次の例では、同じ名前を持つ異なったソフトウェアコンポーネントが 2 つ存在します。
$ ./prodreg browse -m JavaVM The request failed because multiple components correspond to the criteria given. Use the list of possible components given below, select one and try again. BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = =========== 12 . org.spybeam.javavm 1 JavaVM 51 . SUNWCjv 1 JavaVM |
次のいずれかの要求を再発行してください。
$ prodreg browse -u SUNWCjv |
または
$ prodreg browse -u org.spybeam.javavm |
特定のソフトウェアコンポーネントが複数回インストールされている場合も、要求があいまいになります。次の例では、Example ソフトウェアが 3 回インストールされています。
$ prodreg browse -m Example The request failed because multiple components correspond to the criteria given. Use the list of possible components given below, select one and try again. BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = =========== 7 . org.spybeam.example 2 Example 7 . org.spybeam.example 3 Example 7 . org.spybeam.example 1 Example The component requested could not be found. |
特定のインスタンスを指定して要求を繰り返し実行することにより、あいまいさを解決できます。-p オプションでインストール先を指定する方法もあります。次の例では、Example ソフトウェアの 1 番目のインスタンスをブラウズします。
$ prodreg browse -u org.spybeam.example -i 1 |
コンポーネントのインストール先やその他の属性情報を取得したい場合は、info サブコマンドを使用します。このサブコマンドにも、あいまいさを解決するオプションを指定できます。実行すると、コンポーネントのすべての属性が 1 行に 1 つずつ出力されます。
$ prodreg info -m Example The request failed because multiple components correspond to the criteria given. Use the list of possible components given below, select one and try again. BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = =========== 7 . org.spybeam.example 2 Example 7 . org.spybeam.example 3 Example 7 . org.spybeam.example 1 Example The component requested could not be found. |
次のコマンドでは、Example コンポーネントのインスタンス 1 の情報がすべて出力されます (出力結果は省略)。
$ prodreg info -u org.spybeam.example -i 1 |
コンポーネントのインストール先やその他の属性情報を取得したい場合は、info サブコマンドを使用します。browse サブコマンドの場合と同様、info サブコマンドにも、あいまいさを解決するオプションを指定できます。info サブコマンドを実行すると、コンポーネントのすべての属性が 1 行に 1 つずつ出力されます。単一の属性を要求することもできます。
次のコマンドでは、インストール先の属性値が出力されます。
$ prodreg info -n 23 -a Location |
所定のアンインストーラを使用せずにインストール済みのソフトウェアを削除すると、Registry 内のソフトウェアが損傷を受ける可能性があります。コンポーネントが損傷を受けた場合、すでに削除されたソフトウェアがまだインストールされているものと認識されます。所定のアンインストーラを実行せずにファイルやパッケージを直接削除すると、同様にコンポーネントが損傷を受けることがあります。通常、次の規則に従う必要があります。インストールプログラムを使ってインストールしたソフトウェアは、所定のアンインストールプログラムを使ってアンインストールする必要があります。
次の例では、損傷を受けたソフトウェアコンポーネントを特定し、再インストールできる状態に修復します。
Examplesoft をブラウズすると、次の内容が出力されます。
$ prodreg browse -m Examplesoft BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software 4 - 95842091-725a-8501-ef29-0472985982be 1 ExampleSoft 233 . 90209809-9785-b89e-c821-0472985982be 1 Example Doc 234 . EXSOzzt 1 235 . EXSOblob 1 Example Data |
Examplesoft の子コンポーネント、EXSOzzt に注目してください。登録済みであるにもかかわらず、ソフトウェアのパッケージコンポーネント名が表示されていません。この場合、Examplesoft ソフトウェアが損傷を受けている可能性があります。次のコマンドで損傷の有無を確認します。
$ prodreg info -u 95842091-725a-8501-ef29-0472985982be \ -i 1 -d isDamaged=TRUE |
isDamaged が TRUE なので、Examplesoft の一部が損傷を受けています。次のコマンドで、Examplesoft を構成するパッケージを一覧表示します。
$ prodreg info \ -u 95842091-725a-8501-ef29-0472985982be\ -i 1 -a PKGS pkgs: EXSOzzt EXSOblob |
pkginfo コマンドで、EXSO がインストールされているかどうかを確認します。
$ pkginfo EXSOzzt ERROR: information for "EXSOzzt" was not found $ pkginfo EXSOblob application EXSOblob Example Data |
一連のコマンドの実行結果から、EXSOzzt パッケージが、おそらく pkgrm コマンドによって削除されていることがわかります。この場合、Examplesoft ソフトウェアは正常に機能しません。ソフトウェアを修復するには、Examplesoft に登録されているアンインストーラを実行する必要があります。アンインストーラは、ソフトウェアの登録を解除し、pkgrm コマンドを実行します。この操作には root ユーザーのアクセス権が必要です。したがって、通常、アンインストーラの実行にも、root ユーザーのアクセス権が必要になります。
# prodreg uninstall -u 95842091-725a-8501-ef29-0472985982be -i 1 The install program requested could not be found. |
アンインストールプログラムにアクセスして、ソフトウェアをアンインストールすることができませんでした。アンインストールプログラムが手動で削除されている可能性があります。そこで、uninstallprogram 属性を要求して、アンインストーラの位置を確認します。
$ prodreg info -m ExampleSoft -a uninstallprogram uninstallprogram: /usr/bin/java -mx64m -classpath /var/sadm/prod/org.example.ExampleSoft/987573587 uninstall_ExampleSoft |
登録された位置にアンインストーラがあるかどうかを確認します。
# ls /var/sadm/prod/org.example.ExampleSoft/987573587 /var/sadm/prod/org.example.ExampleSoft/987573587: No such file or directory |
所定の位置にアンインストーラがない場合、2 通りの対処法があります。1 つは、バックアップストレージからアンインストーラを読み込んで手動で実行する方法です。Registry に格納されているコマンド行を使用してください。
# /usr/bin/java -mmx64m -classpath \ /var/sadm/prod/org.example.ExampleSoft/987573587 \ uninstall_ExampleSoft |
バックアップストレージにない場合は、手動でソフトウェアの登録を解除します。
# prodreg unregister -u 95842091-725a-8501-ef29-0472985982be -i 1 |
このコマンドでは、EXSOblob パッケージは削除されません。手動で行う必要があります。
# pkgrm EXSOblob |
コンポーネント A は子コンポーネント B および C を持ち、子コンポーネント C は子コンポーネント D および E を持っているとします。この例では、これらのコンポーネントを一括削除します。この処理は、コンポーネントの階層全体を再インストールする必要があるときに、アンインストーラが見つからない、あるいは実行できない場合に便利です。
$ prodreg browse -u UUID-of-C BROWSE # +/-/. UUID # NAME ======== ===== ==================================== = ============ 1 - root 1 System Registry 2 + a01ee8dd-1dd1-11b2-a3f2-0800209a5b6b 1 Solaris 10 System Software 3 + 8f64eabf-1dd2-11b2-a3f1-0800209a5b6b 1 Unclassified Software 1423 - UUID-of-A 1 Example A 1436 . UUID-of-B 1 Example B 1437 - UUID-of-C 1 Example C 1462 . UUID-of-D 1 Example D 1463 . UUID-of-E 1 Example E # prodreg uninstall -u UUID-of-A -i 1 |
uninstall サブコマンドが失敗することもあります。たとえば、Java クラスが削除されている、ユーザーのアクセス権が十分でない、システムに Java ソフトウェアがインストールされていない、などの条件下で失敗します。この問題には、再帰的登録解除のコマンドで対処できます。しかし、このコマンドは、対象コンポーネントの子コンポーネントおよび対象コンポーネントに依存するコンポーネントの登録をすべて解除するため、使用に際してはきわめて慎重に臨む必要があります。誤って必要なコンポーネントの登録を解除してしまわないように、対象コンポーネントの全情報をあらかじめ確認しておくことをお勧めします。次の例では、UUID-of-A を指定してコンポーネントの情報を表示します。
$ prodreg info -u UUID-of-A Title: Example A Software Version: 5.8.0.2001.11.02 Location: /usr Vendor: Example Vendor uninstallprogram: /usr/bin/java -mx64m -classpath /var/sadm/prod/org.example.ExampleA/90820965 uninstall_ExampleA vendorurl: http://www.example.org description: Example A Software has many uses Supported Languages: en Child Components: Name UUID # -------------------------- ------------------------------------ - Example B UUID-of-B 1 Example C UUID-of-C 1 Required Components: Name UUID # -------------------------- ------------------------------------ - Example B UUID-of-B 1 Example C UUID-of-C 1 |
「Dependent Components」フィールドが表示されていないので、Example A に依存するソフトウェアは存在しません。念のため、UUID-of-B と UUID-of-C の依存コンポーネントおよび子コンポーネント、UUID-of-B または UUID-of-C の子コンポーネントに依存するコンポーネントをすべて確認しておきます。
ブラウズツリーを表示して UUID-of-A のすべての子孫を確認できたら、今度は、Example A のすべての子孫の依存コンポーネント属性を確認します。
$ prodreg info -u UUID-of-B -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - Example A UUID-of-A 1 $ prodreg info -u UUID-of-C -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - Example A UUID-of-A 1 $ prodreg info -u UUID-of-D -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - Example C UUID-of-C 1 $ prodreg info -u UUID-of-E -i 1 -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - Example C UUID-of-C 1 |
Example A の再帰的登録解除を実行しても、Example A とその子孫の登録以外は解除されません。
# prodreg unregister -r -u UUID-of-A -i 1 |
この例では、依存するソフトウェアを持つコンポーネント、Software ZZZ が存在します。Software ZZZ は損傷を受けたため、再インストールする必要があります。再インストールするには、Software ZZZ の登録を解除しなければなりません。
この場合、まず Software ZZZ の依存コンポーネントを確認します。
$ prodreg info -m "Software ZZZ" -a "Dependent Components" Dependent Components: Name UUID # --------------------------- ------------------------------------ - Software Foobar d9723500-9823-1432-810c-0100e09832ff 1 |
通常、Software ZZZ の登録を解除するには、依存コンポーネントである Software Foobar をアンインストールする必要があります。しかし、Software Foobar の再インストールが不可能または不適切であることがわかっているため、Software ZZZ の再帰的登録解除は実行できません。再帰的登録解除を実行すると、Software Foobar の登録まで解除されてしまいます。この場合は、Software ZZZ の強制登録解除を実行します。Software ZZZ の UUID は、90843fb1-9874-3a20-9b88-984b32098432 です。
# prodreg unregister -f -u 90843fb1-9874-3a20-9b88-984b32098432 -i 1 |
続いて、Software ZZZ を再インストールします。
# /usr/bin/java -cp /usr/installers/org.example.softwarezzz |
ソフトウェアを手動で削除したり、pkgrm(1M) を使用して直接削除したりすると、Registry の情報が一致しなくなります。Registry の損傷を防ぐため、インストールプログラムを使ってインストールしたソフトウェアはアンインストールプログラムを使ってアンインストールしてください。
次の環境変数は、prodreg の実行に影響を及ぼします。
システムの PKG_INSTALL_ROOT パスとして使用するディレクトリの完全パス名を定義します。この環境変数が定義されている場合、すべての製品およびパッケージの情報ファイルは、最初に PKG_INSTALL_ROOT パスで検索されます。この環境変数が定義されていない場合、デフォルトのシステムパス / が使用されます。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWwsr2, SUNWwsrv |
インタフェースの安定性 |
開発中 |
pkgadd(1M), pkgrm(1M), wsreg_can_access_registry(3WSREG), libwsreg(3LIB), live_upgrade(5), attributes(5)
『Application Packaging Developer's Guide』
prodreg の GUI やコマンド行インタフェースには、Solaris Product Registry とパッケージデータベースが両方とも表示されます。どちらも Registry 内のコンポーネントのように見えますが、一部、登録解除やアンインストールができないものがあります。所定のアンインストーラを持たないパッケージは、prodreg uninstall コマンドでアンインストールできません。Solaris パッケージは、prodreg unregister コマンドで登録解除できません。GUI または CLI の prodreg ビューアに表示されないパッケージは、pkgrm(1M) コマンドで削除する必要があります。
ソフトウェアを削除するときは、pkgrm(1M) を使って個々のパッケージを削除するのではなく、付属のアンインストールソフトウェアを使用することをお勧めします。アンインストールソフトウェアを使用すれば、Registry 内の情報の登録解除からパッケージの削除まで、ソフトウェアの全リソースの削除を総合的に行うことができます。
prodreg uninstall コマンドは、外部プログラムを起動します。Product Registry の代替ルートを指定する際は、こうした外部プログラムのコマンド行の規約に従う必要があります。インストールプログラムが prodreg と同じ環境で実行されるように、PKG_INSTALL_ROOT 環境変数を使用する方法もあります。アンインストールプログラムは、通常、Java のインストールを必要とする Java クラスです。Java ソフトウェアが Solaris のディストリビューションから削除された場合、または見つからない場合、Java ベースのアンインストーラは実行できません。
root ユーザーのアクセス権がないと実行できないサブコマンドは、prodreg unregister と prodreg uninstall の 2 つだけです。なぜなら、登録の解除には Product Registry の変更が伴い、アンインストールにはパッケージの削除が伴うからです。これ以外のコマンドは Registry の内容を読み取るだけなので、root ユーザーのアクセス権がなくても実行できます。インストーラが root ユーザーのアクセス権を必要とする pkgadd(1M) や pkgrm(1M) などのコマンドを実行する場合と同様に、prodreg uninstall コマンドの実行にも root ユーザーのアクセス権が必要になります。
コンポーネントの属性については、さまざまなマニュアルに説明が記載されていますが、詳しくは『Application Packaging Developer's Guide』を参照してください。Solaris Product Registry 自体の属性については、次の用語集を参照してください。
そのコンポーネントに依存するコンポーネント。
ソフトウェアのインストール先からの相対位置。
コンポーネントのパッケージ。これらのパッケージは、コンポーネントの登録後に pkgadd コマンドで追加され、コンポーネントの登録解除前に pkgrm コマンドで削除されます。
そのコンポーネントが依存するコンポーネント。
インストール媒体。
登録済みタイトルがあるロケール。
prodreg browse コマンドで指定される名前。シェルの実行ロケールの言語に対応させることができます。
以前のバージョンの Solaris Product Registry で使用されていた名前。通常、Registry 内のコンポーネントのパッケージ名に設定されます。
コンポーネントの製造元ベンダー。
コンポーネントのバージョン文字列。
Registry 内に、実際のシステムにはインストールされていないソフトウェアコンポーネントが存在する場合があります。こうしたコンポーネントはいくつかの方法で検出できます。一番簡単なのは、info サブコマンドを使用して、コンポーネントが損傷を受けているかどうかを調べる方法です。info サブコマンドで、ソフトウェアがインストールされた場所を調べ、現在もその場所にあるかどうかを確認する方法もあります。
名前 | 形式 | 機能説明 | サブコマンド | オプション | オペランド | 使用例 | 使用上の留意点 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項