在测试用的一个jenkins上执行任务用到了的Git命令,然后得到了“git: /usr/local/jboss/bin/native/libz.so.1: no version information available (required by git)”这样的一些警告信息。
然后,我ssh登录到该jenkins执行机上,运行"git --version"这样的命令也是正常的,没有警告信息。
而且,看到“/usr/local/jboss/bin/native/libz.so.1”这个路径看着有点怪,怎么跑到这里去找.so库呢。想了下,这个jenkins是用jboss容器启动的,可能是jboss的一些默认配置。(没准备换容器了,暂不细看它,先解决问题吧)
在jenkins中新建一个job,job中执行shell命令,很简单的两条命令如下:
1 2 |
echo $LD_LIBRARY_PATH git --version |
运行该job,在console output中看到如下输出:
1 2 3 4 5 6 |
+ echo /usr/local/jdk/jre/lib/amd64/server:/usr/local/jdk/jre/lib/amd64:/usr/local/jdk/jre/../lib/amd64:/usr/local/jboss/bin/native /usr/local/jdk/jre/lib/amd64/server:/usr/local/jdk/jre/lib/amd64:/usr/local/jdk/jre/../lib/amd64:/usr/local/jboss/bin/native + git --version git: /usr/local/jboss/bin/native/libz.so.1: no version information available (required by git) git version 1.7.1 Finished: SUCCESS |
[root@host_5-147 ~]# find /usr/ -name "libz.so*"
/usr/lib64/libz.so
/usr/local/jboss/bin/native/libz.so.1
/usr/local/jboss/bin/native/libz.so
/usr/local/jboss/bin/native/libz.so.1.2.3
这样就一目了然了,输出的$LD_LIBRARY_PATH环境变量,程序执行时找lib当然就在这里去找了。
关于环境变量LD_LIBRARY_PATH,我在去年的一篇文章“关于Linux上的链接库”中也做了一些描述。
在jenkins执行机上,find查找一下这个库,在/usr/lib64目录下也找到了,如下:
1 2 3 4 5 |
[root@host_5-147 ~]# find /usr/ -name "libz.so*" /usr/lib64/libz.so /usr/local/jboss/bin/native/libz.so.1 /usr/local/jboss/bin/native/libz.so /usr/local/jboss/bin/native/libz.so.1.2.3 |
为了解决这个jenkins中链接库查找的问题,可以重新配置脚本,在执行shell命令的开始,先设置一下环境变量LD_LIBRARY_PATH,例如:export LD_LIBRARY_PATH=/usr/lib64:/usr/lib:/lib:/lib64
当然,如果为了兼容jboss原来的配置,可以再把前面打印出来的jdk/jboss等相关的路径也加回去。
参考:http://stackoverflow.com/questions/11961400/getting-rid-of-git-usr-local-lib-libz-so-1-no-version-information-available