Jenkins Xvfb libcrypto问题

时间:2018-09-17 15:15:15

标签: selenium jenkins xvfb

我有一个Jenkins Job(用于硒无头测试)。我已经在Jenkins中安装了Xvfb插件。但是当我运行作业时,会出现以下错误

/var/jenkins_home/Xvfb: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory

不确定,尽管libcrypto.so.10在PATH变量中也可用。

1 个答案:

答案 0 :(得分:1)

您收到的错误消息表明Xvfb找不到libcrypto的共享对象。当动态链接器找不到可执行文件的依赖项时,就会发生这种情况。通常,您可以使用ldd命令作为Jenkins用户来确定找不到哪些库,例如:

$ ldd /usr/bin/Xvfb
linux-vdso.so.1 (0x00007ffdc6def000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f6bcb054000)
libcrypto.so.10 => not found

Linux中的动态链接器通常不使用PATH变量来确定从何处加载库。它通常在以下位置查找:LD_LIBRARY_PATH环境变量,/etc/ld.so.conf的内容,然后是/lib/usr/lib。更多信息in this Unix Stack Exchange answerman page for ld.so

它的确切位置取决于您使用的发行版以及如何配置它。您可以通过多种方法来帮助詹金斯找到图书馆:

  • libcrypto.so.10的路径添加到环境变量LD_LIBRARY_PATH中-这应该可行,但是根据您要构建的内容,这可能会弄乱其他情况。一些(主要是C / C ++)构建脚本要求取消设置。这样做的好处是只影响您的Jenkins用户,而无需设置其他特权。
  • libcrypto.so.10的路径添加到文件/etc/ld.so.conf中的路径列表中(或在/etc/ld.so.conf.d/中的某些发行版中添加到其自己的文件中。这应该不会产生以下有害影响) LD_LIBRARY_PATH,但需要root特权,并且会影响计算机上的任何用户。
  • libcrypto.so.10复制(或符号链接)到/usr/lib。这是一种蛮力战术,可能不是一个好主意,因为它可能会干扰您发行版的打包系统,但如果没有其他作用,它应该可以工作。