指定したパターンにデータが一致するパッケージを検索するには、pkg search コマンドを使用します。
pkg search コマンドは、pkg contents コマンドと同じようにパッケージの内容を調べます。pkg contents コマンドは内容を返しますが、pkg search コマンドは検索クエリーに一致するパッケージの名前を返します。次の表に、これら 2 つのコマンドについてのいくつかの類似点と相違点を示します。
|
デフォルトでは、検索クエリーは、大文字と小文字を除いて完全一致する一連の用語です。大文字と小文字を区別する検索を指定する場合は、-I オプションを使用します。
クエリー用語には、? と * のワイルドカードを使用できます。フレーズを検索するには、単一引用符または二重引用符を使用します。ワイルドカードや引用符を使用するときは、使用しているシェルを必ず考慮してください。
複数のクエリー用語を指定できます。デフォルトで、複数の用語は AND で結合されます。OR で 2 つの用語を明示的に結合できます。
検索クエリーは次の構造化された形式で表現できます。
package:action:index:token
検索するパッケージの名前または複数のパッケージに一致するパターン。
pkg(5) のマニュアルページのアクションに関するセクションに一覧表示されているアクションの名前。
pkg(5) のマニュアルページのアクションに関するセクションに一覧表示されている action の属性の名前。
index の値または index の値に一致するパターン。
欠けているフィールドは、暗黙的にワイルドカード化されます。token 文字列は明示的にワイルドカード化できます。アクションおよびインデックスの名前を明示的にワイルドカード化することはできません。
すべての属性が検索可能なわけではありません。たとえば、mode は file アクションの属性ですが、mode は index の有効な値ではありません。
index の一部の値は、ほかの属性から派生した値です。たとえば、index に basename を指定できますが、これは file または dir アクションの path 属性の最後のコンポーネントです。index の便利な値には、file および dir アクションの basename と path、depend アクションの依存関係タイプ (require や group など)、driver アクションの driver_name と alias などがあります。
token の値は、index で指定された属性の値と比較されます。たとえば、次に示す部分的な driver アクションの場合、index には属性名 alias を指定し、token には pci108e* を指定できます。
driver alias=pci108e,1647 alias=pci108e,16a7
set アクションの構文は少し違います。set アクションの 2 つの属性は、name と value です。この場合、index の値は name 属性の値であり、token の値は一致する value 属性の値と比較されます。次の例は、ドライバパッケージに対する set アクションを示しています。
set name=pkg.summary value="Broadcom NetXtreme II 10GbE NIC Driver"
次の例は、action に set を、index に pkg.summary を、token に Broadcom を指定します。search.match および pkg.name 列指定子は疑似属性です。pkg(1) のマニュアルページを参照してください。
$ pkg search -o search.match,pkg.name pkg.summary:Broadcom SEARCH.MATCH PKG.NAME Broadcom NetXtreme II 10GbE NIC Driver driver/network/ethernet/bnxe Broadcom 57xx 1GbE NIC Driver driver/network/ethernet/bge Broadcom NetXtreme II 1GbE NIC Driver driver/network/ethernet/bnx Broadcom BCM4401 NIC Driver driver/network/ethernet/bfe Broadcom HT1000 SATA driver driver/storage/bcm_sata
set アクションの name 属性の明確に定義された値には、pkg.fmri、info.classification、pkg.description、pkg.summary などがあります。pkg(5) のマニュアルページの設定アクションに関する項目を参照してください。
デフォルトでは、現在インストールされているパッケージバージョン以上の一致のみが表示されます。一致したすべてのバージョンを表示するには、-f オプションを使用します。
デフォルトでは、一致するすべてのアクションについて結果が表示されるため、1 つのパッケージに複数行の結果が生成されることがあります。一致する各パッケージを 1 回だけ表示するには、-p オプションを使用します。
次の例は、libpower ライブラリが system/kernel/power パッケージから取得されたことを示しています。
$ pkg search -Hlo pkg.name /lib/libpower.so.1 system/kernel/power $ pkg search -lo path,pkg.name libpower.so.1 PATH PKG.NAME lib/libpower.so.1 system/kernel/power $ pkg search -Hlo path,pkg.name basename:libpower.so.1 lib/libpower.so.1 system/kernel/power $ pkg search -Hlo path,pkg.name 'path:*libpower.so.1' lib/libpower.so.1 system/kernel/power
特定の SMF サービスがどのパッケージで提供されているかを表示するには、サービスの名前を org.opensolaris.smf.fmri 属性の値として検索します。
$ pkg search -o pkg.name,search.match 'org.opensolaris.smf.fmri:*network/http*' PKG.NAME SEARCH.MATCH web/java-servlet/tomcat svc:/network/http web/proxy/squid svc:/network/http web/proxy/privoxy svc:/network/http web/server/lighttpd-14 svc:/network/http web/server/apache-22 svc:/network/http web/server/apache-22 svc:/network/http:apache22 web/server/lighttpd-14 svc:/network/http:lighttpd14 web/proxy/privoxy svc:/network/http:privoxy web/proxy/squid svc:/network/http:squid web/java-servlet/tomcat svc:/network/http:tomcat6
この場合、各属性は、サービスインスタンス名が指定されたサービス名とサービスインスタンス名が指定されていないサービス名の、2 つの値を持ちます。次の例は、この属性がパッケージマニフェストでどのように指定されるかを示しています。
set name=org.opensolaris.smf.fmri value=svc:/network/http value=svc:/network/http:apache22
次の例は、これと同じ情報を、各パッケージが 1 回だけ示されるようにして表示しています。-p オプションは、search.match などのアクションレベルの出力を要求する場合は使用できません。コロン文字をエスケープすることで、コロン文字は別の検索クエリーフィールドでなく token の一部として解釈されます。
$ pkg search -o pkg.name,search.match 'org.opensolaris.smf.fmri:*network/http\:*' PKG.NAME SEARCH.MATCH web/server/apache-22 svc:/network/http:apache22 web/server/lighttpd-14 svc:/network/http:lighttpd14 web/proxy/privoxy svc:/network/http:privoxy web/proxy/squid svc:/network/http:squid web/java-servlet/tomcat svc:/network/http:tomcat6
IPS パッケージは、使用するデーモンまたはその他のソフトウェアのユーザーを提供します。
次のコマンドは、インストールされているパッケージによって提供されるユーザーを示しています。
$ pkg search -lo action.key user::
次のコマンドは、特定のユーザー定義を提供するパッケージを示しています。
$ pkg search -o action.key,pkg.name user::nova ACTION.KEY PKG.NAME nova cloud/openstack/nova
次のコマンドは、OR キーワードの使用例を示しています。
$ pkg search -o action.key,pkg.name user::nova OR user::neutron ACTION.KEY PKG.NAME nova cloud/openstack/nova neutron cloud/openstack/neutron
次の例は、info.classification 属性の値に「Source Code Management」を持つ、すべてのインストール済みパッケージを識別します。
$ pkg search -Hlo pkg.shortfmri info.classification:'source code management' pkg:/developer/versioning/sccs@0.5.11-0.175.2.0.0.8.0 pkg:/developer/versioning/git@1.7.9.2-0.175.2.0.0.34.0 pkg:/developer/versioning/mercurial-27@2.2.1-0.175.2.0.0.34.0
次の例は、この一致検索に使用されるパッケージメタデータを示しています。
set name=info.classification value="org.opensolaris.category.2008:Development/Source Code Management"
この情報は、pkg info コマンドからの出力の「Category」行に表示されます。
$ pkg info mercurial-27 ... Category: Development/Source Code Management ...
検索可能なほかの分類については、Classification Values in Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.3を参照してください。
また、次の例に示すように、パッケージ名のコンポーネントの 1 つを推測するように pkg list コマンドを使用することもできます。
$ pkg list '*storage*' $ pkg list -a '*database*'
次の例は、指定したパッケージの依存関係であるパッケージを示しています。
次の例は、system/kernel/power パッケージに require 依存関係のあるパッケージを示しています。
$ pkg search -Hlo pkg.name require:system/kernel/power system/kernel/dynamic-reconfiguration/i86pc system/hal
次の pkg contents コマンドは、検索の結果を確認します。要求された出力 action.raw は、パッケージマニフェストに示されるものとまったく同じアクションを表示する疑似属性です。
$ pkg contents -rt depend -a fmri='*power*' -o pkg.name,action.raw i86pc system/hal PKG.NAME ACTION.RAW system/hal depend fmri=pkg:/system/kernel/power @0.5.11-0.175.2.0.0.34.0 type=require variant.opensolaris.zone=global system/kernel/dynamic-reconfiguration/i86pc depend fmri=pkg:/system/kernel/power type=require
次の例は、多くのパッケージで pkg:/x11/server/xorg@1.14.99 への exclude 依存関係があることを示しています。
$ pkg search -lo pkg.name,fmri 'depend:exclude:*xorg*' PKG.NAME FMRI x11/server/xorg/driver/xorg-video-ati pkg:/x11/server/xorg@1.14.99 x11/server/xvnc pkg:/x11/server/xorg@1.14.99 x11/server/xserver-common pkg:/x11/server/xorg@1.14.99 x11/server/xorg/driver/xorg-input-vmmouse pkg:/x11/server/xorg@1.14.99 x11/server/xephyr pkg:/x11/server/xorg@1.14.99 ...
Oracle Solaris 11 GUI インストーラは solaris-desktop グループパッケージをインストールします。テキストインストーラおよび自動インストーラインストールのデフォルトの AI マニフェストは、solaris-large-server グループパッケージをインストールします。非大域ゾーン用のデフォルトのインストールマニフェストは、solaris-small-server グループパッケージをインストールします。solaris-minimal-server グループパッケージは、Oracle Solaris を実行するために必要な、サポートされる最小限のパッケージのセットをインストールします。
次の検索書式を使用して、指定されたグループパッケージに含まれている一連のパッケージを表示できます。
$ pkg search -o type,fmri '*/solaris-minimal-server:depend::' TYPE FMRI require developer/debug/mdb require editor/vim/vim-core require group/system/solaris-core-platform group network/ping require package/pkg require release/name require release/notices group service/network/ssh-common require shell/bash require shell/ksh93 group shell/tcsh group shell/zsh require system/core-os require system/library/platform group system/network
depend クエリーフィールドは、パッケージの depend アクションに一致します。-o オプションは、depend アクションの type および fmri 属性の値を表示します。各パッケージの名前とバージョンを表示するには、pkg.shortfmri を使用します。グループパッケージではファイルシステムの内容は指定されないことを思い出してください。グループパッケージは、グループに含まれるほかのパッケージを指定します。グループパッケージの詳細については、Group Packagesを参照してください。
pkg search コマンドは、指定したパッケージのアクションの属性の値を返しています。この例では、その属性値はパッケージ名になります。このコマンドの結果の数は、Listing All Installable Packages in a Group Packageで示す、類似の pkg contents コマンドの結果の数より多くなることがあり、この理由は、これらの検索結果に、インストール可能なパッケージだけでなく、指定したパッケージの group タイプの depend アクションで名前が付けられているすべてのパッケージの名前が含まれるためです。たとえば、このイメージにインストールできないパッケージバリアントおよびファセットが含まれることがあります。この相違を確認するには、solaris-large-server パッケージを使用して両方の例を試してみてください。