Go to main content

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

印刷ビューの終了

更新: 2018年8月8日
 
 

pkglint(1)

名前

pkglint - Image Packaging System パッケージ lint

形式

/usr/bin/pkglint [-c cache_dir] [-r 
repo_uri]... [-p regexp]
    [-f config_file] [-b branch]
    [-v] [-l lint_uri]... | manifest ...
/usr/bin/pkglint -L [-v]

説明

pkglint は、必要に応じて別のリポジトリを参照しながら、1 つ以上のパッケージマニフェストに対して一連のチェックを実行します。

pkglint は、パッケージ発行前の、パッケージ作成処理中に使用するべきです。pkglint は、マニフェストに対して、pkgsend または pkg.depotd の通常動作中に実行するには負荷が大きすぎる可能性のある徹底的なテストを実行します。pkglint のチェックには、重複したアクション、欠落した属性、および異常なファイルアクセス権に対するテストが含まれます。

lint のためのマニフェストは、コマンド行で、スペースで区切られたローカルファイルのリストとして渡すことができます。または、リポジトリからマニフェストを取得できます。

リポジトリからマニフェストを取得する場合、pkglint は最初の実行で、指定されたキャッシュディレクトリ内に pkg(7) ユーザーイメージを作成して設定します。–r オプションが指定されている場合は、参照リポジトリのために cache_dir/ref_image という名前のユーザーイメージが作成されます。–l オプションが指定されている場合は、lint リポジトリのために cache_dir/lint_image という名前のユーザーイメージが作成されます。これらのイメージに内容はインストールされません。これらのイメージは、リポジトリからマニフェストを取得するために pkglint でのみ使用されます。

pkglint の以降の呼び出しではキャッシュディレクトリを再利用できるため、–r または –l 引数はすべて省略できます。

pkglint では、キャッシュディレクトリ内のパブリッシャーを構成するためのサポートが制限されています。これらのイメージに対して、より複雑な発行元の構成を実行するには、pkg を使用します。

pkglint では、パッケージ作成者は、特定のマニフェストまたはアクションに対するチェックをバイパスできます。True に設定された属性 pkg.linted を含むマニフェストまたはアクションでは、そのマニフェストまたはアクションに対する lint 出力は生成されません。

pkglint チェックの名前の部分文字列を使用して、よりきめ細かな pkg.linted 設定を行うことができます。たとえば、pkg.linted. check.idTrue に設定されていると、特定のマニフェストまたはアクションに対する check.id という名前を持つすべてのチェックがバイパスされます。

pkglint の動作は、pkglintrc ファイルを指定することによって構成できます。デフォルトでは、pkglint は、/usr/share/lib/pkg/pkglintrc および $HOME/.pkglintrc 内の構成オプションを検索します。別の構成ファイルを指定するには、–f オプションを使用します。

lint の実行中に検出されたエラーまたは警告はすべて stderr に出力されます。

オプション

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

–h
–-help

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

–b branch

lint および参照リポジトリからの lint 中に使用されるパッケージのリストを絞り込むために使用されるブランチを指定します。–b オプションが指定されていない場合は、最新バージョンのパッケージが使用されます。version.pattern 構成プロパティーも参照してください。

–c cache_dir

lint および参照リポジトリからのパッケージのメタデータをキャッシュするために使用されるローカルディレクトリを指定します。

–l lint_uri

lint リポジトリの場所を表す URI を指定します。HTTP ベースとファイルシステムベースの両方の発行がサポートされています。–l を指定する場合は、–c も指定する必要があります。–l オプションは複数回指定できます。

–L

既知の lint チェックと除外された lint チェックを一覧表示してから終了します。各チェックの短縮名と説明を表示します。–v フラグと組み合わせる場合は、説明の代わりに、このチェックを実装するメソッドを表示します。

–f config_file

config_file 構成ファイルを使用して pkglint セッションを構成します。

–p regexp

lint リポジトリからチェックされるパッケージのリストを絞り込むために使用される正規表現を指定します。参照リポジトリからはすべてのマニフェストがロードされ (–b が指定されている場合は、その値に一致すると仮定)、このパターンは無視されます。

–r repo_uri

参照リポジトリの場所を表す URI を指定します。–r を指定する場合は、–c も指定する必要があります。–r オプションは複数回指定できます。

–v

pkglint を冗長モードで実行し、構成ファイル内の log_level 設定をすべて上書きします。

ファイル

pkglintrc 構成ファイルは、次のキーと値の引数を取ります。

log_level

lint メッセージを発行する最小のレベル。このレベルより低い lint メッセージは破棄されます。デフォルト値は INFO です。

ログレベルを最小のレベルからもっとも重大なレベルの順に示すと、DEBUGINFOWARNINGERRORCRITICAL になります。

do_pub_checks

True の場合は、公開されたパッケージにとってのみ意味がある可能性のあるチェックを実行します。デフォルト値は True です。

pkglint.ext.*

pkglint のプラグインメカニズムを使用すると、実行時に lint モジュールを追加できます。pkglint.ext. で始まるキーはすべて、完全に指定された Python モジュールである必要のある値を取ります。詳細は、「開発者」のセクションを参照してください。

pkglint.exclude

実行されるチェックのセットから省略する、完全に指定された Python モジュール、クラス、または関数名のスペースで区切られたリスト。

