今天通过命令启动jenkins的情况下:
命令启动jenkins:
JENKINS_HOME=/var/lib/jenkins /data/midsoft/jdk1.8.0_333/bin/java -Xms1024m -Xmx1024m -Xmn256m -Xss512k -server -XX:+HeapDumpOnOutOfMemoryError -Dhudson.util.ProcessTree.disable=true -Djava.awt.headless=true -Dfile.encoding=utf-8 -jar /var/lib/jenkins/jenkins.war --httpPort=8686
报错如下:/data/midsoft/jdk1.8.0_333/bin/java: symbol lookup error: /lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
symbol lookup error: /lib/x86_64-linux-gnu/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
通过查资料发现:
FT_Done_MM_Var 是 FreeType 2.9+ 引入的 API 符号。错误表明:
您的 libfontconfig.so.1 是在支持新 API 的 FreeType 版本上编译的
但运行时加载的 FreeType 库(libfreetype.so.6)是不完整或损坏的版本,缺少该符号
为了确认问题,需要插查询 /lib/x86_64-linux-gnu/libfontconfig.so.1 库使用的 freetype 库的版本
dd /lib/x86_64-linux-gnu/libfontconfig.so.1 | grep freetype
```
输出如下:
```
libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f8e3a1b0000)
```
使用 strings /lib/x86_64-linux-gnu/libfreetype.so.6 | grep -i "freeType"
发现freetype的路径为: /data/shitian/soft/freetype-2.8.1/include/freetype
明显这个版本是没有FT_Done_MM_Var 这个”符号“的
同理 ldd /usr/bin/fc-cache |grep "freetype"
输出free type 库文件路径为:libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007fafb3f3d000)
同理 strings /usr/local/lib/libfreetype.so.6|grep -i "freetype" 也是freetype 版本不对,
明明
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
路径下的都是最新的freetype库,不管是fc-cache 命令或是 jenkins 依赖都不使用呢, 通过查看
vim /etc/ld.so.conf.d/x86_64-linux-gnu.conf 下的系统动态库加载路径发现里面路径配置如下:
/usr/local/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
明显优先加载库文件路径为:/usr/local/lib/x86_64-linux-gnu 我修改了顺序,使用ldconfig 加载也没有生效,不知道是不是要重启系统才生效,
既然知道了问题所在,那我可以临时解决方法是:
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu
然后ldd fc-cache 的freetype路径已经变成了 /lib/x86_64-linux/gnu 下的freetype库了。
如果实在不行启动系统或,临时加载环境来启动jenkins,可以使用如下命令启动:
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu JENKINS_HOME=/var/lib/jenkins /data/midsoft/jdk1.8.0_333/bin/java -Xms1024m -Xmx1024m -Xmn256m -Xss512k -server -XX:+HeapDumpOnOutOfMemoryError -Dhudson.util.ProcessTree.disable=true -Djava.awt.headless=true -Dfile.encoding=utf-8 -jar /var/lib/jenkins/jenkins.war --httpPort=8686
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!