【转】解决memcached启动失败
原文:http://chenzhou123520.iteye.com/blog/1925196
linux上启动Memcache报错:
原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可.
另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件.
因为我已经安装了libevent,所以应该是程序按照默认共享路径库去找,但是没有找到导致的。
首先使用find命令找到libevent-1.4.so.2文件在哪儿
使用debug信息查看程序去哪里寻找共享文件库
LD_DEBUG=libs /usr/local/bin/memcached -v
其中/usr/local/bin/memcached代表我memcached执行程序
控制台输出结果如下:
[root@localhost memcached]# LD_DEBUG=libs /usr/local/bin/memcached -v
-bash: /usr/local/bin/memcached: No such file or directory
[root@localhost memcached]# LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
6513: find library=libevent-1.4.so.2 [0]; searching
6513: search cache=/etc/ld.so.cache
6513: 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)
6513: trying file=/lib/tls/i686/sse2/libevent-1.4.so.2
6513: trying file=/lib/tls/i686/libevent-1.4.so.2
6513: trying file=/lib/tls/sse2/libevent-1.4.so.2
6513: trying file=/lib/tls/libevent-1.4.so.2
6513: trying file=/lib/i686/sse2/libevent-1.4.so.2
6513: trying file=/lib/i686/libevent-1.4.so.2
6513: trying file=/lib/sse2/libevent-1.4.so.2
6513: trying file=/lib/libevent-1.4.so.2
6513: trying file=/usr/lib/tls/i686/sse2/libevent-1.4.so.2
6513: trying file=/usr/lib/tls/i686/libevent-1.4.so.2
6513: trying file=/usr/lib/tls/sse2/libevent-1.4.so.2
6513: trying file=/usr/lib/tls/libevent-1.4.so.2
6513: trying file=/usr/lib/i686/sse2/libevent-1.4.so.2
6513: trying file=/usr/lib/i686/libevent-1.4.so.2
6513: trying file=/usr/lib/sse2/libevent-1.4.so.2
6513: trying file=/usr/lib/libevent-1.4.so.2
6513:
/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
根据debug日志可以看到,程序只会去/lib 和/usr/lib下去寻找需要的共享链接库。
而我的libevent是安装在/usr/libevent/lib/下,所以memcache启动的时候并不知道该去这下面找,所以会报错
所以安装共享库后要注意共享库路径设置问题, 如下:
1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令
ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.
2) 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:
- [root@localhost memcached]# cat /etc/ld.so.conf
- include ld.so.conf.d/*.conf
如上所示:/etc/ld.so.conf配置文件中内容只有一行,
ld.so.conf.d/*.conf的意思就是包含ld.so.conf.d/目录下以.conf为后缀的文件
所以我们可以在/etc/ld.so.conf.d目录下新建一个libevent.conf的配置文件,然后把libevent安装路径配置好
我的libevent内容如下:
- [root@localhost ld.so.conf.d]# cat libevent.conf
- /usr/libevent/lib
配置完后执行以下ldconfig命令
- [root@localhost ~]#ldconfig
3) 如果共享库文件安装到了其它"非/lib或/usr/lib" 目录下, 但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库.
LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell里加入以下语句即可:
export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用.
这个问题的解决参考了网上的相关资料,特此说明!
【转】解决memcached启动失败的更多相关文章
- 【windows】查询占用端口的程序——记一次解决webloigc启动失败的过程
. . . . . 我们经常使用的网络程序偶尔会遇到端口被占用的情况,但是却苦于无法找到占用端口的程序,这篇文章将教你两个命令,轻松排查端口占用问题. 关键命令: 1.查询端口占用:netstat - ...
- 解决Nginx启动失败
一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start ...
- 解决springboot启动失败问题:Unable to start embedded container;
将一个springboot项目导入到eclipse后,启动时报错Unable to start embedded container,以下时全部错误信息: Application startup fa ...
- Genymotion模拟器安装问题及解决(启动失败,模拟器不能联网)
安装Genymotion模拟器安装后启动不了,报错: 百度的解决方法是打开VMVBirtualox选中自己的设备点击设置—常规—将版本设置为图中箭头所指的: 但是我这样做的时候发现我的下拉列表中没有6 ...
- 解决pgAdmin4启动失败方法
1. 问题现象 有时pgadmin 4启动仅显示启动界面, 或者 点击图标一直都没反应,启动界面用鼠标点击下就消失了, 然后过很长时间就保错: the application server could ...
- 解决mysql启动失败报1067错误
最近做项目使用 mysql 数据库 ,因为卸载了鲁大师造成了数据库文件缺失.重装mysql数据库后启动出现了1067错误,详情如下 在网上查了错误原因,将my.ini文件下的默认搜索引擎换成了 myi ...
- REDHAT7.2解决docker启动失败问题
问题: [root@localhost ~]# service docker restartRedirecting to /bin/systemctl restart docker.serviceJo ...
- 【Linux】【Kibana】解决Kibana启动失败:Data too large问题
今天重启Kibana容器,结果启动不了,一看日志发现是Data数据量太大报错. FATAL [circuit_breaking_exception] [parent] Data too large, ...
- <已解决> Eclipse启动失败
参考:http://stackoverflow.com/questions/15404964/starting-eclipse-results-in-failed-to-create-java-vir ...
随机推荐
- 每周分享之 二 http协议(1)
本次分享http协议,共分为三部分,这是第一部分,主要讲解http的发展历程,各个版本,以及各个版本的特点. 一:http/0.9 最早版本是1991年发布的0.9版.该版本极其简单,只有一个命令GE ...
- jvm系列(四):jvm知识点总结
原文链接:http://www.cnblogs.com/ityouknow/p/6482464.html jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 ...
- ch2-vue实例(new Vue({}) 属性与方法 声明周期)
Vue 实例1 每个Vue.js都是通过创建一个Vue的根实例启动的 var vm = new Vue({}) 2 扩展Vue构造器,用预定义选项创建可复用的组件构造器 var MyComponent ...
- ch3-form(get/post) $.ajax(get/post)
1 http(get)请求 提交的数据 用req.query接收 1.1 router.get() //http(get)请求方式 1.2 接收http(get)方式提交的数据 req.query 方 ...
- HDU1212
大数MOD #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm& ...
- 干了这杯Java之ArrayList
List存储一个有序元素合集 List接口的实现类有: ArrayList,LinkedList,Vector,Stack ArrayList一个数组型的List 默认容量为10 private st ...
- easyUI tree点击文字展开节点
easyUI默认展开树的时候,点击节点前边的黑色小三角 ,这样操作存在不人性化的地方,在实际使用中由于老旧电脑的存在和大龄使用者的眼花经常点不准:因此要实现点击节点名称展开的方式,其实就是在展开事件上 ...
- redis的发布订阅模式pubsub
前言 redis支持发布订阅模式,在这个实现中,发送者(发送信息的客户端)不是将信息直接发送给特定的接收者(接收信息的客户端),而是将信息发送给频道(channel),然后由频道将信息转发给所有对这个 ...
- swift实现与OC的混编
swift与OC的混编 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swift和OC混编的方式.这里给大家演示一下混编是如何做的. sw ...
- PHP中使用 $_GET 与$_POST 实现简单的前后台数据传输交互功能
在之前的学习过程中我们接触过前后台数据请求交互的方法有表单提交.AJAX请求以及Angularjs中的$http,今天我们尝试在PHP中使用 $_GET 与$_POST 实现简单的前后台数据传输交互功 ...