use_progress_tracker

True の場合は、lint の実行中にマニフェストに対する処理を繰り返すときに進捗トラッカーを使用します。デフォルト値は True です。

version.pattern

lint の対象となるブランチを指定するときに使用されるバージョンのパターン (–b)。構成ファイルで指定されていない場合、–b オプションではパターン *- が使用され、すべてのブランチに一致します。

開発者

pkglint によって実行されるチェックのセットを拡張するには、pkg.lint.base.Checker とそのサブクラス ManifestChecker ActionChecker、および ContentChecker をサブクラス化します。これらのクラスを含む Python モジュール名を、構成ファイル内の新しい pkglint.ext. キーに追加します。

これらの新しいサブクラスのインスタンスは、起動時に pkglint によって作成されます。lint セッション中に、特殊なキーワード引数 pkglint_id を持つ、各サブクラスの内部のメソッドが呼び出されます。これらのメソッドには、スーパークラス内の対応する check() メソッドと同じ署名が含まれているべきです。また、これらのメソッドには、pkglint -L によって出力される説明として使用される pkglint_desc 属性も割り当てられていなくてはいけません。

パラメータは Checker サブクラスから使用できます。これにより、これらのサブクラスは自身の動作を調整できます。推奨されるパラメータの命名規則は、pkglint_id.name です。パラメータ値は構成ファイル内に格納するか、または LintEngine.get_param() メソッドを使用して取得されるマニフェストまたはアクションでアクセスすることができます。マニフェストからパラメータにアクセスする場合は、pkglint パラメータが既存のどのアクションまたはマニフェスト値とも重複しないようにするために、キー名に接頭辞 pkg.lint が付加されます。

環境変数

PKG_CLIENT_CONNECT_TIMEOUT

トランスポート操作中に接続しようとするのを待機する秒数 (試行ごと)。これが経過するとクライアントは操作を中止します。値 0 は無制限に待機することを意味します。

デフォルト値: 60

PKG_CLIENT_LOWSPEED_TIMEOUT

クライアントが操作を中止するまでの、トランスポート操作中に lowspeed 制限 (1024 バイト/秒) を下回っていられる秒数。値 0 は、操作を中止しないことを意味します。

デフォルト値: 30

PKG_CLIENT_MAX_CONSECUTIVE_ERROR

一時的なトランスポートエラーの最大数。これを上回るとクライアントは操作を中止します。値 0 は、操作を中止しないことを意味します。

デフォルト値: 4

PKG_CLIENT_MAX_REDIRECT

トランスポート操作中に許可される HTTP または HTTPS リダイレクトの最大数。これを上回ると接続が中止されます。値 0 は、操作を中止しないことを意味します。

デフォルト値: 5

PKG_CLIENT_MAX_TIMEOUT

ホストあたりのトランスポート試行の最大数。これを上回るとクライアントは操作を中止します。値 0 は、操作を中止しないことを意味します。

デフォルト値: 4

http_proxy、https_proxy

HTTP または HTTPS プロキシサーバー。http_proxy または https_proxy を設定するには、次の構文を使用します。

http_proxy [protocol://]host[:port]
no_proxy

プロキシ経由にするべきでないホストの名前のリスト。アスタリスク (*) のみに設定すると、すべてのホストが一致するため、どのホストもプロキシ経由になりません。no_proxy を設定するには、次の構文を使用します。

no_proxy [* | host[,host]...]

使用例 1 特定のリポジトリに対する最初の実行

特定のリポジトリに対する pkglint セッションのはじめての実行。

$ pkglint -c /space/cache -r http://localhost:10000 mymanifest.mf
使用例 2 同じリポジトリに対するそれ以降の実行

例 1 で使用されている同じリポジトリに対するそれ以降の実行。

$ pkglint -c /space/cache mymanifest-fixed.mf
使用例 3 絞り込まれたマニフェストセットでの lint リポジトリの使用

lint リポジトリでの pkglint セッションの実行と、チェックするマニフェストのサブセットの指定。

$ pkglint -c /space/othercache -l http://localhost:10000 \
-p '.*firefox.*'
使用例 4 ブランチの指定

冗長モードでの特定のブランチに対する pkglint セッションの実行。

$ pkglint -c /space/cache -r http://localhost:10000 \
-l http://localhost:12000 -b 11.4.0.0.0.147.0 -v
使用例 5 構成ファイルの変更

新しい lint モジュールを含む構成ファイル (一部のチェックを除外)。

$ cat ~/.pkglintrc
[pkglint]

log_level = DEBUG
# log_level = INFO

pkglint.ext.mycheck = org.timf.mychecks
pkglint.ext.opensolaris = pkg.lint.opensolaris
pkglint.exclude: pkg.lint.opensolaris.OpenSolarisActionChecker
pkg.lint.pkglint.PkgActionChecker.unusual_perms pkg.lint.pkglint.PkgManifestChecker
pkg.lint.opensolaris.OpenSolarisManifestChecker

終了ステータス

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

0

コマンドが成功しました。

1

1 つ以上のパッケージマニフェストに lint エラーが含まれています。

2

マニフェストで lint エラーではないエラーが発生しました。たとえば、無効なコマンド行オプションが指定されました。

99

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

属性

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

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

関連項目

pkg (1)pkg.depotd (8)pkgsend (1)pkg(7)

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

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