Jenkins Xvfb libcrypto问题

问题描述 投票:1回答:1

我有一个Jenkins工作(用于Selenium无头测试)。我在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变量中也可用。

selenium jenkins xvfb
1个回答
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

它的外观取决于您使用的分布以及如何配置它。你有一些帮助Jenkins找到你的图书馆的选择:

  • 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。这是一种蛮力的策略,可能是一个坏主意,因为它可能会破坏你的发行版的包装系统,但如果没有别的办法,它应该可行。