pkg_create(1) FreeBSD 一般コマンドマニュアル

pkg_create

前のページ 上に戻る 次のページ

pkg_create


                [-I piscript] [-k dscript] [-K pdscript] [-r rscript]
                [-s srcdir] [-t template] [-X excludefile] [-D displayfile]
                [-m mtreefile] [-o originpath] -c comment -d description -f
                packlist pkg-name


解説

     この pkg_create コマンドは、package 展開/情報プログラムに渡される package
     (訳注: FreeBSD の package system におけるパッケージを指す場合にこう表記し
     ます) を作成します。 package 作成のために入力する説明とコマンドライン引数
     は本来人間が生成することを意図していませんが、そうすることも簡単にできま
     す。自力でどうにかすることも可能ですが、作成にはフロントエンドツールを用
     いた方がいいでしょう。とはいうものの、入力書式の概略はこの文書に含まれて
     います。


オプション

     以下のコマンドラインオプションが提供されています:

     -f packinglist
             ファイル packinglist から、もしくは packinglist- (ダッシュ)で
             あれば stdin から、package 用の ``packing list'' を取得します。

     -c [-]desc
             ファイル desc から、もしくは先頭が - で始まっていれば引数自身か
             ら、package の ``一行説明'' を取得します。この文字列は、package
             が提供するもののバージョンを知る手がかりとなるべきです。

     -d [-]desc
             ファイル desc から、もしくは先頭が - で始まっていれば引数自身か
             ら、package の長い説明を取得します。

     -Y      質問に対してのデフォルトの解答を `Yes' とします。

     -N      質問に対してのデフォルトの解答を `No' とします。

     -O      `packing list Only' モードに移行します。これは FreeBSD Ports
             Collection のための特別な修正であり、port がインストールされる時
             の `fake pkg_add' を行うために用いられます。このような場合には、
             調整された最終的な packing list がどのようなものになるかを知る必
             要があるのです。

     -v      饒舌な出力に切り替えます。

     -h      tar がシンボリックリンクをたどるようにします。この結果、リンク自
             身ではなくリンク先のファイルが出力されます。

     -i iscript
             package のインストール前手続きとして iscript を用います。これは実
             行可能なプログラム (もしくはシェルスクリプト) ならなんでも構いま
             せん。これは package がインストールされる時に自動的に起動されま
             す。その際、package 名が第 1 引数として渡されます。

             B>注: -I オプションが指定されない場合、本スクリプトは当該 package
             「PACKING LIST 詳細」セクションを参照) 内の複数の @pkgdep ディレ
             クティブを指定する手っ取り早い方法でもあります。

     -p prefix
             package のファイルを選択する際に ``基準'' となる初期ディレクトリ
             として prefix を用います。

     -k dscript
             package のアンインストール手続きとして dscript を用います。これは
             実行可能なプログラム (もしくはシェルスクリプト) ならなんでも構い
             ません。これは package がアンインストールされる時に自動的に起動さ
             れます。その際、package 名が第 1 引数として渡されます。

             B>注: -K オプションが指定されない場合、本スクリプトは当該 package
             の de-install および post-deinstall の両方のスクリプトとして動作
             します。 package 名とともにキーワード DEINSTALL および
             POST-DEINSTALL をそれぞれ渡すことにより、機能を切り替えることにな
             ります。

     -K pdscript
             package のアンインストール後手続きとして pdscript を用います。こ
             れは実行可能なプログラム (もしくはシェルスクリプト) ならなんでも
             構いません。これは package がアンインストールされる時に自動的に起
             動されます。その際、package 名が第 1 引数として渡されます。

     -r rscript
             package の ``requirements'' 手続きとして rscript を用います。これ
             は実行可能なプログラム (もしくはシェルスクリプト) ならなんでも構
             いません。これはインストール時、アンインストール時に自動的に起動
             され、インストール、アンインストールを継続するべきかどうかを決定
             するのに用いられます。インストールとアンインストールを区別するた
             めに、キーワード INSTALLDEINSTALL がそれぞれ、package 名と共
             に渡されます。

     -s srcdir
             package 作成中に srcdir は、 @cwd の値に優先します。

     -t template
             mktemp(3) への入力として template を用います。これはデフォルトで
             は /tmp/instmp.XXXXXX という文字列ですが、 /tmp ディレクトリの容
             量が制限されているような状況では変更する必要があるかもしれませ
             ん。 mktemp(3) が一意の ID を用いるために必要な `X' の文字をいく
             つか残しておくことを忘れないでください。

     -X excludefile
             最終的に package を作成する際に、 excludefiletar-exclude-from 引数として渡します。このオプションを使うにあたって
             の詳しい情報は、 tar のマニュアルページ (もしくは --help 引数を付
             けて tar を実行) を参照してください。

     -D displayfile
             package をインストールした後にファイルを (連結して標準出力へ) 表

     -y      package の tarball を圧縮するために、 bzip2(1) ユーティリティを
             gzip(1) の代りに使用します。最終的なアーカイブの書式が、認識可能
             なサフィックスによって pkg-name で明示的に指定されている場合、本
             オプションは無効であることに注意してください。現在 pkg_create
             は、次のサフィックスを認識します: .tgz, .tar, .tbz2

PACKING LIST 詳細

     ``packing list'' の書式 ( -f を参照) は単純で、package に含めるファイル名
     を一行につきひとつずつ並べたものにすぎません。どこにインストールされるか
     わからない package に対して絶対パスを用いるのは一般的に悪い方法なので、ど
     こにインストールされることを想定しているのか、そしてどんな ownership と
     mode を伴ってインストールされるべきなのか (こちらはオプション) を指定する
     方法が用意されています。これは packing list 内に一連の特殊コマンドを埋め
     込むことで実現されています。以下に簡単に示します:
     @cwd directory
             内部のディレクトリポインタが directory を指すようにします。以降の
             ファイル名はこのディレクトリへの相対パスであるとみなされます。注:
             @cd はこのコマンドの別名です。
     @srcdir directory
             「作成時のみ」の内部ディレクトリポインタを directory に設定しま
             す。 package 作成時に @cwd に優先すると言えますが、展開時にはこれ
             はあてはまりません。
     @exec command
             展開処理の一環として command を実行します。 command が以下の文字
             列を含んでいた場合、その場で置換されます。以下の例では @cwd/usr/local と設定されていて、最後に展開されたファイルが bin/emacs
             だったとしています。
             %F      最後に展開されたファイル名に置換されます。この例では
                     bin/emacs となります。
             %D      @cwd で設定されたカレントディレクトリプレフィックスに置換
                     されます。この例では /usr/local になります。
             %B      完全な (フルパスの) ファイル名の ``basename'' へ置換され
                     ます。これはカレントディレクトリプレフィックスに最後の
                     filespec を加え、末尾のファイル名部分を除いたものです。こ
                     の例では、 /usr/local/bin になります。
             %f      完全な (フルパスを含む) ファイル名の ``filename'' 部分へ
                     置換されます。 %B と対応していて、この例では emacs となり
                     ます。
     @unexec command
             アンインストール処理の一環として command を実行します。特別な %
             文字列の置換は @exec と同様です。このコマンドは @exec のように
             package を加える際に実行されるのではなく、package が削除されると
             きに実行されます。これは、package を加えるときに作られたリンクや
             他の付随ファイル (package の内容一覧に記されているファイルは自動
             的に削除されるので除く) を削除するのに便利です。アンインストール
             スクリプトよりも @unexec を用いる方が有利な点は、どこにインストー
             ルされているかわからない ( -p を参照) ファイルの場所を得るのに ``
             特殊文字列置換'' を用いることが可能なことです。
     @mode mode
             この後で展開されるすべてのファイルのデフォルトの許可属性を mode
             に設定します。書式は chmod コマンドで用いられているものと同じです
             (というよりも、そのまま渡されています)。引数無しで用いると、デ

     @group group
             この後で展開されるすべてのファイルのデフォルトの group ownership
             を group に設定します。引数無しで用いると、デフォルトの (展開)
             group ownership に戻します。
     @comment string
             packing list 内にコメントを埋め込みます。誰かが後で間違えてしまう
             かもしれない特に厄介な部分を説明しようとする場合に便利です。
     @ignore
             特殊な目的に使われるファイルなどのため、展開時に次のファイルを無
             視する (どこにもコピーしない) ように、内部で用いられます。
     @ignore_inst
             @ignore と同様ですが、次のファイルを無視するのは一評価サイクルだ
             け遅らせられます。このおかげでこのディレクティブを packinglist
             ファイル内で用いることが可能になるので、インストーラが無視するよ
             うな、インストールスクリプトなどのための特殊なデータファイルを、
             配布物内に入れることができるようになります。
     @name name
             package の名前を設定します。これは必須項目であり、通常先頭に置か
             れます。この名前は package が提供するファイルの名前とは異なる可能
             性があり、後でアンインストールする時のために package の記録を残し
             ておくのに使われます。名前が指定されなかった場合には、 pkg_create
             は package 名から推定し、自動的に設定することに注意してください。
     @dirrm name
             ディレクトリ name がアンインストール時に削除されるよう宣言しま
             す。デフォルトでは、 package のインストール時に作成されたディレク
             トリはアンインストール時には削除されませんが、このディレクティブ
             は明示的なディレクトリ削除方法を提供します。このディレクティブは
             package リストの最後で用いるようにしてください。一つ以上の @dirrm
             ディレクティブが指定された場合、指定された順番に削除されます。
             name は空きディレクトリでなければ削除されません。
     @mtree name
             name を、インストール時に用いられる mtree(8) への入力ファイルとし
             て宣言します (上述の -m を参照)。最初にひとつだけ @mtree ディレク
             ティブを指定することが推奨されます。
     @display name
             name を、インストール時に表示されるファイルとして宣言します (上述
             の -D を参照)。
     @pkgdep pkgname
             package pkgname に依存することを宣言します。 package pkgname はこ
             の package がインストールされる前にインストールされていなければな
             らず、またこの package は package pkgname がアンインストールされ
             る前にアンインストールされなければなりません。 package が複数の
             package に依存する場合には、複数の @pkgdep ディレクティブが用いら
             れます。


環境変数

     環境変数 PKG_TMPDIR で、 pkg_create が作業用ファイルの生成を試みるディレ
     クトリの名前を指定します。 PKG_TMPDIR が設定されていない場合、 TMPDIR で
     指定されたディレクトリが使用されます。 PKG_TMPDIR 、 TMPDIR ともに設定さ
     れていない場合は、組み込みのデフォルトディレクトリが使用されます。


ファイル


協力者

     John Kohl <jtk@rational.com>


バグ

     package が展開される際にハードリンクを保存しておくために、配布物のファイ
     ル間でのハードリンクは @cwd ディレクティブで括られていなければなりませ
     ん。その上、実行時の引数の長さの制限 (これは sysconf(_SC_ARG_MAX) により
     返される値に依存します) のために、それらのハードリンクは単一の tar 実行内
     で行われなければなりません。

     バグは他にもあるはずです。

FreeBSD 4.4                     April 21, 1995                     FreeBSD 4.4

ABELNET VPSサービス