加藤(大阪)です。 ちょっと興味が有ったので、こちらでも調べてみました。 (単なる "補足" になりそうですが...) Fri, 22 Jan 2010 21:15:51 +0900 (JST) 付 ARAI Shun-ichiさんのメールより: > cp $3 ${HOME} > ...... > cp を実行していますが、コピー先が ${HOME} となっており、ファイル名を > 指定していません。 ここは、ファイル名を指定していないのではなく、$3 = $NEW をコピー元ファイ ル名として指定しているので、例えば、 > ##### emacs-faces.el > TARGET=${HOME}/.emacs-faces.el > NEW=/etc/skel/.emacs > ...... > chkMD5Update $TARGET $MD5SUM $NEW && rm ${TARGET} の部分で chkMD5Update() がよばれた時は、 cp /etc/skel/.emacs ~/ が実行されると思います。 で、その前の箇所、 > chkSame $TARGET $NEW || ( で、$TARGET と $NEW を比較する chkSame() を呼んでますが、 > TARGET=${HOME}/.emacs-faces.el > NEW=/etc/skel/.emacs と、全く違うファイルを、 if diff $1 $2 >/dev/null 2>&1; then ※ $1 → $TARGET、$2 → $NEW で比較している為、chkSame() は、必ず 1 を返すの で、|| 以下の部分が実行され、chkMD5Update() で ~/.emacs-faces.el が "旧 バージョンよりの修正が無かった場合" は、/etc/skel/.emacs-faces.el ではな く、/etc/skel/.emacs がコピーされてしまう、という感じですね。 この為、直前の、 ##### emacs TARGET=${HOME}/.emacs NEW=/etc/skel/.emacs ...... chkMD5Update $TARGET $MD5SUM $NEW の部分で折角 "以前のバージョンの、カスタマイズ済みの ${HOME}/.emacs が保 持された" 場合でも、 > 今回、~/.emacs-faces.el が存在したところにこれが実行され、 > /etc/skel/.emacs が ~/.emacs に上書きされたものと思われます。 と書かれていますように、##### emacs-faces.el 以下の部分で、 ${HOME}/.emacs が /etc/skel/.emacs で、無条件に上書きされてしまうようで すね。 > chkAndCpFile .emacs-faces.el > chkAndCpFile .emacs-fontset.el > > のような感じで /etc/skel をチェックせずにコピーを実行している個所があり > ます。このせいでエラーが表示され、~/upgrade-log には実際には成功してい > ないコピーのログが残されます。 Vine 5 では、.emacs-faces.el と .emacs-fontset.el は etcskel パッケージ から省かれてるようですが、「省かれているのが間違ってる」のか、 vupgrade スクリプトの、 ##### emacs-faces.el TARGET=${HOME}/.emacs-faces.el NEW=/etc/skel/.emacs などの部分や、 chkAndCpFile .emacs-faces.el chkAndCpFile .emacs-fontset.el の部分が "不要" なのかは知りませんが、いずれにしても、 install -m 644 /etc/skel/$1 ${HOME} は、必ず失敗(インストール元が存在しない)しているのに、続く echo "added new config file $1" >> ${LOG} で、コピーした旨のログが残されるというのはおかしいですね。 /etc/skel/ 以下のファイルを供給している etcskel パッケージと /usr/bin/vupgrade を供給している vutils パッケージのいずれか、又は両方に 不具合が有るようですね。 バグ報告されては如何でしょうか? -- 加藤 雅 <mkato@xxxxxxxxxxxxx> http://add10.hp.infoseek.co.jp/rox/ http://www2.odn.ne.jp/add10/fluxbox/