今天写了一个小脚本。两点收获:
一、只要稍做修改就可以自动下载最新的开源软件包,像nginx就可以,难点在于得到下载用的url。这里采用的是elinks和wget。
二、用tar tf加上head命令就可以得到解压后的目录,没想到这么简单,大部分情况都是适用的,除非是有些变态软件解压后没建目录,直接解压到当前目录的那种。
脚本贴出,如下:
#!/bin/bash
# Memcached Auto Install
# Author: 楚霏
# Company: chengyongxu.com
# Create Date: 2010-07-22
# Last Update Date: 2010-07-22 17:49
#########################################################
#
# 在这一部分定义相关变量
#
#########################################################
# 下载链接地地址
LATEST_MEMCACHED_LINK=`elinks http://memcached.org | grep tar.gz | grep http | awk {'print $2'}`
LATEST_LIBEVENT_LINK=`elinks http://www.monkey.org/~provos/libevent/ | grep stable.tar.gz$ | awk {'print $2'} | sort -rn | head -n 1`
DOWNLOAD_DIR=/usr/local/src
# 最新的软件包名
REMOTE_MEMCACHED_PACKAGE_NAME=`elinks http://memcached.org | grep tar.gz | grep http | awk {'print $2'} | awk -F/ '{print $5}'`
REMOTE_LIBEVENT_PACKAGE_NAME=`elinks http://www.monkey.org/~provos/libevent/ | grep stable.tar.gz$ | awk {'print $2'} | sort -rn | head -n 1 | awk -F/ '{print $5}'`
#########################################################
#
# 检查系统环境
#
#########################################################
# 检查发行版并安装elinks,wget
DISTRIBUTION=`lsb_release -i | awk '{print $3}'`
case "$DISTRIBUTION" in
*CentOS*|*"Red Hat"*|*Fedora*)
yum -y install elinks wget
;;
*)
echo 'Do not support this distribution !' && exit 0
;;
esac
#########################################################
#
# 下载最新版软件
#
#########################################################
if [ ! -d $DOWNLOAD_DIR ]
then
mkdir -p $DOWNLOAD_DIR
fi
if [ ! -e $DOWNLOAD_DIR/$REMOTE_MEMCACHED_PACKAGE_NAME ]
then
wget -c $LATEST_MEMCACHED_LINK -P $DOWNLOAD_DIR
else
echo "本地已有最新版本"
fi
if [ ! -e $DOWNLOAD_DIR/$REMOTE_LIBEVENT_PACKAGE_NAME ]
then
wget -c $LATEST_LIBEVENT_LINK -P $DOWNLOAD_DIR
else
echo "本地已有最新版本"
fi
#########################################################
#
# 安装
#
#########################################################
# 软件包解压后的目录
MEMCACHED_EXTRACT_DIR=`tar tf $DOWNLOAD_DIR/$REMOTE_MEMCACHED_PACKAGE_NAME | head -n 1`
LIBEVENT_EXTRACT_DIR=`tar tf $DOWNLOAD_DIR/$REMOTE_LIBEVENT_PACKAGE_NAME | head -n 1`
cd $DOWNLOAD_DIR
tar zxvf $REMOTE_LIBEVENT_PACKAGE_NAME
#echo "$REMOTE_MEMCACHED_PACKAGE_NAME"
#echo "$MEMCACHED_EXTRACT_DIR"
#echo "$DOWNLOAD_DIR/$MEMCACHED_EXTRACT_DIR"
#exit
cd $DOWNLOAD_DIR/$LIBEVENT_EXTRACT_DIR
./configure --prefix=/usr
make
make install
cd $DOWNLOAD_DIR
tar zxvf $REMOTE_MEMCACHED_PACKAGE_NAME
cd $DOWNLOAD_DIR/$MEMCACHED_EXTRACT_DIR
./configure --with-libevent=/usr
make
make install
echo "Memcached 成功安装!"
#########################################################
#
# 输出帮助信息
#
#########################################################
echo "\
启动示例:
/usr/local/bin/memcached -d -m 1024 -u root -l 127.0.0.1 -p 11001 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程
-m是分配给Memcache使用的内存数量,单位是MB,我这里是1GB
-u是运行Memcache的用户,我这里是root
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址127.0.0.1
-p是设置Memcache监听的端口,我这里设置了11001,最好是1024以上的端口
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid
Have Fun !\
"