#!/bin/bash # script to upgrade user files to adapt the newest version of the Vine Linux # by Jun Nishii VER=6.0 LOG=$HOME/upgrade-log STAMP=${HOME}/.vine/VineLinux${VER} chkAndCpFile(){ if [ ! -f $1 ] ;then install -m 644 /etc/skel/$1 ${HOME} echo "added new config file $1" >> ${LOG} fi } chkAndCpDir(){ if [ ! -d $1 ]; then cp -r /etc/skel/$1 ${HOME} echo "added new config directory $1" >> ${LOG} fi } Update(){ # checkstr, oldstr, newstr, target if [ -f $4 ]; then TEST=`grep "$1" $4 2>/dev/null` if [ -n "${TEST}" ]; then echo "replace $2 as $3 in $4" >> ${LOG} cp $4 $4.new sed -e 's|'"$2"'|'"$3"'|' $4.new > $4 rm $4.new return 0 fi fi return 1 } chkSame(){ # target newguy if diff $1 $2 >/dev/null 2>&1; then return 0 else return 1 fi } 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 } chkMD5Remove(){ # target md5sum [ ! -f $1 ] && return 1 CHECK=`md5sum $1 | cut -f 1 -d " "` if [ "${CHECK}" = "$2" ]; then mv $1 $1.rpmsave echo "$1 was removed(backup as .rpmsave) for Vine Linux ${VER}" >>${LOG} return 0 else return 1 fi } ###########################################################################3 #[ -f ${LOG} ] && rm ${LOG} [ -f ${STAMP} ] && return 0 ###########################################################################3 ##### Xresources TARGET=${HOME}/.Xresources NEW=/etc/skel/.Xresources chkSame $TARGET $NEW || ( # from 5.x MD5SUM="663f4824d786af718954f301af301c84" chkMD5Update $TARGET $MD5SUM $NEW # from 4.0 4.1 4.2 MD5SUM="d5651f30e2e4fabbaafe3aee60f6bda2" chkMD5Update $TARGET $MD5SUM $NEW # from 3.x MD5SUM="3347c5d3eb5cbb90255b3dc46bd25728" chkMD5Update $TARGET $MD5SUM $NEW # from 2.6 MD5SUM="2ba8631e24045a2d76603b91a4aed6c0" chkMD5Update $TARGET $MD5SUM $NEW # from 2.6CR MD5SUM="6958944eb43282ef3cb5f09f0323296f" chkMD5Update $TARGET $MD5SUM $NEW ) ##### bash_logout TARGET=${HOME}/.bash_logout NEW=/etc/skel/.bash_logout chkSame $TARGET $NEW || ( # from 2.5, 2.6, 3.x, 4.x, 5.x MD5SUM="d19bbbed9d713f97f487b9ed9ec3f62f" chkMD5Update $TARGET $MD5SUM $NEW ) ##### bash_profile TARGET=${HOME}/.bash_profile NEW=/etc/skel/.bash_profile chkSame $TARGET $NEW || ( # from 2.5, 2.6, 3.x, 4.x, 5.x MD5SUM="68fa45c9d56046c8f6ce3c3ea2e8376b" chkMD5Update $TARGET $MD5SUM $NEW # from 2.1.5 and before MD5SUM="7feed2b53dad06634b2bc32d63f634e4" chkMD5Update $TARGET $MD5SUM $NEW ) ##### bashrc TARGET=${HOME}/.bashrc NEW=/etc/skel/.bashrc chkSame $TARGET $NEW || ( # from 3.x & 4.x, 5.x MD5SUM="6d43294e457bb568957d2fb2b43b0355" chkMD5Update $TARGET $MD5SUM $NEW # from 2.5 & 2.6 MD5SUM="e31a08d3af08bed5e4f246a3dacc36d8" chkMD5Update $TARGET $MD5SUM $NEW # from 2.1 & 2.1.5 MD5SUM="6ad96798a72f420d409095ca0ed538f1" chkMD5Update $TARGET $MD5SUM $NEW # from 2.0 MD5SUM="a1d1b54732257d96b9219af0c7f1fc7a" chkMD5Update $TARGET $MD5SUM $NEW ) ##### cshrc TARGET=${HOME}/.cshrc NEW=/etc/skel/.cshrc chkSame $TARGET $NEW || ( # from 2.6 & 3.x & 4.x, 5.x MD5SUM="d72dab0210938146b5c4ffe01d874e3a" chkMD5Update $TARGET $MD5SUM $NEW # from 2.1 & 2.1.5 MD5SUM="9ccfb8703e6ae18b627b46aeb84a05b1" chkMD5Update $TARGET $MD5SUM $NEW # from 2.0 MD5SUM="e353c9ee3971539acdfb4a8769f34c66" chkMD5Update $TARGET $MD5SUM $NEW ) ################################ ##### removed since Vine Linux 6 ##### emacs TARGET=${HOME}/.emacs # from 5.x MD5SUM="e09878a9eb8bf120e97d8684cb1d7b3a" # from 2.6 & 3.x & 4.0, 4.1 MD5SUM+=" 3c866b2dafd2a7ba7ea2b41faf24f523" # from 2.1 & 2.1.5 & 2.5 MD5SUM+=" 289ba7d687f770983b143ea0e424c722" for i in $MD5SUM ; do chkMD5Remove $TARGET $i done ################################ ##### removed since Vine Linux 6 ##### .emacs.el TARGET=${HOME}/.emacs.el MD5SUM="bd4f9e933abc2db52c02715d71fe6c94" # from 4.1+ MD5SUM+=" c2876e464b4e2572fcfa1e95ec111a6c" # from 4.1 MD5SUM+=" 6305d80793bd17761e9b054d1c71094e" # from 4.0 MD5SUM+=" 233bd3d3636ac04d7ec1223280f01ce1" # from 3.2 MD5SUM+=" cc1a41f2dbc775fccfa0d07cbfe48b8b" # from 3.1 MD5SUM+=" d2b98e579143983a39a6639120e8579a" # from 3.0 MD5SUM+=" a0bbf086255f0751583520e7fd47326c" # from 2.6 MD5SUM+=" 76785a2498f22f430583cbd649d8cfc3" # from 2.6CR MD5SUM+=" 00ae4ed293d418a43f6018941173ff7a" # from 2.5 MD5SUM+=" 6718c077a33f729c0f3340ff362d53f6" # from 2.1 & 2.1.5 MD5SUM+=" e5d037ca2ea00619dc72ad5c59baca3a" # from 2.0 MD5SUM+=" ecb3dec80763a8fdb0888d8980c49286" for i in $MD5SUM ; do chkMD5Remove $TARGET $i done ### rpmmacros TARGET=${HOME}/.rpmmacros NEW=/etc/skel/.rpmmacros chkSame $TARGET $NEW || ( # from 5.x MD5SUM="375fcff760b2121d13982b929af16a6c" chkMD5Update $TARGET $MD5SUM $NEW # from 4.x MD5SUM="aeffd267d61af5ca4718cee9bb2cb2de" chkMD5Update $TARGET $MD5SUM $NEW # from 3.x MD5SUM="ba738a926ffb0e5752ef440ba915634d" chkMD5Update $TARGET $MD5SUM $NEW # from 2.6 # MD5SUM="ba738a926ffb0e5752ef440ba915634d" # chkMD5Update $TARGET $MD5SUM $NEW # from 2.1.5 # MD5SUM="ba738a926ffb0e5752ef440ba915634d" # chkMD5Update $TARGET $MD5SUM $NEW # from 2.1 MD5SUM="2b2a0f4e2d7ec077db33f031f66cac9c" chkMD5Update $TARGET $MD5SUM $NEW ) ################################ ##### removed since Vine Linux 6 ##### xemacs.el TARGET=${HOME}/.xemacs.el # from 5.x MD5SUM="8c521ded7399113a2acc44cd7d15c6f7" # from 4.0 MD5SUM+=" 05c1705daa7769a65efa6045206c574b" # from 3.x MD5SUM+=" 4b459e779adb38fabb461a27d0cfa76e" # from 2.6 MD5SUM+=" a48ed6df7d52422455713a1d61b69d64" # from 2.6 MD5SUM+=" 4764be822a419a7f620fc082ced8d6ac" # from 2.1 & 2.1.5 MD5SUM+=" ea9b58406676c6f586cb80e63d37bffe" # from 2.0 MD5SUM+=" 81982a524f9ab581a017dbfaa77f2d34" for i in $MD5SUM ; do chkMD5Remove $TARGET $i done ##### xemacs.el TARGET=${HOME}/.xemacs/init.el #from 5.x MD5SUM="0f65ac976270dddd236f437ca46782f9" # from 4.1+ MD5SUM+=" a19da2801c7287a89f92e63f9ba335cd" # from 4.1 MD5SUM+=" 42554ea7b5738e5519e4b22b5dab5a73" for i in $MD5SUM ; do chkMD5Remove $TARGET $i done # imelib -> vinelib (from 2.0) TARGET=${HOME}/.bashrc Update "imelib" \ "imelib" \ "vinelib" \ $TARGET && ( echo "Your ~/.bashrc seems to be old." >> ${LOG} echo "Please compare it with /etc/skel/.bashrc and update it!" >> ${LOG} ) # CANNA_SEVER=localhost -> unix (Vine Linux 3.0) if [ -f ${HOME}/.vine/system/ime ]; then if (grep -q "CANNA_SERVER=localhost" ${HOME}/.vine/system/ime) ; then cp -f ${HOME}/.vine/system/ime ${HOME}/.vine/system/ime.vinesave sed "s/CANNA_SERVER=localhost/CANNA_SERVER=unix/" ${HOME}/.vine/system/ime.vinesave > ${HOME}/.vine/system/ime echo "upgraded ~/.vine/system/ime to use unix domain socket for Canna." >> ${LOG} fi fi # new files (Vine Linux 2.1) chkAndCpFile .rpmmacros chkAndCpDir rpm # new files (Vine Linux 6) chkAndCpDir .emacs.d #################### touch ${STAMP} #################### unset TARGET NEW MD5SUM VER LOG STAMP