Go to main content

マニュアルページ セクション 1: ユーザーコマンド

印刷ビューの終了

更新: 2018年8月8日
 
 

pkgdepend(1)

名前

pkgdepend - Image Packaging System 依存関係アナライザ

形式

/usr/bin/pkgdepend [options] command
 [cmd_options] [operands]
/usr/bin/pkgdepend generate [-IMm] -d dir [-d 
dir]
    [-D name=value] [-k 
path] manifest_file
/usr/bin/pkgdepend resolve [-EmoSv] [-d output_dir]
    [-e external_package_file]... [-s suffix
]
    manifest_file ...

説明

pkgdepend コマンドは、パッケージの依存関係を生成および解決します。パッケージは、ほかのパッケージのファイルに依存することがあります。pkgdepend コマンドは通常、ファイル依存関係の生成と、ファイルからパッケージへの解決という 2 つのパスで使用されます。

generate サブコマンドはパッケージの内容を検査し、そのパッケージにどのような外部ファイルが必要かを判定します。

resolve サブコマンドは、generate ステップからファイルのリストを取得し、これらの依存ファイルを含むパッケージの名前を判定するためにパッケージの参照セットを検索します。依存ファイルが検索されるパッケージの参照セットは、パブリッシャーのシステムに現在インストールされているパッケージです。

依存関係情報のソースとして、提供されたファイルの次のいくつかのコンポーネントが使用されます。

ELF

提供されたファイル内の ELF ヘッダーが依存関係情報のために分析され、–k および –D オプションが指定されていると取得された情報が変更されます。ELF 依存関係についての詳細は、ldd およびOracle Solaris 11.4 Linkers and Libraries Guideを参照してください。

スクリプト

インタプリタを参照している #! 行を含むシェルスクリプトによって、そのインタプリタを提供しているパッケージへの依存関係が生成されます。

Python

Python スクリプトはまず、スクリプトとして分析されます。さらに、そのスクリプトでインポートが宣言されていると、それらも依存関係情報のソースとして機能することがあります。

ハードリンク

マニフェスト内のハードリンクによって、リンクターゲットを提供しているパッケージへの依存関係が生成されます。

SMF

require_all 依存関係を含む提供された SMF サービスマニフェストによって、これらの FMRI を提供する SMF マニフェストを提供しているパッケージへの依存関係が生成されます。

オプション

サポートしているオプションは、次のとおりです。

–?
–-help

使用方法に関するメッセージを表示します。

–R dir

dir をルートとするイメージを操作します。ディレクトリが指定されなかったか、または環境に基づいて決定される場合、デフォルトは / です。詳細は、「環境変数」のセクションを参照してください。

サブコマンド

サポートされているサブコマンドは次のとおりです。

pkgdepend generate [–IMm] – d dir [–d dir] [–D name=value] [–k path] manifest_file

manifest_file で指定されたマニフェストのファイルへの依存関係を生成します。

–I

manifest_file 内で満たされている依存関係を表示します。–Ipkgdepend resolve の結果を使用しないでください。

–M

分析できなかったファイルタイプのリストを表示します。

–m

元のマニフェストを繰り返してから、検出された依存関係をすべて追加します。

–d dir

マニフェストのファイルを検索するディレクトリのリストに dir を追加します。

–D name= value

ELF ファイル依存関係のための実行パス内のトークン name を展開する方法として value を追加します。

–k path

カーネルモジュールを検索する実行パスのリストに path を追加します。–k オプションを使用すると、デフォルトのパス (/kernel/usr/kernel) が削除されます。

–k オプションで指定されるような実行パスは、アクションまたはマニフェスト属性 pkg.depend.runpath を使用して、アクションごとまたはマニフェストごとにも指定できます。pkg.depend.runpath 属性の値は、使用するパスのコロンで区切られた文字列です。マニフェストまたはアクション内にいずれかの pkg.depend.runpath 属性を設定すると、–k オプションで指定されたパスがオーバーライドされます。

