aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/pkg_add.1
blob: 3a5fa4762964d5fbc3f0b9936ee7ffa5f33ddd84 (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
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
.\"
.\" 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_add.1
.\" %FreeBSD: src/usr.sbin/pkg_install/add/pkg_add.1,v 1.29.2.4 1999/08/29 15:45:11 peter Exp %
.\"
.\" jpman %Id: pkg_add.1,v 1.3 1997/06/09 04:19:05 jsakai Stab %
.Dd November 25, 1994
.Dt PKG_ADD 1
.Os FreeBSD
.Sh 名称
.Nm pkg_add
.Nd ソフトウェア配布パッケージをインストールするプログラム
.Sh 書式
.Nm
.Op Fl vInfrRMS
.Op Fl t Ar template
.Op Fl p Ar prefix
.Ar pkg-name [pkg-name ...]
.Sh 解説
.Nm 
コマンドは、
.Xr pkg_create 1
コマンドにより作成されたパッケージを展開するのに用いられます。

.Sh 警告
.Bf -emphasis
.Nm
コマンドはパッケージファイルに含まれるスクリプトやプログラムを
実行することがあるので、あなたのシステムは、危険な配布ファイルを
作る極悪人からの「トロイの木馬」や他の巧妙な攻撃などを受ける
可能性があります。
.Pp
パッケージファイルを提供する人物の能力と身元を確認するとよいでしょう。
より進んだ安全のためには、パッケージを展開するのに
.Fl M
フラグを用い、その内容と、スクリプトがシステムに害をおよぼさないかを
確認します。
+INSTALL, +POST-INSTALL, +DEINSTALL, +REQUIRE, +POST-INSTALL, +REQUIRE,
+MTREE_DIRS の各ファイルには
特に注意を払い、+CONTENTS ファイルの
.Cm @cwd ,
.Cm @mode
(setuid をチェック),
.Cm @dirrm ,
.Cm @exec ,
.Cm @unexec
ディレクティブを調べてください。
パッケージファイルを調べるのには
.Xr pkg_info 1
コマンドも使えます。
.Ef

.Sh オプション
以下のコマンドラインオプションが提供されています:
.Bl -tag -width indent
.It Ar pkg-name [... pkg-name]
指定されたパッケージがインストールされます。
- という名前が指定されると、
.Nm
は stdin から読み込みます。
パッケージがカレントディレクトリに見つからないと、
.Nm
は
.Ev PKG_PATH
で指定された各ディレクトリを探します。
.It Fl v
饒舌な出力に切り替えます。
.It Fl I
パッケージにインストール用スクリプト (pre-install または post-install)
が存在しても、それを実行しません。
.It Fl n
実際にはインストールを行わず、インストールした場合に実行されるであろう
ステップを表示します。
.It Fl R
パッケージのインストール結果を記録しません。
このオプションは、後でアンインストールすることを不可能にするため、
自分が何をしているかを理解している人のみ使ってください。
.It Fl r
リモートフェッチ機能を使用します。
適切なオブジェクト書式とリリースを決定してから、
パッケージを取得してインストールします。
.It Fl f
あらかじめ必要なパッケージがインストールされていなかったり、
requirements スクリプトが失敗した場合にも強制的にインストールします。
これは
.Nm
が見つからない必要なパッケージを探して自動的にインストールすることを
止めるわけではなく、見つからない場合でも中断しないようにします。
.It Fl p Ar prefix
パッケージからファイルを展開するディレクトリの前に
.Ar prefix
を付けます。
パッケージがデフォルトディレクトリを保持している場合には、
このオプションで変更できます。
.Nm
はディレクトリ設定が相対的に行われているか、絶対的に行われているか
を知る術がないので、最初の
.Cm @cwd
ディレクティブのみが変更されることに注意してください。
複数回のディレクトリ変更が行われることはまれですが、
実際にあった場合、すべてのディレクトリ変更を制御したくなる
でしょう。この場合、
.Cm MASTER
モード、
.Cm SLAVE
モードの使用を検討してみてください (オプション
.Fl M
と
.Fl S
を参照)。
.It Fl t Ar template
``作業領域'' を作成する際に、
.Xr mktemp 3
への入力として
.Ar template
を用います。
これはデフォルトでは
.Pa /var/tmp/instmp.XXXXXX
という文字列ですが、
.Pa /var/tmp
ディレクトリの容量が制限されているような状況では
変更する必要があるかもしれません。
.Xr mktemp 3
が一意の ID を用いるために必要な `X' の文字をいくつか残しておく
ことを忘れないでください。
.Pp
作業領域
.Ar template
をパッケージファイルがインストールされるディレクトリと同じディスク
パーティションに設定することによって、パフォーマンスを高めることが
可能です (大抵は
.Pa /usr
)。
.It Fl M
.Cm MASTER
モードで実行します。これは
.Nm
のとても特殊な実行モードであり、
.Cm SLAVE
モードと共に実行しなければなりません。
このモードで実行されると、
.Nm
は一時的な作業領域 (
.Fl t
オプションを参照) へパッケージを展開する以上のことはせず、
現在の作業領域ディレクトリ名を頭に付加した packing list を標準出力に
出力します(標準出力は
.Xr sed 1
のようなプログラムにフィルタされているかもしれません)。
.Cm SLAVE
モードと共に用いると、中身を処理する前にパッケージ構造に
大きな変更を加えることが可能になります。
.It Fl S
.Cm SLAVE
モードで実行します。これは
.Nm
のとても特殊な実行モードであり、
.Cm MASTER
モードと共に実行しなければなりません。
このモードで実行されると、
.Nm
はパッケージの内容がすでに作業領域に展開され、その場所が
標準入力から文字列として入力されることを想定します。
完全な packing list も stdin から読み込まれ、その後中身が
通常どおり処理されます。
.El
.Pp
一つ以上の
.Ar pkg-name
引数を指定することが可能で、それらはパッケージを含むファイル名(通常
拡張子 ``.tgz'' で終わります)か、ftp サイトにあるファイルを
示す URL のどちらかになります。
したがって、anonymous ftp から直接ファイルを展開することが
可能です (例えば
.Nm
ftp://ftp.freebsd.org/pub/FreeBSD/packages/shells/bash-1.14.4.tgz
)。
注意: もし上記のような転送で用いる ftp で
.Bf -emphasis
passive mode
.Ef
を利用したいなら、環境変数
.Bf -emphasis
FTP_PASSIVE_MODE
.Ef
に何らかの値を設定する必要があります。
そうでなければ、より一般的な ACTIVE モードが利用されます。
もしうまく動作していることがわかっているサイトからパッケージを
得ようとして
.Nm
が常に失敗する場合、あなたが
.Bf -emphasis
passive mode
.Ef
の ftp を使う必要のあるファイアウォールの中にいるのが原因である場合が
あります。
.Sh 技術詳細
.Nm
はきわめて単純です。各パッケージの "packing list" を
特別な作業ディレクトリに展開し、
中身を解析し、内容を完全に展開するために
以下の手順を実行します:
.Bl -enum -indent indent
.It
パッケージがすでにインストールされている、と記録されているかどうかを
チェックします。もしそうならインストールを中断します。
.It
.Cm @pkgdep
ディレクティブ (
.Xr pkg_create 1
を参照) による
パッケージのすべての依存関係をチェックし、各々が存在するかどうかを
確認します。もし存在しなければ、足りないパッケージを見つけて自動的に
インストールしようとします。もし見つからなければ、
インストールを中断します。
.It
パッケージがどのようにシステムに追加されるかを制御する
.Cm @option
ディレクティブを検索します。このマニュアルページを書いている時点では、
実装されているオプションは
.Cm @option extract-in-place
のみであり、これは
.Pa /tmp
内の作業領域を経由しないで、
パッケージを最終的なディレクトリに直接展開するようにします。
.It
.Cm @option extract-in-place
が指定されていれば、パッケージは最終的な場所に直接展開され、
そうでなければ作業領域内に展開されます。
.It
パッケージが
.Ar require
ファイル (
.Xr pkg_create 1
を参照) を含んでいる場合、そのファイルを以下の引数を付けて実行します:
.Bd -filled -offset indent -compact
.Ar pkg-name
.Ar INSTALL
.Ed
ここで
.Ar pkg-name
は問題としているパッケージの名前であり、
.Ar INSTALL
キーワードはインストールの requirements チェックであることを
示しています (これは複数の機能を提供するひとつのスクリプトを
用いようとする場合に有用です)。
.It
パッケージに
.Ar pre-install
スクリプトが存在する場合、以下の引数を付けて実行されます:
.Bd -filled -offset indent -compact
.Cm script
.Ar pkg-name
.Ar PRE-INSTALL
.Ed

ここで
.Ar pkg-name
は対象のパッケージ名であり、
.Ar PRE-INSTALL
はこれがインストール前のフェーズであることを示すキーワードです。

.Cm 注釈:
(
.Cm Fl i
および
.Cm Fl I
のフラグを
.Xr pkg_create 1
に使用することにより) パッケージ作成時に
pre-install と post-install のスクリプトが別々に与えられる場合には、
.Ar PRE-INSTALL
キーワードは登場しません。
.It
.Cm @option extract-in-place
が指定されていない場合、packing list (
.Pa +CONTENTS
ファイル) が作業領域から最終的な場所に
ファイルを移動 (必要ならコピー) するために参照されます。
.It
パッケージが
.Ar mtreefile
ファイル (
.Xr pkg_create 1
を参照) を含む場合、mtree が以下の引数を付けて実行されます:
.Bd -filled -offset indent -compact
.Cm mtree
.Fl u 
.Fl f 
.Ar mtreefile
.Fl d
.Fl e 
.Fl p 
.Pa prefix 
.Ed
ここで
.Pa prefix
は
.Fl p
フラグが指定されていればその prefix、
.Fl p
フラグが指定されていない場合にはこのパッケージの最初の
.Cm @cwd
ディレクティブのディレクトリ名が prefix になります。
.It
パッケージに
.Ar post-install
スクリプトが含まれる場合、
.Bd -filled -offset indent -compact
.Cm script
.Ar pkg-name
.Ar POST-INSTALL 
.Ed
として実行されます。
ここで
.Ar pkg-name
は対象のパッケージ名であり、
.Ar POST-INSTALL
はこれがインストール後のフェーズであることを示すキーワードです。

.Cm 注釈:
(
.Cm Fl i
および
.Cm Fl I
のフラグを
.Xr pkg_create 1
に使用することにより) パッケージ作成時に
pre-install と post-install のスクリプトが別々に与えられる場合には、
.Ar POST-INSTALL
キーワードは登場しません。

.Ar POST-INSTALL
および
.Ar PRE-INSTALL
のキーワードを渡す背景には、
インストールの前とインストール後の
両方の手続きをこなす一つの
.Ar install
スクリプトを用いることを可能にすることがあります。
しかしながら、メンテナンスの観点からは、機能を分離する方が有利かつ容易です。
.It
インストールが終了すると、後で
.Xr pkg_delete 1
で使うために packing list 、
.Ar deinstall
スクリプト、 description 、 display の各ファイルが
.Pa /var/db/pkg/<pkg-name>
にコピーされます。
パッケージの依存関係は、他のパッケージの
.Pa /var/db/pkg/<other-pkg>/+REQUIRED_BY
ファイル (PKG_DBDIR 環境変数が設定してある場合、上記の
.Pa /var/db/pkg/
が置き換えられます) に記録されます。
.It
最後に、作業領域が削除されプログラムは終了します。
.El
.Pp
すべてのスクリプトは環境変数
.Ev PKG_PREFIX
にインストール時の prefix (
前述の
.Fl p
オプションを参照) が設定された状態で実行されます。
このことにより、パッケージの作者は
.Cm pkg_add
の
.Fl p
フラグによりパッケージがインストールされるディレクトリが
変更されても、きちんとふるまうスクリプトを書くことが可能になります。
.Sh 環境変数
.Ev PKG_PATH
の値は、指定されたパッケージが見つからない時に用いられます。
環境変数はコロンで区切られた一連のエントリです。
各エントリはディレクトリ名からなります。
カレントディレクトリは空欄のディレクトリ名で暗黙のうちに指定されるか、
一つのピリオドで明示的に指定します。
.Pp
環境変数
.Ev PKG_DBDIR
は、インストールされたパッケージについてのデータベースの位置を指定します。
.Pp
.Nm
が作業領域の生成を試みる作業用ディレクトリの名前は、環境変数
.Ev PKG_TMPDIR
と
.Ev TMPDIR
とから(この順で)取られます。
これらの変数が存在しないか、指定されたディレクトリに十分な空き容量が
ない場合、
.Nm
は、
.Pa /var/tmp ,
.Pa /tmp ,
.Pa /usr/tmp
のうちで、十分な空き容量を持つ最初のディレクトリを使います。
.Pp
環境変数
.Ev PACKAGESITE
は、
.Nm
が取得を行う代替位置を指定します。
この変数を使用すると、
.Fl r
オプション使用時に
.Nm
が自動的にディレクトリを決定する論理が破壊されます。
.Sh 関連ファイル
.Bl -tag -width /var/db/pkg -compact
.It Pa /var/tmp
環境変数
.Ev PKG_TMPDIR
と
.Ev TMPDIR
のどちらも適切なディレクトリを指定しない場合に、作業領域を作成するため
に用いる作業用ディレクトリ。
.It Pa /tmp
.Pa /var/tmp
が存在しないか、十分な空き容量を持たない場合、その次に選ばれる
ディレクトリ。
.It Pa /usr/tmp
.Pa /var/tmp
と
.Pa /tmp
のどちらも作業領域を作成するには適切でない場合、最後に選ばれる
ディレクトリ。
.It Pa /var/db/pkg
インストールされたパッケージについてのデータベースのデフォルトの位置。
.El
.Sh 関連項目
.Xr pkg_create 1 ,
.Xr pkg_delete 1 ,
.Xr pkg_info 1 ,
.Xr mktemp 3 ,
.Xr sysconf 3 ,
.Xr mtree 8
.Sh 作者
.An Jordan Hubbard
最初の仕事およびそれに続く開発。
.An John Kohl
NetBSD 向け改良。
.Sh バグ
配布物のファイル間のハードリンクは、
(1) 作業領域が、ファイルへのすべてのリンクの最終的な
ディレクトリと同じファイルシステムの場合もしくは、
(2) ファイルへのすべてのリンクが contents ファイル内で
.Cm @cwd
ディレクティブで括られている場合にのみ保存されます。
.Em さらに
その上、リンク名は単一の
.Cm tar
コマンド (
.Fn sysconf _SC_ARG_MAX
により返される値に依存する実行時の引数の長さの制限により、複数の
実行には分割できません) で展開されなければなりません。
.Pp
バグは他にもあるはずです。