vine-users ML アーカイブ



[vine-users:079997] Vine5.0へ のアップグレードで ~/.emacs 破壊

  • From: ARAI Shun-ichi <hermes@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:079997] Vine5.0へ のアップグレードで ~/.emacs 破壊
  • Date: Fri, 22 Jan 2010 21:15:51 +0900 (JST)
あらいです。

 以前、Vine5.0 にアップグレードしたら ~/.emacs が破壊されたと報告しま
したが、理由がわかりました。

 破壊していたのは、/usr/bin/vupgrade のようです。これは、

$ ls -l /etc/X11/xinit/xinitrc.d/00vupgrade.sh
lrwxrwxrwx 1 root root 17 12月26日 20:23 /etc/X11/xinit/xinitrc.d/00vupgrade.sh -> /usr/bin/vupgrade*

となっているので、X の起動時にいつも呼ばれます。尤も
~/.vine/VineLinux5.0 があると途中で抜けますが。

 で、問題の個所はここです。

chkMD5Update(){ # target md5sum newguy
[ ! -f $1 ] && return 1

CHECK=`md5sum $1 | cut -f 1 -d " "`
if [ "${CHECK}" = "$2" ]; then
    cp $3 ${HOME}
    echo "$1 was replaced to new one for Vine Linux ${VER}" >>${LOG}
    return 0
else
    return 1
fi
}

 cp を実行していますが、コピー先が ${HOME} となっており、ファイル名を
指定していません。ですが、

##### emacs-faces.el
TARGET=${HOME}/.emacs-faces.el
NEW=/etc/skel/.emacs
chkSame $TARGET $NEW || (
# from 3.x & 4.x
MD5SUM="09ef5702f5022759b092e5f65075ed71"
chkMD5Update $TARGET $MD5SUM $NEW && rm ${TARGET}
# from 2.6
MD5SUM="d66bb8283521eb1b3040a3d7dbf0f5d2"
chkMD5Update $TARGET $MD5SUM $NEW && rm ${TARGET}
# from 2.5
MD5SUM="20117126d492f2ea14e0fb2e89f5f7f6"
chkMD5Update $TARGET $MD5SUM $NEW && rm ${TARGET}
)

のように、$TARGET と $NEW のファイル名が違うことがあります。
 今回、~/.emacs-faces.el が存在したところにこれが実行され、
/etc/skel/.emacs が ~/.emacs に上書きされたものと思われます。

 なお、このスクリプトの終りの方に、

# new files (Vine Linux 2.5)
chkAndCpFile .emacs-faces.el
chkAndCpFile .emacs-fontset.el

のような感じで /etc/skel をチェックせずにコピーを実行している個所があり
ます。このせいでエラーが表示され、~/upgrade-log には実際には成功してい
ないコピーのログが残されます。