mergemaster(8) FreeBSD 一般コマンドマニュアル

mergemaster

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

mergemaster


                 [-u N] [-w N] [-D /path]


解説

     mergemaster は、様々な設定や FreeBSD に関連したファイルをアップデートする
     作業を補助するために作られた Bourne シェルスクリプトです。この作業を始め
     る前に /etc ディレクトリをバックアップしておくことを B>強B>く勧めます。

     このスクリプトは /usr/src/etc/Makefile を使って / から下の仮のルート環境
     を作成し、そこに様々なファイルを格納します。 [-m] コマンドラインオプショ
     ンで違うソースディレクトリを指定することや、 [-D] コマンドラインオプショ
     ンで違う宛先ディレクトリを指定することもできます。そしてその環境中のそれ
     ぞれのファイルを、インストールされているものと比較します。スクリプトが新
     しいファイルに変更点を見つけた場合や、新しいファイルに対応するインストー
     ルされているファイルがない場合には、それを処理するための 4 つの選択肢を示
     します。新しいファイルをそのままインストールする、新しいファイルは消す、
     新旧のファイルを sdiff(1) を使って適切にマージする、後で手でマージするた
     めにファイルを仮のルート環境に残しておく、のいずれかを選べます。

     デフォルトでは、 /var/tmp/temproot に仮のルートを作り、 cvs(1) バージョン
     文字列 %Id/%FreeBSD があるファイルについてはそれを比較して、もし同じであ
     れば仮のファイルを削除します。 $Id 文字列がない時や、あっても一致しない場
     合には、ファイルそのものを比較します。 $Id 文字列を無視して全てのファイル
     を比較するように指定することもできます。

     mergemaster は umask を調べて、022 以外であれば警告を出します。ほとんどの
     設定ファイルは world read パーミッションを与えることが強制されているわけ
     ではありませんが、そうしないと問題になるかもしれません。もし 022 以外 の
     umask を選び、あとで何らかのトラブルが生じた場合、その原因がこれかもしれ
     ません。 /etc/master.passwd は特例として扱います。このファイルないしマー
     ジしたファイルをインストールすることを選択すると、このファイルのパーミッ
     ションはセキュリティ上の理由から常に 600 (rw-------) になります。このファ
     イルのアップデート版をインストールした後は、 pwd_mkdb(8) を -p オプション
     付きで実行して、パスワードデータベースの再構築と /etc/passwd の作り直しを
     させる必要があります。

     スクリプトは、 /usr/src/etc/Makefile が作成したファイルに付けた所有者 ID
     およびグループ ID と、 umask によって指定されたファイルパーミッションを用
     います。 context diff を選ばない限り、デフォルトで unified diff を使って
     差分を表示します。

     mergemaster は、比較開始直前と実行完了前に、指定したスクリプトを読み込み
     ます。最も簡単な方法は、 .mergemasterrc において、スクリプトへのパスを適
     切な変数へ設定することです。比較前に読み込まれるスクリプトは
     MM_PRE_COMPARE_SCRIPT で指定し、スクリプト完了後に実行するものは
     MM_EXIT_SCRIPT で指定します。これが、ローカルでの修正および特別な処理を行
     うファイルを指定するための推奨方法です。これには、比較せずに削除したい
     ファイルも含みます。指定したスクリプトは、 mergemaster 内部から読み込まれ
     ますので、スクリプトの全変数がカスタムスクリプト中で使用可能です。
     /etc/mergemaster.rc も使用可能です。これは、 .mergemasterrc の前に読み込
     まれます。コマンドラインで指定されたオプションが最後に更新されますので、
     両方のファイルに優先します。


     -a          自動実行。このオプションはインストールされているものと食い違
                 う全てのファイルを、手で処理するために仮のディレクトリに残し
                 ておきます。もしすでに temproot ディレクトリがある場合には、
                 以前はなかったディレクトリに新しく作ります。このオプションは
                 冗長フラグを解除しますが、他の全てのオプションと一緒に使えま
                 す。 -a オプションを使うと、-w オプションは無意味になります。

     -h          使用法とヘルプ情報を表示します。

     -i          宛先ディレクトリに存在しないファイルは、自動的にインストール
                 します。

     -m /path/to/sources
                 make(1) を実行するディレクトリのパスを指定します。 (言い替え
                 るとソースの場所です。-s がもう使われているので)

     -t /path/to/temp/root
                 仮のルート環境をデフォルトの /var/tmp/temproot の代わりに
                 /path/to/temp/root に作ります。

     -d          仮のルートディレクトリの名前に、日付と時間を足します。 -t オ
                 プションを指定しているときに日付も足したいなら、このオプショ
                 ンは -t の後に置く必要があります。

     -u N        umask を数字で指定します。デフォルトは 022 です。

     -w N        sdiff(1) コマンドに画面幅を桁数で指定します。デフォルトは 80
                 です。

     -D /path    ファイルをインストールする、宛先ディレクトリを指定します。


