По порядку в общем-то.
http://redis.io/topics/quickstart
И как хорошие котики, мы хотим запустить make test. И получаем ошибку, что tcl8.5 not found
You need 'tclsh8.5' in order to run the Redis test
ВТФ? (спойлер: на этом приключения не заканчиваются)
Ок, ставим эту приблуду.
wget http://prdownloads.sourceforge.net/tcl/tcl8.5.11-src.tar.gz
tar xvfz tcl8.5.11-src.tar.gz
cd tcl8.5.11/
cd unix/
./configure
make -j3
removepkg tcl-8.4.15-i486-1
make install
ldconfig
(стырено
http://dragkh.wordpress.com/2012/05/15/install-redis-stable-2-4-13-on-centos-release-6-2-x86_64-and-slackware-12-0-0-i686/)
Теперь make test запускается.
Ок, следуем дальше.
make install
cd utils
./install_server.sh
Пыщщщщ! Инсталл-сервер внезапно выдает следующий лулз:
Installing service...
./install_server.sh: line 178: update-rc.d: command not found
Но мы же умные котики! Открываем файл, находим строку 178, и что мы там видим: проверка на существование команды chkconfig if [ !`which chkconfig` ] ; then
В общем, гениальный скрипт ВНЕЗАПНО? заходит в этот if блок и пытается выполнить update-rc.d в RHEL системе :D
Включаем покерфейс и, к примеру, меняем содержимое этого места на
#Install the service
echo "Installing service..."
if [ !`which chkconfig` ] ; then
#if we're not a chkconfig box assume we're able to use update-rc.d
chkconfig --add redis_$REDIS_PORT && echo "Successfully added to chkconfig!"
chkconfig --level 345 redis_$REDIS_PORT on && echo "Successfully added to runlevels 345!"
else
# we're chkconfig, so lets add to chkconfig and put in runlevel 345
chkconfig --add redis_$REDIS_PORT && echo "Successfully added to chkconfig!"
chkconfig --level 345 redis_$REDIS_PORT on && echo "Successfully added to runlevels 345!"
fi
(или пишем правильный if блок, но мы же хотим послужить богу Ганеше?)
Ругается на service redis_6379 does not support chkconfig, чуть позже фиксим)
ок, теперь инсталл скрипты запускаются.
Осталось запустить собсна redis.
ТАДААА!
[root@localhost utils]# /etc/init.d/redis_6379 start
exists, process is already running or crashed
Процесс не запущен нифига.
Ок, открываем редактором и дебажим. Вуаля - переменная $PIDFILE не задается.
На случай выпила репозитория - оставлю это здеся.
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
Теперь можем запустить ps aux | grep redis, и убедиться, что это творение сумрачного гения РАБОТАЕТ.
[root@localhost utils]# ps aux | grep redis
root 13452 0.3 0.0 28080 1584 ? Ssl 23:33 0:00 /usr/local/bin/redis-server /etc/redis/6379.conf
root 13474 0.0 0.0 4940 848 pts/0 S+ 23:33 0:00 grep --color=auto redis
(да, от рута. Позже разберусь.)