phpMyAdminの更新スクリプト

phpMyAdminがSourceForgeから撤退した以上、今新しいphpMyAdminの更新スクリプトは必要になる。
この前にもごく簡単なスクリプトを利用してアップデートしたけど、今phpMyAdmin自身のサイトはhttp://xxxx/latest/downloadという固定型の更新リンクを対応してないから、今回の新しい方はアップデートチェックやバージョンの比較も対応しなきゃいけない。
さて、閑話休題、早速新しいスクリプトを紹介しよう。

.
├── current
├── latest
└── update_phpmyadmin.sh

初めての利用する前にはcurrentというファイルに今phpMyAdminのバージョンを書き込まなきゃ、じゃないとこのスクリプトは正常にバージョンの比較できなくなる。

user@host:~/scripts/phpmyadmin$ cat current
4.4.11

$PHPMYADMIN_HOMEと$VERSION_CHKこの2つの変数を変更することを忘れずにね

#!/bin/bash
SCRIPT_HOME=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
PHPMYADMIN_HOME="/var/www/phpmyadmin"
TIMESTAMP=`date "+%s%N"`
VERSION_CHK="https://domain.com/phpmyadmin/version_check.php?&_nocache=""$TIMESTAMP"

vercomp () {
    if [[ $1 == $2 ]]
    then
        return 0
    fi
    local IFS=.
    local i ver1=($1) ver2=($2)
    # fill empty fields in ver1 with zeros
    for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
    do
        ver1[i]=0
    done
    for ((i=0; i<${#ver1[@]}; i++))
    do
        if [[ -z ${ver2[i]} ]]
        then
            # fill empty fields in ver2 with zeros
            ver2[i]=0
        fi
        if ((10#${ver1[i]} > 10#${ver2[i]}))
        then
            return 1
        fi
        if ((10#${ver1[i]} < 10#${ver2[i]}))
        then
            return 2
        fi
    done
    return 0
}

if [[ `whoami` != "root" ]]; then
    echo "Please run as root"
    exit 1
fi

cd $SCRIPT_HOME
curl "$VERSION_CHK" 2>/dev/null | sed -r "s/.*version\":\"([0-9\\.]*)\".*/\\1/" > latest
CURRENT=`cat current`
LATEST=`cat latest`
echo "The current version is: $CURRENT"
echo "The latest  version is: $LATEST"
vercomp $CURRENT $LATEST
case $? in
    0) echo "No updates"; exit 0;;
    1) echo "You are ahead of the latest one?!"; exit 1;;
    2) echo "Updating to $LATEST from $CURRENT, are your sure? [y/n]";;
esac
read CONTINUE
if [[ $CONTINUE != "y" ]]; then
    exit 0
fi

wget --content-disposition "https://files.phpmyadmin.net/phpMyAdmin/$LATEST/phpMyAdmin-$LATEST-all-languages.tar.xz"
TAR_FILE=`find $SCRIPT_HOME -name "phpMyAdmin-*.tar.xz" -print`
if [[ -z $TAR_FILE ]]; then
    echo "Download failed"
else
    echo "$TAR_FILE is successfully download"
    tar Jxvf $TAR_FILE
    TAR_DIRECTORY=`find $SCRIPT_HOME -name "phpMyAdmin-*" -type d -print`
    cp "$PHPMYADMIN_HOME/config.inc.php" "$TAR_DIRECTORY/"
    rm -rf "$PHPMYADMIN_HOME"
    mv "$TAR_DIRECTORY" "$PHPMYADMIN_HOME"
    #do a chown if you need
    #chown user:group "$PHPMYADMIN_HOME" -R
    echo "phpMyAdmin successfully updated"
    rm $TAR_FILE
    echo $LATEST > current
    echo "All done"
fi

コメントを残す