環境変数

     mergemaster スクリプトは、 PAGER 環境変数がセットされていればそれを使い、
     さもなくば more(1) を使います。もし PAGER に、フルパスではなく、 PATH の
     範囲にないプログラムを指定している場合には、 mergemaster は選択肢とともに
     どう続行するのかを催促します。 MM_PRE_COMPARE_SCRIPT と MM_EXIT_SCRIPT の
     変数は、前述のように使用します。スクリプト内部で使用する他の変数は、後で
     詳述するように、 .mergemasterrc で指定可能です。


使用例

     大抵の場合、あなたがする必要があるのは、プロンプトで mergemaster と打つこ
     とだけで、あとはスクリプトがあなたに代わって全ての作業をします。

     context diff を使い、かつ mergemaster が処理が進むにつれ、よりたくさんの
     説明をするようにするには:

           # mergemaster -cv

     mergemaster が仮のルート環境を /usr/tmp/root に作るように指定するには:

           # mergemaster -t /usr/tmp/root

     # mergemaster のオプションが、デフォルト値とともに一覧してあります
     # 以下のオプションはコマンドラインが上書きします
     #
     # 仮のルート環境をインストールするディレクトリ
     #TEMPROOT='/var/tmp/temproot'
     #
     # CVS $Id の検査を省略して全てのファイルを比較する厳密な比較
     #STRICT=no
     #
     # ファイルが食い違った時に差分を表示するための diff に使うフラグ
     #DIFF_FLAG='-u'
     #
     # より詳細な出力とチェックの追加を含める冗長モード
     #VERBOSE=
     #
     # システム上に存在しないファイルは自動的にインストールする
     #AUTO_INSTALL=
     #
     # 'make' を実行するディレクトリ (新しいファイルがある場所)
     #SOURCEDIR='/usr/src/etc'
     #
     # mergemaster がデフォルトのファイルモードとの比較に使う umask
     #NEW_UMASK=022
     #
     # ファイルをインストールする、宛先ディレクトリを指定する
     #DESTDIR=
     #
     # 以下のオプションはコマンドラインから上書きできません
     # PAGER にフルパスを含めたくない人用
     #DONT_CHECK_PAGER=
     #
     # 上を 'yes' にしたら、ページャへの PATH が含まれているか確認してください
     #PATH=/bin:/usr/bin:/usr/sbin
     #
     # 新旧の motd ファイルを比較しない
     #IGNORE_MOTD=yes
     #
     # 比較開始前に実行するスクリプトやスクリプト完了後に実行するスクリプト
     # のパスを指定する
     #MM_PRE_COMPARE_SCRIPT=
     #MM_EXIT_SCRIPT=


関連項目

     cvs(1), diff(1), make(1), more(1), sdiff(1), pwd_mkdb(8)

     /usr/src/etc/Makefile

     Nik Clayton, The Cutting Edge (using make world),
     http://www.FreeBSD.org/handbook/makeworld.html.

     (訳注: 日本語版は http://www.jp.FreeBSD.org/www.FreeBSD.org/ja/hand-
     book/makeworld.html )
     mergemaster スクリプトは、 1998 年 3 月 13 日に私のウェブページの中でもっ
     と単純な形で comproot という名前で最初に公開されました。仮のルート環境を
     作るというアイデアは、上で参照した Nik Clayton の make world tutorial か
     ら来ています。


作者

     このマニュアルページとスクリプトは Douglas Barton <DougB@FreeBSD.org> が
     書きました。


バグ

     今のところわかっているバグはありません。なにか問題や、コメントや、提案が
     あれば、どうか作者まで報告してください。このプログラムになされた改良のい
     くつかはユーザからの提案によるものです。ありがとう。

FreeBSD 4.4                    February 5, 2001                    FreeBSD 4.4

ABELNET VPSサービス