Reviewed by: The FreeBSD Japanese Manual Project <man-jp@jp.FreeBSD.ORG> Submitted by: horikawa@jp.freebsd.org
422 lines
11 KiB
Groff
422 lines
11 KiB
Groff
.\"
|
|
.\" 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
|
|
.\" %Id: pkg_add.1,v 1.17.2.9 1998/07/18 11:11:38 jkh 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 vInfRMS
|
|
.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 、 +DEINSTALL 、 +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
|
|
パッケージにインストール用スクリプトが存在しても、それを実行しません。
|
|
.It Fl n
|
|
実際にはインストールを行わず、インストールした場合に実行されるであろう
|
|
ステップを表示します。
|
|
.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 install
|
|
スクリプトが存在する場合、以下の引数を付けて実行されます:
|
|
.Bd -filled -offset indent -compact
|
|
.Ar pkg-name
|
|
.Ar PRE-INSTALL
|
|
.Ed
|
|
ここで
|
|
.Ar pkg-name
|
|
は問題としているパッケージの名前であり、
|
|
.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 install
|
|
スクリプトが含まれる場合、
|
|
.Bd -filled -offset indent -compact
|
|
.Cm script
|
|
.Ar pkg-name
|
|
.Ar POST-INSTALL
|
|
.Ed
|
|
として実行されます。これによりインストール前とインストール後の
|
|
両方の手続きをこなす一つの
|
|
.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
|
|
のうちで、十分な空き容量を持つ最初のディレクトリを使います。
|
|
.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 向け改良。
|
|
.El
|
|
.Sh バグ
|
|
配布物のファイル間のハードリンクは、
|
|
(1) 作業領域が、ファイルへのすべてのリンクの最終的な
|
|
ディレクトリと同じファイルシステムの場合もしくは、
|
|
(2) ファイルへのすべてのリンクが contents ファイル内で
|
|
.Cm @cwd
|
|
ディレクティブで括られている場合にのみ保存されます。
|
|
.Em さらに
|
|
その上、リンク名は単一の
|
|
.Cm tar
|
|
コマンド (
|
|
.Fn sysconf _SC_ARG_MAX
|
|
により返される値に依存する実行時の引数の長さの制限により、複数の
|
|
実行には分割できません) で展開されなければなりません。
|
|
.Pp
|
|
バグは他にもあるはずです。
|