【问题标题】:openssl: error while loading shared libraries: libssl.so.3openssl:加载共享库时出错:libssl.so.3
【发布时间】:2019-06-05 02:23:48
【问题描述】:

无论我输入什么与“openssl”组合,我总是收到以下错误消息:

'openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory'

在阅读了本论坛和其他论坛中提出的许多问题后,我不知道如何解决该问题。

【问题讨论】:

  • 看起来与您的问题相似serverfault.com/questions/818445/…
  • 是的,我以前见过这个。但尽管如此,看两次对我有帮助,我解决了我的问题。谢谢。

标签: openssl debian libssl


【解决方案1】:

此解决方案from kingaj(粘贴在下方)也适用于 Ubuntu 20.04。我测试了它,它运行良好:

"...我从 github 编译了 openssl:https://github.com/openssl/openssl。检查生成的 Makefile(由 ./config)默认安装目录是 /usr/local/lib64。

但是,在 RHEL 上,此目录不在加载库路径中。以下内容在 RHEL 7.9 上对我有用:..."

$ sudo touch /etc/ld.so.conf.d/lib.conf

# edit ld.conf file 
# add a line containing `/usr/local/lib64`
$ sudo nano /etc/ld.so.conf.d/lib.conf

# update the library paths
$ sudo ldconfig

# sanity check
$ openssl version
OpenSSL 3.0.0-alpha11 28 jan 2021 (Library: OpenSSL 3.0.0-alpha11 28 jan 2021)

【讨论】:

    【解决方案2】:

    在 CentOS 7 上,对于 OpenSSL 3.0.0,这为我完成了这项工作

    sudo ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so.3
    sudo ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
    

    无需重新启动系统或重建 ldcache 配置。

    【讨论】:

      【解决方案3】:
      ldconfig /usr/local/lib64/
      

      从源代码编译:

      ./Configure
      make
      make install
      ldconfig /usr/local/lib64/
      

      【讨论】:

        【解决方案4】:

        安装openssl-3.0.0后,我注意到libssl.so.3libcrypto.so.3文件位于/usr/local/ssl/lib64

        这对我有用:

        • 我编辑了位于/etc/ld.so.conf.d/openssl-X.y.z.conf 文件并将/usr/local/ssl/lib 更改为/usr/local/ssl/lib64
        • 我使用 ldconfig 重新加载

        开始运行这两个命令:

        cd /etc/ld.so.conf.d/
        
        sudo vim openssl-Z.y.z.config
        

        更改文件,保存并退出 vim 编辑器。

        sudo ldconfig -v
        

        我的输出如下:

        #...
        libssl3.so -> libssl3.so
        #...
        

        并再次进行验证

        openssl version
        

        我的输出:

        OpenSSL 3.0.0 7 sep 2021 (Library: OpenSSL 3.0.0 7 sep 2021)
        

        【讨论】:

          【解决方案5】:

          很简单:

          ln -s /usr/lib/vmware/lib/libssl.so.1.0.2/libssl.so.1.0.2 /usr/lib64/libssl.so.1.0.2
          ln -s /usr/lib/vmware/lib/libcrypto.so.1.0.2/libcrypto.so.1.0.2 /usr/lib64/libcrypto.so.1.0.2
          

          【讨论】:

            【解决方案6】:

            我从 github 编译了 openssl:https://github.com/openssl/openssl。 检查生成的 Makefile(由./config)默认安装目录是/usr/local/lib64

            但是,在 RHEL 上,此目录不在加载库路径中。以下在 RHEL 7.9 上对我有用:

            $ sudo touch /etc/ld.so.conf.d/lib.conf
            
            # edit ld.conf file 
            # add a line containing `/usr/local/lib64`
            $ sudo nano /etc/ld.so.conf.d/lib.conf
            
            # update the library paths
            $ sudo ldconfig
            
            # sanity check
            $ openssl version
            OpenSSL 3.0.0-alpha11 28 jan 2021 (Library: OpenSSL 3.0.0-alpha11 28 jan 2021)
            

            【讨论】:

              【解决方案7】:

              我当时只是通过创建符号链接并重建 ldconfig 缓存来解决它。

              ln -s libssl.so.3 libssl.so
              sudo ldconfig
              

              【讨论】:

                【解决方案8】:

                在我的情况下,它与 SLES 12.1 上的 Python 3.8 安装有关。由于 OpenSSL 错误,Pip 安装失败。

                然后我克隆了 openssl 存储库并从源代码构建它。

                git clone https://github.com/openssl/openssl.git

                ./Configure make make install

                最后ldconfig 很重要也很需要。

                然后openssl version -a 应该显示没有错误的响应。构建 Python 3.5+ 至少需要 openssl 1.1。

                在这个练习之后,从源代码构建 Python 3.8.5 是成功的。

                【讨论】:

                  【解决方案9】:

                  使用sudo 编译并运行您的代码。它会起作用的。

                  如果还是不行,请按照以下步骤操作

                  sudo apt-get update
                  sudo apt-get install libssl1.0.0 libssl-dev
                  cd /lib/x86_64-linux-gnu
                  sudo ln -s libssl.so.1.0.0 libssl.so.10
                  sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
                  

                  【讨论】:

                    【解决方案10】:

                    安装 Openssl 3.0 后我遇到了同样的问题。我通过将文件libcrypto.so.3libcrypto.alibssl.so.3/usr/local/lib 复制到/usr/lib 解决了这个问题。 复制完这些文件后,需要创建一些符号链接。

                    ln -s libcrypto.so.3 libcrypto.so
                    ln -s libssl.so.3 libssl.so
                    

                    现在重建 ldconfig 缓存:

                    sudo ldconfig

                    【讨论】:

                    • 这是一个危险的建议,不应遵循。 /usr/lib 中的文件应该由你的操作系统的包管理器管理——覆盖它们会使你的系统处于不一致的状态。
                    • 这是一个肮脏的黑客,但它适用于我的 Ubuntu 16。我编译并安装了当前的 openssl 和 curl(它使用 openssl)。我认为在构建 Openssl 时,您可以传递一个选项来配置安装路径,在这种情况下传递给 usr/lib。
                    • 我从stratch安装openssl时遇到了类似的错误:openssl:加载共享库时出错:libssl.so.48:无法打开共享对象文件:没有这样的文件或目录。这个技巧对我有用。
                    猜你喜欢
                    • 2017-08-07
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-10-02
                    • 2011-05-29
                    相关资源
                    最近更新 更多