su - root
tar xvzf tcl8.6.1-src.tar.gz
cd tcl8.6.1/unix/
./configure
make
make install
二.安装Redis
不需要用root用户安装Redis
http://redis.io/topics/security
Redis does not requires root privileges to run. It is recommended to run it as an unprivileged redis user that is only used for this purpose. The Redis authors are currently investigating the possibility of adding a new configuration parameter to preventCONFIG SET/GET dir and other similar run-time configuration directives. This would prevent clients from forcing the server to write Redis dump files at arbitrary locations.
su - 目标用户
tar -xvzf redis-2.8.12.tar.gz
cd redis-2.8.12
make
sudo cp redis.conf /etc/
make test
sudo make install (将命令放到 /usr/local/bin/)
说明:
1.使用root用户先装好tcl,不然 redis 的 make test 不会通过。
2.把源码里的redis.conf复制到/etc目录下,解决make test时出现的下面这个err。
*** [err]: EVAL processes writes from AOF in read-only slaves in tests/unit/scripting.tcl
3.centos中(1)建立用户和(2)使用sudo(3)开放6379端口,可以在 http://sgq0085.iyunv.com/blog/1947313 中找到答案。当然也可以直接使用root,但用其他用户启动服务的时候dump.rdb是root权限,数据会不能写入磁盘。
4.32位Linux安装,后面有详细说明,我的测试环境是CentOS 5.4 。
# tar -xvzf lua压缩包
lua-5.2.3]# cd lua-5.2.3
lua-5.2.3]# make linux
lua-5.2.3]# make linux install
(2)遇到下面错误执行: yum install libtermcap-devel ncurses-devel libevent-devel readline-devel
make[1]: Entering directory `/root/install/lua-5.2.3/src'
make all SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
make[2]: Entering directory `/root/install/lua-5.2.3/src'
gcc -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `PC'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetflag'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetent'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `UP'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tputs'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgoto'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetnum'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `BC'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../libreadline.so: undefined reference to `tgetstr'
collect2: ld returned 1 exit status
make[2]: *** [lua] Error 1
make[2]: Leaving directory `/root/install/lua-5.2.3/src'
make[1]: *** [linux] Error 2
make[1]: Leaving directory `/root/install/lua-5.2.3/src'
make: *** [linux] Error 2
(3)修改由于lua编译依赖readline库,而其依赖ncurses库,但没有指定,所以出现“未定义的符合引用”错误。需要修改${LUA_DIR}/src/Makefile中linux编译target,在SYSLIBS变量中追加‘-lncurses’选项即可。修改后,如下:
make CFLAGS="-march=i686"
4.另外有一种说法 编辑了下src/.make_settings里的OPT,改为OPT=-O2 -march=i686,我没有使用这种方法,但make通过。
5.make test或make install不能通过的情况下,可以尝试 make test本来就是可选步骤