Go to main content

Oracle® Solaris 11.4 のシステムの更新およびソフトウェアの追加

印刷ビューの終了

更新: 2018 年 8 月
 
 

パッケージの検索

指定したパターンにデータが一致するパッケージを検索するには、pkg search コマンドを使用します。

pkg search コマンドと pkg contents コマンドの比較

pkg search コマンドは、pkg contents コマンドと同じようにパッケージの内容を調べます。pkg contents コマンドは内容を返しますが、pkg search コマンドは検索クエリーに一致するパッケージの名前を返します。次の表に、これら 2 つのコマンドについてのいくつかの類似点と相違点を示します。

表 1  pkg searchpkg contents の比較
pkg search
pkg contents
  • このイメージに対して構成されているすべてのパブリッシャーに関連付けられたリポジトリ内でパッケージを検索します。インストール済みパッケージのみ検索する場合は、-l オプションを使用します。

  • 検索するリポジトリの URI を指定する場合は、-s オプションを使用します。

  • アクションを指定する場合は、検索クエリーを使用します。

  • 属性および属性値を指定する場合は、検索クエリーを使用します。

  • 結果の列を指定する場合は、-o オプションを使用します。

  • インストール済みパッケージを調べます。このイメージに対して構成されているすべてのパブリッシャーに関連付けられたリポジトリ内のパッケージを調べる場合は、-r オプションを使用します。

  • 調べるリポジトリの URI を指定する場合は、-g オプションを使用します。

  • アクションを指定する場合は、-t オプションを使用します。

  • 属性および属性値を指定する場合は、-a オプションを使用します。

  • 結果の列を指定する場合は、-o オプションを使用します。

  • 結果をソートする場合は、-s オプションを使用します。


ヒント  -  指定したパッケージの内容を表示するには、pkg contents コマンドを使用し、クエリーに一致するパッケージを表示するには、pkg search コマンドを使用します。関心のある内容を提供するパッケージがわかっている場合は、pkg contents コマンドを使用します。

検索クエリーの指定

デフォルトでは、検索クエリーは、大文字と小文字を除いて完全一致する一連の用語です。大文字と小文字を区別する検索を指定する場合は、-I オプションを使用します。

クエリー用語には、?* のワイルドカードを使用できます。フレーズを検索するには、単一引用符または二重引用符を使用します。ワイルドカードや引用符を使用するときは、使用しているシェルを必ず考慮してください。

複数のクエリー用語を指定できます。デフォルトで、複数の用語は AND で結合されます。OR で 2 つの用語を明示的に結合できます。

検索クエリーは次の構造化された形式で表現できます。

package:action:index:token
package

検索するパッケージの名前または複数のパッケージに一致するパターン。

action

pkg(7) のマニュアルページのアクションに関するセクションに一覧表示されているアクションの名前。

index

通常は、pkg(7) のマニュアルページのアクションに関するセクションに一覧表示されている action の属性を選択します。詳細は、次を参照してください。

token

index の値または index の値に一致するパターン。

欠けているフィールドは、暗黙的にワイルドカード化されます。token 文字列は明示的にワイルドカード化できます。アクションおよびインデックスの名前を明示的にワイルドカード化することはできません。

index はアクション属性の名前と必ずしも同じではありません。たとえば、user アクションの indexname ですが、その属性の名前は username です。

すべてのアクション属性が検索可能なわけではありません。たとえば、modefile アクションの属性ですが、modeindex の有効な値ではありません。

次の例は、アクションについて考えられるすべてのインデックスを見つける 1 つの方法を示したものです。

$ pkg search :user::

このコマンドは、user アクションの検索可能な属性が name のみであることを示します。

index の一部の値は、ほかの属性から派生した値です。たとえば、indexbasename を指定できますが、これは file または dir アクションの path 属性の最後のコンポーネントです。index の便利な値には、file および dir アクションの basenamepathdepend アクションの依存関係タイプ (requiregroup など)、driver アクションの driver_namealias などがあります。

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 つの属性は、namevalue です。この場合、index の値は name 属性の値であり、token の値は一致する value 属性の値と比較されます。次の例は、ドライバパッケージに対する set アクションを示しています。

set name=pkg.summary value="QLogic 57xxx 10/20GbE NIC Driver"

次の例では、パッケージ名を *driver*indexpkg.summarytokenqlogic に指定しています。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.fmriinfo.classificationpkg.descriptionpkg.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 サービスを提供するパッケージの識別

特定の 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 パッケージを使用して両方の例を試してみてください。