aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/pkg_create.1
blob: 77e212c0b782684fc8e7509cd4b21f6179b13ae1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
.\"
.\" FreeBSD install - a package for the installation and maintainance
.\" of non-core utilities.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\"
.\" Jordan K. Hubbard
.\"
.\"
.\"     @(#)pkg_create.1
.\" jpman %Id: pkg_create.1,v 1.3 1997/06/09 10:11:56 jsakai Stab %
.\"	%Id: pkg_create.1,v 1.16.2.7 1998/03/09 12:31:13 jkh Exp %
.\"
.\" hacked up by John Kohl for NetBSD--fixed a few bugs, extended keywords,
.\" added dependency tracking, etc.
.\"
.\" [jkh] Took John's changes back and made some additional extensions for
.\" better integration with FreeBSD's new ports collection.
.\"
.Dd April 21, 1995
.Dt pkg_create 1
.Os FreeBSD
.Sh 名称
.Nm pkg_create
.Nd ソフトウェア配布パッケージを作成するプログラム
.Sh 書式
.Nm
.Op Fl YNOhv
.Op Fl P Ar pkgs
.Op Fl p Ar prefix
.Op Fl f Ar contents
.Op Fl i Ar iscript
.Op Fl k Ar dscript
.Op Fl r Ar rscript
.Op Fl t Ar template
.Op Fl X Ar excludefile
.Op Fl D Ar displayfile
.Op Fl m Ar mtreefile
.Fl c Ar comment
.Fl d Ar description
.Fl f Ar packlist
.Ar pkg-name
.Sh 解説
この
.Nm
コマンドは、パッケージ展開/情報プログラムに渡されるパッケージを
作成します。
パッケージ作成のために入力する説明とコマンドライン引数
は本来人間が生成することを意図していませんが、
そうすることも簡単にできます。
自力でどうにかすることも可能ですが、作成にはフロントエンドツールを
用いた方がいいでしょう。
とはいうものの、入力書式の概略はこの文書に含まれています。
.Sh オプション
以下のコマンドラインオプションが提供されています:
.Bl -tag -width indent
.It Fl f Ar packinglist
ファイル
.Ar packinglist
から、もしくは
.Ar packinglist
が
.Cm -
(ダッシュ)であれば
.Cm stdin
から、パッケージ用の ``packing list'' を取得します。
.It Fl c Ar [-]desc
ファイル
.Ar desc
から、もしくは先頭が
.Cm -
で始まっていれば引数自身から、パッケージの ``一行説明'' を取得します。
この文字列は、パッケージが提供するもののバージョンを知る
手がかりとなるべきです。
.It Fl d Ar [-]desc
ファイル
.Ar desc
から、もしくは先頭が
.Cm -
で始まっていれば引数自身から、パッケージの長い説明を取得します。
.It Fl Y
質問に対してのデフォルトの解答を `Yes' とします。
.It Fl N
質問に対してのデフォルトの解答を `No' とします。
.It Fl O
`packing list Only' モードに移行します。
これは
.Em "FreeBSD Ports Collection"
のための特別な修正であり、port がインストールされる時の
`fake pkg_add' を行うために用いられます。
このような場合には、調整された最終的な packing list が
どのようなものになるかを知る必要があるのです。
.It Fl v
饒舌な出力に切り替えます。
.It Fl h
tar がシンボリックリンクをたどるようにします。
この結果、リンク自身ではなくリンク先のファイルが出力されます。
.It Fl i Ar iscript
パッケージのインストール手続きとして
.Ar iscript
を用います。
これは実行可能なプログラム (もしくはシェルスクリプト) なら
なんでも構いません。
これはパッケージがインストールされる時に自動的に起動されます。
.It Fl P Ar pkgs
初期のパッケージ依存リストとして
.Ar pkgs
を用います。
これはホワイトスペースで区切られたパッケージの名前となります。
また、packing list (後述の「PACKING LIST 詳細」セクションを参照) 
内の複数の
.Cm @pkgdep
ディレクティブを指定する手っ取り早い方法でもあります。
.It Fl p Ar prefix
パッケージのファイルを選択する際に基準となる初期ディレクトリとして
.Ar prefix
を用います。
.It Fl k Ar dscript
パッケージのアンインストール手続きとして
.Ar dscript
を用います。
これは実行可能なプログラム (もしくはシェルスクリプト) なら
なんでも構いません。
これはパッケージがアンインストールされる時に自動的に起動されます。
.It Fl r Ar rscript
パッケージの ``requirements'' 手続きとして
.Ar rscript
を用います。
これは実行可能なプログラム (もしくはシェルスクリプト) なら
なんでも構いません。
これはインストール時、アンインストール時に自動的に起動され、
インストール、アンインストールを継続するべきかどうかを決定するのに
用いられます。
.It Fl t Ar template
.Xr mktemp 3
への入力として
.Ar template
を用います。
これはデフォルトでは
.Pa /tmp/instmp.XXXXXX
という文字列ですが、
.Pa /tmp
ディレクトリの容量が制限されているような状況では
変更する必要があるかもしれません。
.Xr mktemp 3
が一意の ID を用いるために必要な `X' の文字をいくつか残しておく
ことを忘れないでください。
.It Fl X Ar excludefile
最終的にパッケージを作成する際に、
.Ar excludefile
を
.Cm tar
に
.Fl exclude-from
引数として渡します。
このオプションを使うにあたっての詳しい情報は、
.Cm tar
のマニュアルページ (もしくは
.Fl -help
引数を付けて
.Cm tar
を実行) を参照してください。
.It Fl D Ar displayfile
パッケージをインストールした後にファイルを (
.Xr more 1
を用いて) 表示します。
「ほとんど free なソフトウェア」などにおいて、
法的な通知のようなものなどに便利でしょう。
.It Fl m Ar mtreefile
パッケージがインストールされる前に、mtreefile を入力として
.Xr mtree 8
を実行します。mtree は
.Cm mtree
.Fl u 
.Fl f 
.Ar mtreefile
.Fl d
.Fl e 
.Fl p 
.Pa prefix
として起動されます (ただし
.Pa prefix
は
.Cm @cwd
ディレクティブにより名付けられた最初のディレクトリの名前)。
.El
.Pp
.Sh PACKING LIST 詳細
``packing list'' の書式 (
.Fl f
を参照) は単純で、パッケージに含めるファイル名を一行につきひとつずつ
並べたものにすぎません。
どこにインストールされるかわからないパッケージに対して絶対パスを
用いるのは一般的に悪い方法なので、
どこにインストールされることを想定しているのか、
そしてどんな ownership と mode を伴ってインストールされるべきなのか 
(こちらはオプション) を指定する方法が用意されています。
これは packing list 内に一連の特殊コマンドを
埋め込むことで実現されています。以下に簡単に示します:
.Bl -tag -width indent -compact
.It Cm @cwd Ar directory
内部のディレクトリポインタが
.Ar directory
を指すようにします。以降のファイル名はこのディレクトリへの相対パス
であるとみなされます。
.Cm @cd
はこのコマンドの別名です。
.It Cm @srcdir Ar directory
「作成時のみ」の内部ディレクトリポインタを
.Ar directory
に設定します。
パッケージ作成時に
.Cm @cwd
に優先すると言えますが、展開時にはこれはあてはまりません。
.It Cm @exec Ar command
展開処理の一環として
.Ar command
を実行します。
.Ar command
が以下の文字列を含んでいた場合、その場で置換されます。
以下の例では
.Cm @cwd
が
.Pa /usr/local
と設定されていて、最後に展開されたファイルが
.Pa bin/emacs
だったとしています。
.Bl -tag -width indent -compact
.It Cm "%F"
最後に展開されたファイル名に置換されます。この例では
.Pa bin/emacs
となります。
.It Cm "%D"
.Cm @cwd
で設定されたカレントディレクトリプレフィクスに置換されます。
この例では
.Pa /usr/local
になります。
.It Cm "%B"
完全な(フルパスの)ファイル名の ``basename'' へ置換されます。
これはカレントディレクトリプレフィクスに最後の filespec を
加え、末尾のファイル名部分を除いたものです。
この例では、
.Pa /usr/local/bin
になります。
.It Cm "%f"
完全な (フルパスを含む) ファイル名の ``filename'' 部分へ置換されます。
.Cm %B
と対応していて、この例では
.Pa emacs
となります。
.El
.It Cm @unexec Ar command
アンインストール処理の一環として
.Ar command
を実行します。特別な
.Cm %
文字列の置換は
.Cm @exec
と同様です。
このコマンドは
.Cm @exec
のようにパッケージを加える際に実行されるのではなく、パッケージが
削除されるときに実行されます。
これは、パッケージを加えるときに作られたリンクや他の
付随ファイル (パッケージの内容一覧に記されているファイルは自動的に
削除されるので除く) を削除するのに便利です。
アンインストールスクリプトよりも
.Cm @unexec
を用いる方が有利な点は、どこにインストールされているかわからない (
.Fl p
を参照) ファイルの場所を得るのに ``特殊文字列置換'' を用いることが
可能なことです。
.It Cm @mode Ar mode
この後で展開されるすべてのファイルのデフォルトの許可属性を
.Ar mode
に設定します。
書式は
.Cm chmod
コマンドで用いられているものと同じです (というよりも、そのまま
渡されています)。
引数無しで用いると、デフォルトの(展開)許可属性に戻します。
.It Cm @option Ar option
内部用パッケージオプションを設定します。
現在二つのオプションのみがサポートされています。
ひとつは
.Ar extract-in-place
で、これは pkg_add コマンドにパッケージの tarball を
staging area に展開せずに、目的の階層に直接展開するよう指示します
(これは主に配布物や他の特殊なパッケージなどに用いられます)。
もうひとつは
.Ar preserve
で、存在するファイルを別の所に保存しておくよう pkg_add に指示します
(これらは pkg_delete の時に復活しますが、自分の責任で行ってください)。
.It Cm @owner Ar user
この後で展開されるすべてのファイルのデフォルトの ownership を
.Ar user
に設定します。
引数無しで用いると、デフォルトの(展開) ownership に戻します。
.It Cm @group Ar group
この後で展開されるすべてのファイルのデフォルトの group ownership を
.Ar group
に設定します。
引数無しで用いると、デフォルトの(展開) group ownership に戻します。
.It Cm @comment Ar string
packing list 内にコメントを埋め込みます。
誰かが後で間違えてしまうかもしれない特に厄介な部分を説明しようとする
場合に便利です。
.It Cm @ignore
特殊な目的に使われるファイルなどのため、展開時に次のファイルを
無視する (どこにもコピーしない) ように、内部で用いられます。
.It Cm @ignore_inst
.Cm @ignore
と同様ですが、次のファイルを無視するのは一評価サイクルだけ
遅らせられます。
このおかげでこのディレクティブを
.Ar packinglist
ファイル内で用いることが可能になるので、インストーラが
無視するような、インストールスクリプトなどのための特殊な
データファイルを、配布物内に入れることができるようになります。
.It Cm @name Ar name
パッケージの名前を設定します。
これは必須項目であり、通常先頭に置かれます。
この名前はパッケージが提供するファイルの名前とは異なる可能性があり、
後でアンインストールする時のために
パッケージの記録を残しておくのに使われます。
名前が指定されなかった場合には、
.Nm
はパッケージ名から推定し、自動的に設定することに注意してください。
.It Cm @dirrm Ar name
ディレクトリ
.Pa name
がアンインストール時に削除されるよう宣言します。デフォルトでは、
パッケージのインストール時に作成されたディレクトリは
アンインストール時には削除されませんが、このディレクティブは明示的な
ディレクトリ削除方法を提供します。
このディレクティブはパッケージリストの最後で用いるようにしてください。
一つ以上の
.Cm @dirrm
ディレクティブが指定された場合、指定された順番に削除されます。
.Pa name
は空きディレクトリでなければ削除されません。
.It Cm @mtree Ar name
.Pa name
を、インストール時に用いられる
.Xr mtree 8
への入力ファイルとして宣言します (上述の
.Fl m
を参照)。最初にひとつだけ
.Cm @mtree
ディレクティブを指定することが推奨されます。
.It Cm @display Ar name
.Pa name
を、インストール時に表示されるファイルとして宣言します (上述の
.Fl D
を参照)。
.It Cm @pkgdep Ar pkgname
パッケージ
.Ar pkgname
に依存することを宣言します。
パッケージ
.Ar pkgname
はこのパッケージがインストールされる前にインストールされていなければ
ならず、またこのパッケージはパッケージ
.Ar pkgname
がアンインストールされる前にアンインストールされなければなりません。
パッケージが複数のパッケージに依存する場合には、複数の
.Cm @pkgdep
ディレクティブが用いられます。
.El
.Sh 関連項目
.Xr pkg_add 1 ,
.Xr pkg_delete 1 ,
.Xr pkg_info 1 ,
.Xr sysconf 3 .
.Sh 歴史
.Nm
コマンドは FreeBSD で最初に登場しました。
.Sh 作者
.Bl -tag -width indent -compact
.It "Jordan Hubbard"
ほとんどの仕事
.It "John Kohl"
NetBSD 向け修正
.El
.Sh バグ
パッケージが展開される際にハードリンクを保存しておくために、
配布物のファイル間でのハードリンクは
.Cm @cwd
ディレクティブで括られていなければなりません。
その上、実行時の引数の長さの制限 (これは
.Fn sysconf _SC_ARG_MAX
により返される値に依存します) のために、それらのハードリンクは単一の
.Cm tar
実行内で行われなければなりません。
.Pp
バグは他にもあるはずです。