指定したパターンにデータが一致するパッケージを検索するには、pkg search コマンドを使用します。
pkg search コマンドは、pkg contents コマンドと同じようにパッケージの内容を調べます。pkg contents コマンドは内容を返しますが、pkg search コマンドは検索クエリーに一致するパッケージの名前を返します。次の表に、これら 2 つのコマンドについてのいくつかの類似点と相違点を示します。
|
デフォルトでは、検索クエリーは、大文字と小文字を除いて完全一致する一連の用語です。大文字と小文字を区別する検索を指定する場合は、-I オプションを使用します。
クエリー用語には、? と * のワイルドカードを使用できます。フレーズを検索するには、単一引用符または二重引用符を使用します。ワイルドカードや引用符を使用するときは、使用しているシェルを必ず考慮してください。
複数のクエリー用語を指定できます。デフォルトで、複数の用語は AND で結合されます。OR で 2 つの用語を明示的に結合できます。
検索クエリーは次の構造化された形式で表現できます。
package:action:index:token
検索するパッケージの名前または複数のパッケージに一致するパターン。
pkg(7) のマニュアルページのアクションに関するセクションに一覧表示されているアクションの名前。
通常は、pkg(7) のマニュアルページのアクションに関するセクションに一覧表示されている action の属性を選択します。詳細は、次を参照してください。
index の値または index の値に一致するパターン。
欠けているフィールドは、暗黙的にワイルドカード化されます。token 文字列は明示的にワイルドカード化できます。アクションおよびインデックスの名前を明示的にワイルドカード化することはできません。
index はアクション属性の名前と必ずしも同じではありません。たとえば、user アクションの index は name ですが、その属性の名前は username です。
すべてのアクション属性が検索可能なわけではありません。たとえば、mode は file アクションの属性ですが、mode は index の有効な値ではありません。
次の例は、アクションについて考えられるすべてのインデックスを見つける 1 つの方法を示したものです。
$ pkg search :user::
このコマンドは、user アクションの検索可能な属性が name のみであることを示します。
index の一部の値は、ほかの属性から派生した値です。たとえば、index に basename を指定できますが、これは file または dir アクションの path 属性の最後のコンポーネントです。index の便利な値には、file および dir アクションの basename と path、depend アクションの依存関係タイプ (require や group など)、driver アクションの driver_name と alias などがあります。
index は、action.key (アクションのキー属性) や pkg.name などの特殊な疑似属性名とすることもできます。完全なリストについては pkg(1) のマニュアルページを参照してください。
token の値は、index で指定された属性の値と比較されます。たとえば、次に示す部分的な driver アクションの場合、index には属性名 alias を指定し、token には pci14e* を指定できます。
driver alias=pci14e4,1000 alias=pci14e4,1200 alias=pci14e4,1203
デフォルトでは、一致するすべてのアクションについて結果が表示されるため、1 つのパッケージに複数行の結果が生成されることがあります。一致する各パッケージを 1 回だけ表示するには、-p オプションを使用します。
$ pkg search -Hpo pkg.name driver:alias:pci14e\* driver/network/ethernet/bge driver/network/ethernet/bnx driver/network/ethernet/bnxe
set アクションの構文は少し違います。set アクションの 2 つの属性は、name と value です。この場合、index の値は name 属性の値であり、token の値は一致する value 属性の値と比較されます。次の例は、ドライバパッケージに対する set アクションを示しています。
set name=pkg.summary value="QLogic 57xxx 10/20GbE NIC Driver"
次の例では、パッケージ名を *driver*、index を pkg.summary、token を qlogic に指定しています。pkg.summary 属性は set アクションにのみ適用されるため、set アクションが暗黙指定されます。search.match および pkg.name 列指定子は疑似属性です。pkg(1) のマニュアルページを参照してください。
$ pkg search -o search.match,pkg.name \*driver\*::pkg.summary:qlogic SEARCH.MATCH PKG.NAME QLogic 570x/571x Gigabit Ethernet Driver driver/network/ethernet/bnx QLogic 57xxx 10/20GbE NIC Driver driver/network/ethernet/bnxe QLogic ISP Fibre Channel device storage and NIC driver driver/fc/qlc QLogic P3+ 10GbE NIC Driver driver/network/ethernet/qlcnic
次のコマンドは前のコマンドと同じ結果をもたらします。
$ pkg search -o search.match,pkg.name pkg.summary:'qlogic * driver'
set アクションの name 属性の明確に定義された値には、pkg.fmri、info.classification、pkg.description、pkg.summary などがあります。pkg(7) のマニュアルページの設定アクションに関する項目を参照してください。
デフォルトでは、現在インストールされているパッケージバージョン以上の一致のみが表示されます。一致したすべてのバージョンを表示するには、-f オプションを使用します。
次の例では、検索トークンはファイルシステムオブジェクトのフルパスです。
$ pkg search /lib/libinetutil.so.1 INDEX ACTION VALUE PACKAGE path file lib/libinetutil.so.1 pkg:/system/library@11.4-11.4.0.0.1.10.1
pkg search コマンドはパッケージアクションを検索します。前のコマンドは、file アクションの path 属性内に検索トークンを検出し、このファイルが system/library パッケージによって提供されたことを示します。
次の例は、必要な出力はパッケージの名前のみであることを指定しています。-l オプションを指定すると、インストール済みのパッケージのみが検索されるため、検索を速くすることができます。
$ pkg search -Hlo pkg.name '*libinetutil*' system/library
必要な出力を指定しない場合、ファイルの基本名のみを検索トークンとして使用するか、上記のようにワイルドカードを使用することで、このファイルが 6 つの異なるディレクトリに提供され、3 つのリンクのターゲットであることが表示されます。1 つのパッケージについて多くの出力行を表示する代わりに各パッケージ名を 1 回だけ表示するための別の方法は、-p オプションを使用するか、検索トークンを角括弧で囲むことです。使用するシェルによっては角括弧をエスケープする必要があります。次のコマンドの出力は同じになります。
$ pkg search -p '*libinetutil*' $ pkg search \<'*libinetutil*'\> PACKAGE PUBLISHER pkg:/system/library@11.4-11.4.0.0.1.10.1 solaris
pkg verify コマンドの -p オプションにより、名前付きファイルを提供するパッケージも表示されます。この場合、/ を基準としたファイルへのフルパスを指定する必要があります。
$ pkg verify -vp lib/libinetutil.so.1 PACKAGE STATUS pkg://solaris/system/library OK
システム上でファイルを提供したパッケージを見つけることができない場合、そのファイルはパッケージ化されていない可能性があります。パッケージ解除されたファイルシステムの内容の識別の pkg verify コマンドの -p および --unpackaged オプションを参照してください。
特定の SMF サービスがどのパッケージで提供されているかを表示するには、サービスの名前を org.opensolaris.smf.fmri 属性の値として検索します。
$ pkg search -o pkg.name,search.match org.opensolaris.smf.fmri:\*network/http\* PKG.NAME SEARCH.MATCH web/proxy/privoxy svc:/network/http web/proxy/squid svc:/network/http web/server/lighttpd-14 svc:/network/http web/java-servlet/tomcat-8 svc:/network/http web/server/apache-24 svc:/network/http web/server/apache-24 svc:/network/http:apache24 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-8 svc:/network/http:tomcat8
この場合、各属性は、サービスインスタンス名が指定されたサービス名とサービスインスタンス名が指定されていないサービス名の、2 つの値を持ちます。次の例は、この属性がパッケージマニフェストでどのように指定されるかを示しています。
set name=org.opensolaris.smf.fmri value=svc:/network/http:apache24 value=svc:/network/http
次の例は、これと同じ情報を、各パッケージが 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-24 svc:/network/http:apache24 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-8 svc:/network/http:tomcat8
IPS パッケージは、使用するデーモンまたはその他のソフトウェアのユーザーを提供します。
次のコマンドは、インストールされているパッケージによって提供されるユーザーを示しています。
$ pkg search -lo action.key user::
次のコマンドは、特定のユーザー定義を提供するパッケージを示しています。
$ pkg search -o action.key,pkg.name user::openldap ACTION.KEY PKG.NAME openldap system/network/ldap/openldap
次のコマンドは、OR キーワードの使用例を示しています。
$ pkg search -o action.key,pkg.name user::openldap OR user::sshd ACTION.KEY PKG.NAME openldap system/network/ldap/openldap sshd service/network/ssh
次のコマンドは、特定のバグ修正を提供するパッケージを示しています。
$ pkg search -Ho pkg.shortfmri bugid
バグを修正するために変更されたすべてのパッケージが一覧表示されます。
特定の CVE 修正を提供した SRU を識別する方法について学習するには、クリティカルパッチ更新パッケージを参照してください。
次の例は、info.classification 属性の値に「Source Code Management」を持つ、すべてのインストール済みパッケージを識別します。
$ pkg search -Hlo pkg.name info.classification:'source code management' pkg:/developer/versioning/sccs pkg:/developer/versioning/git pkg:/developer/versioning/mercurial-27
次の例は、この一致検索に使用されるパッケージメタデータを示しています。
set name=info.classification value="org.opensolaris.category.2008:Development/Source Code Management"
この情報は、pkg info コマンドからの出力の「Category」行に表示されます。
$ pkg info mercurial-27 Name: developer/versioning/mercurial-27 Summary: The Mercurial Source Control Management System Description: A fast, lightweight source control management system designed for efficient handling of very large distributed projects. Category: Development/Source Code Management State: Installed Publisher: solaris Version: 4.1.3 Branch: 11.4.0.0.1.10.0 Packaging Date: Mon Jul 02 16:32:13 2018 Last Install Time: Mon Aug 06 15:22:47 2018 Size: 9.90 MB FMRI: pkg://solaris/developer/versioning/mercurial-27@4.1.3-11.4.0.0.1.10.0:20180702T163213Z Project URL: http://mercurial-scm.org/ Source URL: https://www.mercurial-scm.org/release/mercurial-4.1.3.tar.gz
検索可能なほかの分類については、Oracle Solaris 12 でのImage Packaging System を使用したソフトウェアのパッケージ化と配布 の Classification Valuesを参照してください。
また、次の例に示すように、パッケージ名のコンポーネントの 1 つを推測するように pkg list コマンドを使用することもできます。
$ pkg list -a '*versioning*' $ pkg list '*storage*' $ pkg list -n '*database*'
次の例は、指定したパッケージの依存関係であるパッケージを示しています。
次のコマンドは、system/network/ldap/openldap パッケージについて多くのパッケージが require 依存関係を持っていることを示します。
$ pkg search -Hlo pkg.name require:system/network/ldap/openldap
次の pkg contents コマンドは、検索結果の 1 つについて検索の結果を確認します。要求された出力 action.raw は、パッケージマニフェストに示されるものとまったく同じアクションを表示する疑似属性です。
$ pkg contents -t depend -a fmri='*openldap*' -o pkg.name,action.raw openscap PKG.NAME ACTION.RAW security/compliance/openscap depend fmri=pkg:/system/network/ldap/openldap@2.4.45-11.4.0.0.1.9.0 type=require
次の例は、pkg:/driver/graphics/nvidiaR340 について exclude 依存関係を持っているパッケージを一覧表示します。
$ pkg contents -rt depend -a type=exclude nvidiaR340 TYPE FMRI exclude pkg:/driver/graphics/nvidia exclude pkg:/driver/graphics/nvidiaR304 $ pkg search -o pkg.name,fmri 'depend:exclude:*nvidiaR340*' PKG.NAME FMRI driver/graphics/nvidia pkg:/driver/graphics/nvidiaR340 driver/graphics/nvidiaR304 pkg:/driver/graphics/nvidiaR340
テキストインストーラおよび自動インストーラインストールのデフォルトの 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 group network/ssh require package/pkg require release/name require release/notices group service/network/ssh require shell/bash require shell/ksh93 group shell/tcsh group shell/zsh require system/core-os require system/library/platform group system/network group system/rsyslog
depend クエリーフィールドは、パッケージの depend アクションに一致します。-o オプションは、depend アクションの type および fmri 属性の値を表示します。グループパッケージではファイルシステムの内容は指定されないことを思い出してください。グループパッケージは、グループに含まれるほかのパッケージを指定します。グループパッケージの詳細については、グループパッケージを参照してください。
pkg search コマンドは、指定したパッケージのアクションの属性の値を返しています。この例では、その属性値はパッケージ名になります。このコマンドの結果の数は、グループパッケージ内のすべてのインストール可能なパッケージの一覧表示で示す、類似の pkg contents コマンドの結果の数より多くなることがあり、この理由は、これらの検索結果に、インストール可能なパッケージだけでなく、指定したパッケージの group タイプの depend アクションで名前が付けられているすべてのパッケージの名前が含まれるためです。たとえば、このイメージにインストールできないパッケージバリアントおよびファセットが含まれることがあります。この相違を確認するには、solaris-large-server パッケージを使用して両方の例を試してみてください。