pkg.depend.runpath 属性値の 1 つのコンポーネントとして、特殊なトークン $PKGDEPEND_RUNPATH を使用すると、分析対象のファイルのための標準のシステム実行パスを含めることができます。

場合によっては、依存関係が自動的に生成されることを回避したいことがあります。たとえば、あるパッケージによって、一連のモジュールをインポートするサンプルの Python スクリプトが提供される場合、そのサンプルスクリプトによってインポートされるこれらのモジュールは、サンプルスクリプトを提供しているパッケージの依存関係ではありません。指定されたファイルに対する依存関係の生成を回避するには、アクションまたはマニフェスト属性 pkg.depend.bypass-generate を使用します。

pkg.depend.bypass-generate 値は、ファイル名に一致する Python の正規表現です。これらの正規表現は、ファイルパスの先頭と最後に暗黙的に固定されます。次の例で指定されている値は this/that に一致しますが、something/this/that/the/other には一致しません。

pkg.depend.bypass-generate=this/that

Python 正規表現の構文については、コマンド pydoc re を使用するか、または http://docs.python.org/dev/howto/regex.html にあるより完全なドキュメントを参照してください。

pkgdepend generate 入力マニフェストに SMF マニフェストファイルが含まれる場合、それらの SMF マニフェストファイルによって宣言されている SMF サービスまたはインスタンスが pkgdepend の出力に含まれます。これらの SMF サービスまたはインスタンスは、org.opensolaris.smf.fmri の名前で set アクションの形式で含まれます。

pkgdepend resolve [–EmoSv] [–d output_dir] [–e external_package_file]... [–s suffix] manifest_file ...

ファイルへの依存関係を、これらのファイルを提供するパッケージへの依存関係に変換します。依存関係は、まずコマンド行に指定されたマニフェストに基づいて解決され、次にシステムにインストールされているパッケージに基づいて解決されます。デフォルトでは、各マニフェストの依存関係は manifest_file.res という名前のファイルに格納されます。

–e external_package_file

external_package_file 内のパターンに名前が一致したシステムからのパッケージに対してのみ解決します。このオプションは複数回指定できます。–e オプションは –S オプションと一緒に使用できません。

–E

–e が指定された場合、外部の依存関係であると予想されたが、外部の依存関係ではなかったパッケージが表示されます。外部の依存関係であると予想されるパッケージは、external_package_file 内のパターンに名前が一致するシステムからのパッケージです。

–e が指定されない場合、解決済みパッケージの外部の依存関係を表示します。解決済みパッケージの外部の依存関係とは、解決済みパッケージの依存関係のターゲットで、コマンド行で指定されないパッケージです。

–m

解決された依存関係を追加する前に、generate ステップによって生成された依存関係をすべて削除して、マニフェストを繰り返します。

–o

結果を標準出力に書き込みます。このオプションは、人による使用を目的にしています。この出力をファイルに追加すると、無効なマニフェストが生成されることがあります。マニフェスト処理のパイプラインでは、–o の代わりに –d または –s オプションを使用することを強くお勧めします。

–d output_dir

指定された各マニフェストの解決された依存関係を output_dir 内の個別のファイルに書き込みます。デフォルトでは、各ファイルには、そのファイルに書き込まれた依存関係のソースだったマニフェストと同じベース名が付けられます。

–s suffix

出力ファイルごとに、解決された依存関係のソースだったファイルのベース名に suffix を追加します。suffix.suffix でない場合、ピリオド (.) が suffix の前に付加されます。

–S

コマンド行で指定されたマニフェストに対してのみ解決し、システムにインストールされているマニフェストに対しては解決しません。

–v

追加のパッケージ依存関係デバッグ用のメタデータを含めます。

使用例 1 依存関係を生成する

