あらいです。 以前、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 には実際には成功してい ないコピーのログが残されます。