【问题标题】:Jenkins Xvfb libcrypto issueJenkins Xvfb libcrypto 问题
【发布时间】:2018-09-17 15:15:14
【问题描述】:

我有一份 Jenkins 工作(用于 Selenium 无头测试)。我已经在 J​​enkins 中安装了 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】:

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

    $ 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。这是一种蛮力策略,可能不是一个好主意,因为它可能会扰乱您的发行版的打包系统,但如果没有其他方法,它应该可以工作。

    【讨论】:

    • 我尝试了 2 个选项。在 ld.so.conf /var/jenkins_home/lib64/ 中添加了以下配置 include /etc/ld.so.conf.d/*.conf 仍然出现同样的错误。
    • 您在更改/etc/ld.so.conf 文件后是否重新启动?如果没有尝试运行sudo ldconfig -v。这应该会重新加载您的配置文件并清除任何可能被缓存的内容。
    • 非常感谢。这真的给了我一个洞察力并解决了我的问题。
    • 也找到了这个参考。很好检查理解。好文章。 codeyarns.com/2017/11/02/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多