foo (このコンテンツディレクトリは ./bar/baz 内に存在する) に書き込まれているマニフェストの依存関係を生成し、その結果を foo.fdeps に格納します。

$ pkgdepend generate -d ./bar/baz foo > foo.fdeps
使用例 2 依存関係を解決する

foo.fdeps bar.fdeps における互いに対するファイル依存関係と、システムに現在インストールされているパッケージに対するファイル依存関係を解決します。

$ pkgdepend resolve foo.fdeps bar.fdeps
$ ls *.res
foo.fdeps.res    bar.fdeps.res
使用例 3 2 つのマニフェストの依存関係を生成および解決する

2 つのマニフェスト (foobar) へのファイル依存関係を生成し、すべての情報を元のマニフェスト内に保持します。次に、これらのファイル依存関係を解決し、結果のマニフェストを ./res 内に格納します。これらの結果のマニフェストは、pkgsend publish で使用できます。

$ pkgdepend generate -d /proto/foo -m foo > ./deps/foo
$ pkgdepend generate -d /proto/bar -m bar > ./deps/bar
$ pkgdepend resolve -m -d ./res ./deps/foo ./deps/bar
$ ls ./res
foo    bar
使用例 4 ELF ファイル依存関係のためのトークンに値を追加する

コンテンツディレクトリが / 内に存在する foo に書き込まれているマニフェストの依存関係を生成するときに、ELF ファイルの実行パス内のすべての PLATFORM トークンを sun4vsun4u に置き換えます。

$ pkgdepend generate -d / -D 'PLATFORM=sun4v' \
-D 'PLATFORM=sun4u' foo
使用例 5 カーネルモジュールディレクトリを指定する

コンテンツディレクトリが / 内に存在する foo に書き込まれているマニフェストの依存関係を生成するときに、カーネルモジュールを検索するディレクトリとして /kmod を指定します。

$ pkgdepend generate -d / -k /kmod foo
使用例 6 依存関係の生成をバイパスする

指定された Python スクリプトの標準の Python 実行パスに opt/python を追加し、opt/python/foo/file.py として提供されるファイルの test という名前のすべての Python モジュールに対する依存関係の生成をバイパスします。

usr/lib/python2.7/vendor-packages/xdg で提供されたすべてのファイルに対する依存関係の生成を回避します。

$ cat manifest.py
set name=pkg.fmri value=pkg:/mypackage@1.0,1.0
set name=pkg.summary value="My test package"
dir path=opt mode=0755 group=sys owner=root
dir path=opt/python mode=0755 group=sys owner=root
dir path=opt/python/foo mode=0755 group=sys owner=root
file path=opt/python/__init__.py mode=0644 group=sys owner=root
file path=opt/python/foo/__init__.py mode=0644 group=sys owner=root
#
# Add runpath and bypass-generate attributes:
#
file path=opt/python/foo/file.py mode=0644 group=sys owner=root \
    pkg.depend.bypass-generate=.*/test.py.* \
    pkg.depend.bypass-generate=.*/testmodule.so \
    pkg.depend.bypass-generate=.*/test.so \
    pkg.depend.bypass-generate=usr/lib/python2.7/vendor-packages/xdg/.* \
    pkg.depend.runpath=$PKGDEPEND_RUNPATH:/opt/python

$ pkgdepend generate -d proto manifest.py

環境変数

PKG_IMAGE

パッケージ操作に使用するイメージを含むディレクトリを指定します。–R が指定されている場合は、この値は無視されます。

終了ステータス

次の終了ステータスが返されます。

0

すべてが動作しました。

1

エラーが発生した。

2

無効なコマンド行オプションが指定された。

99

予期しない例外が発生しました。

属性

次の属性については、attributes(7) を参照してください。

属性タイプ
属性値
使用条件
package/pkg
インタフェースの安定性
不確実

関連項目

pkg (7)

Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.4

https://github.com/oracle/solaris-ips