linux-环境变量引起jar包冲突

逻辑映星客
• 阅读 2569

1.场景

外呼平台升级对应的freeswitch模块时候,按照往常正确步骤操作;然后控制台启动freeswitch的时候

进入/freeswitch/bin下面;执行脚本:

./freeswitch

然后查看到fs控制台输出为:

linux-环境变量引起jar包冲突

2.问题处理

2.1 排查说明

1、freeswitch报加载mod_sofia失败,于是去freeswitch下的
freeswitch/conf/autoload_configs/去查看 modules.conf.xml,发现对应模块已经加载:
linux-环境变量引起jar包冲突

2.2 LD_LIBRARY_PATH说明

1、由于其他机器上相同包模块类似,并且加载运行后正常,由于所有包的加载读取是基于/etc/profile的临时环境变量的:
linux-环境变量引起jar包冲突

2、非常多的软件没有root权限安装会比较困难,主要就是因为各种系统库文件,也就是LD_LIBRARY_PATH这个环境变量里面的文件。查看其它库文件目录:echo $LD_LIBRARY_PATH 里面一般可以看到七八个已经定义好的库文件搜索路径。
当执行函数动态链接.so时,如果此文件不在缺省目录下 /lib和/usr/lib,那么就需要指定环境变量LD_LIBRARY_PATH 假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式: LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH (newdirs是新的路径串), 实例如下;

export LD_LIBRARY_PATH=/export/apps/anaconda2/2.4.1/lib/:$LD_LIBRARY_PATH

3、需要找到系统的库文件地址

比如:我们有时候安装:liblzma时候,gcc编辑器找不到我们系统的liblzma这个库文件,就是我们的LD_LIBRARY_PATH定义的所有路径里面都没有这个liblzma这个库文件。

验证gcc编辑器能否找到指定库文件的方法是:

gcc -llzma --verbose

事实上,我们的机器肯定是有这个库文件的,只不过是不在LD_LIBRARY_PATH定义的所有路径里面,简单查找如下:

locate liblzma 
/export/apps/anaconda2/2.4.1/lib/liblzma.a
/export/apps/anaconda2/2.4.1/lib/liblzma.la
/export/apps/anaconda2/2.4.1/lib/liblzma.so
/export/apps/anaconda2/2.4.1/lib/liblzma.so.5
/export/apps/anaconda2/2.4.1/lib/liblzma.so.5.0.5 

为了解决我,我们需要添加:

export LD_LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LD_LIBRARY_PATH
export LIBRARY_PATH=/export/apps/anaconda2/4.0.0/lib/:$LIBRARY_PATH 

4、为什么修改LD_LIBRARY_PATH?

因为运行时动态库的搜索路径的先后顺序是:
1.编译目标代码时指定的动态库搜索路径;
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径;
4.默认的动态库搜索路径/lib和/usr/lib;

这个顺序是compile gcc时写在程序内的,通常软件源代码自带的动态库不会太多,而我们的/lib和/usr/lib只有root权限才可以修改,而且配置文件/etc/ld.so.conf也是root的事情,我们只好对LD_LIBRARY_PATH进行操作。

5、永久性添加

每次我使用该软件都需要临时修改库文件,因为上面的方法是临时设置环境变量 LD_LIBRARY_PATH ,重启或打开新的 Shell 之后,一切设置将不复存在。

为了让这种方法更完美一些,可以将该 LD_LIBRARY_PATHexport 语句写到系统文件中,例如 /etc/profile/etc/export~/.bashrc 或者 ~/.bash_profile 等等,取决于你正在使用的操作系统咯。

2.3查看设置的环境变量

通过以下命令:

echo $LD_LIBRARY_PATH

输出的:
linux-环境变量引起jar包冲突

发现环境变量出问题了,解决办法:
1、关闭当前窗口 重新执行echo $LD_LIBRARY_PATH
2、在当前窗口:将LD_LIBRARY_PATH环境变量设置为空,执行source,然后再设置为正确值即可。

按照步骤1修改后:
linux-环境变量引起jar包冲突

然后启动freeswitch,即可。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
FreeSWITCH 学习笔记(一)
【1】FreeSWITCH学习笔记1、Windows安装包下载地址:http://files.freeswitch.org/windows/installer/2、源码下载地址:http://files.freeswitch.org/freeswitch1.2.10.tar.gz3、FreeSWITCH后台模式启动命令:freesw
Stella981 Stella981
3年前
FreeSWITCH 安装
\TOC\FreeSWITCH安装!FreeSWITCH(https://gitee.com/yaozhf/mypictures/raw/master/0003.png"FreeSWITCH")FreeSWITCH是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。
Stella981 Stella981
3年前
FreeSWITCH1.6安装教程Centos
介绍FreeSWITCH是个网络电话转化器,相当与网络转换器,不过这个是用于IP电话,构建公司的电话通讯系统需要用该技术,因为按照官方文档无法成功安装。本文目的:FreeSWITCH安装步骤官方参考:https://freeswitch.org/confluence/display/FREESWITC
Stella981 Stella981
3年前
Freeswitch配置之sofia
  SIP模块 mod\_sofiaSIP 模块是 FreeSWITCH的主要模块。在 FreeSWITCH中,实现一些互联协议接口的模块称为 Endpoint。FreeSWITH支持很多的 Endpoint,如 SIP、H232等。那么实现 SIP 的模块为什么不支持叫 mod\_sip呢?这是由于 FreeSWITCH的 Endpoint 
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
FreeSWITCH 基础
【1】FreeSWITCH是什么?FreeSWITCH是一个开源的电话交换平台。世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台。从技术上讲,FreeSWITCH是一个B2BUA。!(https://oscimg.oschina.net/oscnet/07888ea61ff726daa8f7111c28d9ce6058
Stella981 Stella981
3年前
Case7 FreeSwitch配置开启转码功能及安装G729语音编码
一键安装安装G729测试环境CentOS6.964bitFreeSwitch1.6.x安装G729模块前请安装好FreeSwitch下载脚本并执行安装wgetfile.qzlink.com/bcg729.shshbcg729.sh查
Stella981 Stella981
3年前
FreeSWITCH测试拨号规则实例
现在用户电话已经注册到 FreeSWITCH, 用户可以发起呼叫测试。跳到 TestingtheexampleDialplan 部分。FreeSWITCH 支持通过本地声卡或者外部的耳机连接到 FreeSWITCH 。可以编译可选模块 PortAudiomodule(mod\_portaudio) 启用这个功能。访问http://wiki.fr
Wesley13 Wesley13
3年前
ubuntu16.0.4安装freeswitch
1\.安装freeswitch库gitclonehttps://github.com/signalwire/freeswitch.git2\.安装环境依赖aptgetinstalllibeditdevlibldnsdevlibpcre3devlibspeexdspdevlibspeexdevl
逻辑映星客
逻辑映星客
Lv1
今夜月明人尽望,不知秋思落谁家。
文章
4
粉丝
0
获赞
0