其实memcached源码安装很简单,只要把依赖的libevent安装好了,就万事大吉。
但问题就出在libevent上面
为啥?
安装好之后,总是会报缺失libevent-2.0.so.5模块,memcached无法启动。
先讲这些,开始正式的安装过程。
1,下载软件 http://www.monkey.org/~provos/libevent-2.0.10-stable.tar.gz
2,解压缩验证 tar zxvf libevent-2.0.10-stable.tar.gz
3,安装libevent ./configure && make和make install
4,其实安装到这里已经结束了,并不会出现问题。
但是默认情况下,libevent是安装到了/usr/local/lib目录下,而memcached找ibevent-2.0.so.5模块的路径
却是/usr/lib目录,可想而知,肯定找不到的啊,因此需要你软链接过去,或者你指定安装目录也行。
ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
好了,到此为止,才算只真正的安装好了libevent.
—————————————————————————————————————————————
安装memcached其实也很简单。
1,下载文件 http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
2,解压缩验证 tar zxvf memcached-1.4.5.tar.gz
3,开始安装./configure –prefix=/home/miotour/memcached指定安装目录
make后make test这个时候会发现缺失lib的情况,如果你没有装好的话,之后make install
4,好了,到此为止,memcached已经安装好了,就等你启动了。
5, 启用memcached ./memcached -d -m 100 -p 11211 -u miotour
就是说,在11211端口上,分配100M内存,通过用户miotour来启用后台进程
———————————————————————————————————————
还是之前那个问题,报错内容:
# ./memcached -d -m 10 -p 11211 -u miotour
error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
查看memcached寻找libevent-2.0.so.5模块的路径
LD_DEBUG=libs ./memcached -v
会有如下结果显示:
以下是引用片段:
[root@localhost memcached-1.2.2]# LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
18999: find library=libevent-1.4.so.2 [0]; searching
18999: search cache=/etc/ld.so.cache
18999: search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:
/lib/sse2:/lib:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:
/usr/lib/i686:/usr/lib/sse2:/usr/lib (system search path)
18999: trying file=/lib/tls/i686/sse2/libevent-1.4.so.2
18999: trying file=/lib/tls/i686/libevent-1.4.so.2
18999: trying file=/lib/tls/sse2/libevent-1.4.so.2
18999: trying file=/lib/tls/libevent-1.4.so.2
18999: trying file=/lib/i686/sse2/libevent-1.4.so.2
18999: trying file=/lib/i686/libevent-1.4.so.2
18999: trying file=/lib/sse2/libevent-1.4.so.2
18999: trying file=/lib/libevent-1.4.so.2
18999: trying file=/usr/lib/tls/i686/sse2/libevent-1.4.so.2
18999: trying file=/usr/lib/tls/i686/libevent-1.4.so.2
18999: trying file=/usr/lib/tls/sse2/libevent-1.4.so.2
18999: trying file=/usr/lib/tls/libevent-1.4.so.2
18999: trying file=/usr/lib/i686/sse2/libevent-1.4.so.2
18999: trying file=/usr/lib/i686/libevent-1.4.so.2
18999: trying file=/usr/lib/sse2/libevent-1.4.so.2
18999: trying file=/usr/lib/libevent-1.4.so.2
18999:
/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
从上面的内容你可以看到memcached是从哪些路径里面去寻找libevent-1.4.so.2的。
既然知道了他会寻找哪些路径,那你随便找一个路径,软链接过去不就可以了吗
例如 ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2
重新运行:/usr/local/memcached/bin/memcached -d -m 10 -p 11211 -u root