378 lines
11 KiB
Groff
378 lines
11 KiB
Groff
.\" Copyright (c) 1998-2003 Douglas Barton
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" 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.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" %FreeBSD: src/usr.sbin/mergemaster/mergemaster.8,v 1.29 2004/07/02 23:12:48 ru Exp %
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd February 5, 2001
|
|
.Dt MERGEMASTER 8
|
|
.Os
|
|
.Sh 名称
|
|
.Nm mergemaster
|
|
.Nd アップグレード中の設定ファイルその他のマージ
|
|
.Sh 書式
|
|
.Nm
|
|
.Op Fl scrvahipCP
|
|
.Op Fl m Ar /path/to/sources
|
|
.Op Fl t Ar /path/to/temp/root
|
|
.Op Fl d
|
|
.Op Fl u Ar N
|
|
.Op Fl w Ar N
|
|
.Op Fl D Ar /path
|
|
.Sh 解説
|
|
.Nm
|
|
ユーティリティは、様々な設定や
|
|
.Fx
|
|
に関連したファイルをアップデートする作業を
|
|
補助するために作られた Bourne シェルスクリプトです。
|
|
この作業を始める前に
|
|
.Pa /etc
|
|
ディレクトリをバックアップしておくことを
|
|
.Sy 強く
|
|
勧めます。
|
|
.Pp
|
|
このスクリプトは
|
|
.Pa /usr/src/etc/Makefile
|
|
を使って
|
|
.Pa /
|
|
から下の仮のルート環境を作成し、そこに様々なファイルを格納します。
|
|
.Op Fl m
|
|
コマンドラインオプションで違うソースディレクトリを指定することや、
|
|
.Op Fl D
|
|
コマンドラインオプションで違う宛先ディレクトリを指定することもできます。
|
|
そしてその環境中のそれぞれのファイルを、
|
|
インストールされているものと比較します。
|
|
スクリプトが新しいファイルに変更点を見つけた場合や、
|
|
新しいファイルに対応するインストールされているファイルがない場合には、
|
|
それを処理するための 4 つの選択肢を示します。
|
|
新しいファイルをそのままインストールする、
|
|
新しいファイルは消す、
|
|
新旧のファイルを
|
|
.Xr sdiff 1
|
|
を使って適切にマージする、
|
|
後で手でマージするためにファイルを仮のルート環境に残しておく、
|
|
のいずれかを選べます。
|
|
.Pp
|
|
デフォルトでは、
|
|
.Pa /var/tmp/temproot
|
|
に仮のルートを作り、
|
|
.Xr cvs 1
|
|
バージョン文字列 %Id/%FreeBSD があるファイルについてはそれを比較して、
|
|
もし同じであれば仮のファイルを削除します。
|
|
$Id 文字列がない時や、あっても一致しない場合には、
|
|
ファイルそのものを比較します。
|
|
$Id 文字列を無視して全てのファイルを比較するように指定することもできます。
|
|
.Pp
|
|
マージメニューのオプションは、
|
|
古いファイルに対するカスタマイズを取り出して、
|
|
新しいファイルに簡単にマージできるようにデザインされています。
|
|
カスタマイズしていないファイルに対するファイルの変更を取り込むために、
|
|
マージ機能を使用することもできますが、推奨できません。
|
|
.Pp
|
|
.Nm
|
|
ユーティリティは umask を調べて、022 以外であれば警告を出します。
|
|
ほとんどの設定ファイルは world read パーミッションを与えることが
|
|
強制されているわけではありませんが、
|
|
そうしないと問題になるかもしれません。
|
|
もし 022 以外 の umask を選び、あとで何らかのトラブルが生じた場合、
|
|
その原因がこれかもしれません。
|
|
.Pa /etc/master.passwd
|
|
は特例として扱います。
|
|
このファイルないしマージしたファイルをインストールすることを選択すると、
|
|
このファイルのパーミッションはセキュリティ上の理由から
|
|
常に 600 (rw-------) になります。
|
|
このファイルのアップデート版をインストールした後は、
|
|
.Xr pwd_mkdb 8
|
|
を -p オプション付きで実行して、
|
|
パスワードデータベースの再構築と
|
|
.Pa /etc/passwd
|
|
の作り直しをさせる必要があります。
|
|
.Pp
|
|
スクリプトは、
|
|
.Pa /usr/src/etc/Makefile
|
|
が作成したファイルに付けた所有者 ID およびグループ ID と、
|
|
umask によって指定されたファイルパーミッションを用います。
|
|
context diff を選ばない限り、
|
|
デフォルトで unified diff を使って差分を表示します。
|
|
.Pp
|
|
.Nm
|
|
ユーティリティは、
|
|
比較開始直前と実行完了前に、指定したスクリプトを読み込みます。
|
|
最も簡単な方法は、
|
|
.Pa .mergemasterrc
|
|
において、スクリプトへのパスを適切な変数へ設定することです。
|
|
比較前に読み込まれるスクリプトは
|
|
.Ev MM_PRE_COMPARE_SCRIPT
|
|
で指定し、スクリプト完了後に実行するものは
|
|
.Ev MM_EXIT_SCRIPT
|
|
で指定します。
|
|
これが、
|
|
ローカルでの修正および特別な処理を行うファイルを指定するための推奨方法です。
|
|
これには、比較せずに削除したいファイルも含みます。
|
|
指定したスクリプトは、
|
|
.Nm
|
|
内部から読み込まれますので、
|
|
スクリプトの全変数がカスタムスクリプト中で使用可能です。
|
|
.Pa /etc/mergemaster.rc
|
|
も使用可能です。
|
|
これは、
|
|
.Pa .mergemasterrc
|
|
の前に読み込まれます。
|
|
コマンドラインで指定されたオプションが最後に更新されますので、
|
|
両方のファイルに優先します。
|
|
.Pp
|
|
オプションは以下の通りです:
|
|
.Bl -tag -width Fl
|
|
.It Fl s
|
|
全てのファイルの対について diff をとり、厳密な比較をします。
|
|
この比較は、CVS $Id 以外に対し、1 行ずつ実行されます。
|
|
.It Fl c
|
|
unified diff の代わりに context diff を用います。
|
|
.It Fl r
|
|
仮のルート環境を新規に作ることをせずに、
|
|
以前掃除したディレクトリで
|
|
.Nm
|
|
を再実行します。
|
|
このオプションは他の全てのオプションと一緒に使えます。
|
|
.It Fl v
|
|
処理についてより冗長に出力します。
|
|
あなたが初めて
|
|
.Nm
|
|
を実行する時には、おそらくこのオプションを付けるべきでしょう。
|
|
さらにこのオプションは、
|
|
インストールされている方の
|
|
.Pa /etc
|
|
にしかないファイルの一覧を提供します。
|
|
.It Fl a
|
|
自動実行。
|
|
このオプションはインストールされているものと食い違う全てのファイルを、
|
|
手で処理するために仮のディレクトリに残しておきます。
|
|
もしすでに
|
|
.Pa temproot
|
|
ディレクトリがある場合には、
|
|
以前はなかったディレクトリに新しく作ります。
|
|
このオプションは冗長フラグを解除しますが、
|
|
他の全てのオプションと一緒に使えます。
|
|
-a オプションを使うと、-w オプションは無意味になります。
|
|
.It Fl h
|
|
使用法とヘルプ情報を表示します。
|
|
.It Fl i
|
|
宛先ディレクトリに存在しないファイルは、自動的にインストールします。
|
|
.It Fl p
|
|
世界構築前モード。
|
|
{build|install}world に不可欠なファイルのみ比較します。
|
|
これには
|
|
.Pa /etc/make.conf
|
|
も含まれます。
|
|
.It Fl C
|
|
標準の
|
|
.Nm
|
|
の実行の後に、rc.conf[.local] のオプションとデフォルトのものとを比較します。
|
|
.It Fl P
|
|
置き換えるファイルを
|
|
.Pa /var/tmp/mergemaster/preserved-files-<date>
|
|
または
|
|
.Nm
|
|
rc ファイルで指定したディレクトリに保存します。
|
|
.It Fl m Ar /path/to/sources
|
|
.Xr make 1
|
|
を実行するディレクトリのパスを指定します。
|
|
(言い替えるとソースの場所です。-s がもう使われているので)
|
|
.It Fl t Ar /path/to/temp/root
|
|
仮のルート環境をデフォルトの
|
|
.Pa /var/tmp/temproot
|
|
の代わりに
|
|
.Pa /path/to/temp/root
|
|
に作ります。
|
|
.It Fl d
|
|
仮のルートディレクトリの名前に、日付と時間を足します。
|
|
-t オプションを指定しているときに日付も足したいなら、
|
|
このオプションは -t の後に置く必要があります。
|
|
.It Fl u Ar N
|
|
umask を数字で指定します。デフォルトは 022 です。
|
|
.It Fl w Ar N
|
|
.Xr sdiff 1
|
|
コマンドに画面幅を桁数で指定します。
|
|
デフォルトは 80 です。
|
|
.It Fl D Ar /path
|
|
ファイルをインストールする、宛先ディレクトリを指定します。
|
|
.El
|
|
.Sh 環境変数
|
|
.Nm
|
|
ユーティリティは、
|
|
.Ev PAGER
|
|
環境変数がセットされていればそれを使い、さもなくば
|
|
.Xr more 1
|
|
を使います。
|
|
もし
|
|
.Ev PAGER
|
|
に、フルパスではなく、
|
|
.Ev PATH
|
|
の範囲にないプログラムを指定している場合には、
|
|
.Nm
|
|
は選択肢とともにどう続行するのかを催促します。
|
|
.Ev MM_PRE_COMPARE_SCRIPT
|
|
と
|
|
.Ev MM_EXIT_SCRIPT
|
|
の変数は、前述のように使用します。
|
|
スクリプト内部で使用する他の変数は、後で詳述するように、
|
|
.Pa .mergemasterrc
|
|
で指定可能です。
|
|
.Sh 使用例
|
|
大抵の場合、あなたがする必要があるのは、
|
|
プロンプトで
|
|
.Nm
|
|
と打つことだけで、あとはスクリプトがあなたに代わって全ての作業をします。
|
|
.Pp
|
|
context diff を使い、かつ
|
|
.Nm
|
|
が処理が進むにつれ、よりたくさんの説明をするようにするには:
|
|
.Pp
|
|
.Dl # mergemaster -cv
|
|
.Pp
|
|
.Nm
|
|
が仮のルート環境を
|
|
.Pa /usr/tmp/root
|
|
に作るように指定するには:
|
|
.Pp
|
|
.Dl # mergemaster -t /usr/tmp/root
|
|
.Pp
|
|
110 桁の画面と、厳密な比較を指定するには:
|
|
.Pp
|
|
.Dl # mergemaster -sw 110
|
|
.Sh 関連ファイル
|
|
.Bl -tag -width $HOME/.mergemasterrc -compact
|
|
.It Pa /etc/mergemaster.rc
|
|
.It Pa $HOME/.mergemasterrc
|
|
.El
|
|
.Pp
|
|
.Nm
|
|
ユーティリティは、これらファイルがあれば読み込みます。
|
|
コマンドラインオプションは、rc ファイルオプションに優先します。
|
|
.Pa $HOME/.mergemasterrc
|
|
は、
|
|
.Pa /etc/mergemaster.rc
|
|
に優先します。
|
|
全ての値をコメントアウトした例を示します:
|
|
.Pp
|
|
.Bd -literal
|
|
# mergemaster のオプションが、デフォルト値とともに一覧してあります
|
|
# 以下のオプションはコマンドラインが上書きします
|
|
#
|
|
# 仮のルート環境をインストールするディレクトリ
|
|
#TEMPROOT='/var/tmp/temproot'
|
|
#
|
|
# CVS $Id の検査を省略して全てのファイルを比較する厳密な比較
|
|
#STRICT=no
|
|
#
|
|
# unified, context 等の diff の種類
|
|
#DIFF_FLAG='-u'
|
|
#
|
|
# diff への追加オプション。-s を使用するとアンセットできます。
|
|
#DIFF_OPTIONS='-I$\&FreeBSD:.*[$]' # Ignores CVS Id tags
|
|
#
|
|
# より詳細な出力とチェックの追加を含める冗長モード
|
|
#VERBOSE=
|
|
#
|
|
# システム上に存在しないファイルは自動的にインストールする
|
|
#AUTO_INSTALL=
|
|
#
|
|
# /etc/rc.conf[.local] と /etc/defaults/rc.conf を比較する
|
|
#COMP_CONFS=yes
|
|
#
|
|
# 置き換えるファイルを保存する
|
|
#PRESERVE_FILES=yes
|
|
#PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date +%y%m%d-%H%M%S`
|
|
#
|
|
# '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=
|
|
.Ed
|
|
.Sh 関連項目
|
|
.Xr cvs 1 ,
|
|
.Xr diff 1 ,
|
|
.Xr make 1 ,
|
|
.Xr more 1 ,
|
|
.Xr sdiff 1 ,
|
|
.Xr pwd_mkdb 8
|
|
.Pp
|
|
.Pa /usr/src/etc/Makefile
|
|
.Rs
|
|
.%O http://www.FreeBSD.org/doc/handbook/makeworld.html
|
|
.%T The Cutting Edge (using make world)
|
|
.%A Nik Clayton
|
|
.Re
|
|
(訳注: 日本語版は
|
|
http://www.jp.FreeBSD.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/makeworld.html
|
|
)
|
|
.Sh 診断
|
|
成功終了、ないしユーザが実行中に手動で脱出した場合には、
|
|
終了ステータスは 0 です。
|
|
.Pp
|
|
以下に挙げるいずれかの理由で失敗した場合には、終了ステータスは 1 です:
|
|
.Pp
|
|
コマンドラインオプションが不正
|
|
.Pp
|
|
仮のルート環境を作成するのに失敗
|
|
.Pp
|
|
仮のルートにファイルを格納するのに失敗
|
|
.Sh 歴史
|
|
.Nm
|
|
スクリプトは、
|
|
1998 年 3 月 13 日に
|
|
私のウェブページの中で
|
|
もっと単純な形で
|
|
.Pa comproot
|
|
という名前で最初に公開されました。
|
|
仮のルート環境を作るというアイデアは、
|
|
上で参照した Nik Clayton の make world tutorial から来ています。
|
|
.Sh 作者
|
|
このマニュアルページとスクリプトは
|
|
.An Douglas Barton Aq DougB@FreeBSD.org
|
|
が書きました。
|
|
.Sh バグ
|
|
今のところわかっているバグはありません。
|
|
なにか問題や、コメントや、提案があれば、どうか作者まで報告してください。
|
|
このプログラムになされた改良のいくつかは
|
|
ユーザからの提案によるものです。ありがとう。
|