wiki:Packages/update-from-skel

update-from-skel

現在は、 VinePlus の扱いであるため、追加でパッケージをインストールする必要があります。

$ sudo apt-get update
$ sudo apt-get install update-from-skel

アップグレードインストールなどにより、etcskel パッケージが更新された場合などに /etc/skel に存在する設定ファイルの雛形とホームディレクトリにあるファイルを比較し、差異があれば更新を行うためのメニューを表示します。gettexize されているので LANG="C" な環境では、(Broken)英語で表示されます。

$ update-from-skel

特に差異がなければ、何も出力せずにそのまま終了します。

差異がない場合

/home/username/.bash_logout と /etc/skel/.bash_logout の間に違いはありません。

上記の様に違いがないことのみを報告して、次のファイルの比較へ自動的に移行します。

差異がある場合

対応するファイルが存在し、内容に違いがある場合、次の様に side-by-side 形式で違いを表示します。

===================
違いを検出
===================
/home/username/.rpmmacros                                 /etc/skel/.rpmmacros

# GnuPG によるパッケージ署名を行う                          # GnuPG によるパッケージ署名を行う
%_signature gpg                                         | # %_signature gpg
%_gpg_name Anatano Namae <user@domain>                  | # %_gpg_name Your
Name <your mail address>

# ソースファイル置き場をパッケージ別にする                   # ソースファイル置き場をパッケージ別にする
%_sourcedir %{_topdir}/SOURCES/%{name}                    %_sourcedir %{_topdir}/SOURCES/%{name}

左側と右側のファイルの間に出力される記号は以下のとおりです。

記号説明
対応する行が共通である。つまり、両方の行が同一であるか、 違いが --ignore オプションのいずれかによって無視された。
| 対応する行が異なる。両方とも完全か、両方とも不完全かである。
< ファイルは異なり、左側のファイルにだけこの行が含まれている。
> ファイルは異なり、右側のファイルにだけこの行が含まれている。
( 左側のファイルにだけこの行が含まれているが、違いは無視される。
) 右側のファイルにだけこの行が含まれているが、違いは無視される。
\ 対応する行が異なる。左側のファイルにだけ行末の改行がない。
/ 対応する行が異なる。右側のファイルにだけ行末の改行がない。

通常出力行は、そこに含まれる行の末尾に改行がない場合に限って改行されません。しかし、出力行が 2 行の差異を表している場合には、 片方だけに改行がない場合もあり得ます。この場合出力行には改行が出力されますが、 溝のマークは左側の行末に改行がなければ \' に、右側の行末に改行がなければ /' になります。

差分を表示し終わるとメニューを表示し、ユーザーの入力を待ちます。

C) 現在のファイルを利用
T) テンプレートファイルを利用
E) vim の diff モードで編集
I) sdiff を利用して対話的に結合
Q) 終了する
どうしますか? >

大文字・小文字は区別しません。次の表で示す文字を半角で入力し、Enter キーを押してください。

文字説明
C ホームディレクトリにあるファイルをそのまま使用します。次のファイルの比較へ移行します。
T /etc/skel にあるファイルをホームディレクトリへコピー(上書き)します。次のファイルの比較へ移行します。
E エディタ vim の diff モードを利用してファイルを編集します。
I sdiff を利用して2つのファイルを対話的にマージして新しい設定ファイルにします。
Q (比較するべきファイルが残っていても)このツールを終了します。

sdiff を利用して対話的に結合

共通行のブロック(と空白の溝)は、左側(ホームディレクトリ)のファイルから出力にコピーされます。異なっている行ブロックのあとには、`%' でプロンプトを出して一時停止し、 以下のコマンドのどれか 1つが入力されるのを待ちます。

コマンド 詳細
e 両方のバージョンとも捨てる。内容が空の一時ファイルをテキストエディタで開き、 エディタ終了後のファイルの内容を出力にコピーする。
eb 両方のバージョンを結合した結果をエディタで編集し、 終了後の内容を出力にコピーする。
ed eb と似ているが、各バージョンのブロックの前にヘッダを置き、どのファイルのどの行のものかがわかるようにする。
el 左側のバージョンをエディタで編集し、終了後の内容を出力にコピーする。
er 右側のバージョンをエディタで編集し、終了後の内容を出力にコピーする。
l 左側のバージョンを出力にコピーする。
q 終了する。
r 右側のバージョンを出力にコピーする。
s 共通な行を表示せずにコピーする。
v 共通な行を表示しながらコピーする。デフォルト。

/etc/skel のみに存在するファイルがある場合

/etc/skel のみに存在するファイルがある場合、以下のように表示し、ユーザーの入力を待ちます。

===================
違いを検出
===================
/etc/skel/.Wnn7/uumrc が存在しますが、/home/username/.Wnn7/uumrc は存在しません。

C) /etc/skel/.Wnn7/uumrc を /home/username/.Wnn7/uumrc にコピー
N) なにもしない
Q) 終了する
どうしますか? >

次の表で示す文字を半角で入力し、Enter キーを押してください。

文字説明
C /etc/skel にあるファイルをホームディレクトリの該当位置にコピーします。(中間のディレクトリも作成されます。)
N なにもせず、次のファイルの比較に移行します。
Q (比較するべきファイルが残っていても)このツールを終了します。

対応するファイルがディレクトリの場合

/etc/skel に存在する通常ファイルに対して、ホームディレクトリに同階層のディレクトリがある場合、次のように表示し、ユーザーの入力を待ちます。

===================
違いを検出
===================
/etc/skel/.Wnn7/uumkey がファイルですが、/home/username/.Wnn7/uumkey はディレクトリです。

R) ディレクトリ /home/username/.Wnn7/uumkey を削除し、/etc/skel/.Wnn7/uumkey を /home/username/.Wnn7/uumkey にコピー
L) /home/username/.Wnn7/uumkey の内容を一覧表示
N) なにもしない
Q) 終了する
どうしますか? >

次の表で示す文字を半角で入力し、Enter キーを押してください。

文字説明
R ホームディレクトリにある該当ディレクトリを削除した上、/etc/skel にあるファイルをホームディレクトリの該当位置にコピーします。
N なにもせず、次のファイルの比較に移行します。
Q (比較するべきファイルが残っていても)このツールを終了します。

フィードバック

以下のような事項があれば、BTS にレポートを作成してください。

  • バグ
  • メッセージが分かりにくい
  • 機能追加要望