【问题标题】:`dotnet new command` in openSuse causes `No usable version of the libssl was found` erroropenSuse 中的“dotnet new command”导致“找不到可用的 libssl 版本”错误
【发布时间】:2019-04-07 22:32:02
【问题描述】:

我正在尝试在 openSuse 中开发 .NET Core。我确实安装了 SDK 和教程中的所有内容。现在,当我尝试运行dotnet new console 命令时,我得到了这个错误:

找不到可用的 libssl 版本

中止(核心转储)

我找到了这个答案:(.NET Core 2.1 SDK Linux x64 No usable version of the libssl was found),但没有得到解决问题的方法。他们似乎是 deep-linuxer(我不是,我只是想学习 linux)。知道如何运行命令吗?

更新:系统信息:

openSUSE Leap 15.0

内核版本4.12.14-lp150.12.22-default

操作系统类型:64-bit

【问题讨论】:

  • 您的 openSUSE 安装的版本号是多少? software.opensuse.org/package/openssl
  • @LexLi 我将系统信息添加到问题中。但是openssl 已经安装好了。 dotnet 好像找不到。

标签: linux .net-core opensuse libressl


【解决方案1】:

你能安装libopenssl1_0_0 软件包吗? .NET Core 应该选择它并使用它。

给好奇的人稍微长一点的解释:

OpenSSL 是 Linux 上最常用的加密库之一。它有多个版本。 1.0 版有点旧,但被大量使用。 1.1 是(相对)最近发布的较新版本。 1.0 和 1.1 不兼容。期望 1.0 的应用程序不能针对 1.1 构建,也不能针对它运行。

.NET Core 2.1 及所有早期版本仅支持 OpenSSL 1.0。

许多 Linux 发行版开始将 OpenSSL 1.1 设为新的默认值。但他们中的大多数仍然有 1.0 的包。所以你只需要找到并安装它。在 Fedora 上是 compat-openssl10。对于 openSuSE,它是 libopenssl1_0_0。然后 .NET Core 会找到它,自动拾取并使用它。

编辑:截至 2019 年 3 月,这应该不是必需的。我们更新了 .NET Core 2.1 及更高版本,以获取并使用 OpenSSL 1.1 或 1.0(无论可用)。因此,最近发布的 .NET Core 不应再出现此问题。

【讨论】:

    【解决方案2】:

    当 dotnet 正常工作时,我在 Ubuntu 20.04 上运行 sqlpackage 时遇到了同样的问题。

    dotnet 是通过 apt 和 sqlserver 分发的,但由于某些原因,sqlpackage 在此处通过 zip (https://docs.microsoft.com/en-us/sql/tools/sqlpackage-download?view=sql-server-ver15) 分发,并且仍然受到缺少 libssl1.0 的影响。

    解决了

    wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb
    sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb
    

    【讨论】:

    • 这对我有帮助。 openssl 已安装但 .net 未使用。一个建议:在第二行添加“sudo”,这样人们就可以复制粘贴:)
    • 这对我也有帮助,但现在 URL 已更改,请使用以下 URL wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.5_amd64.deb 然后 sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.5_amd64.deb
    • 也帮助了我!我试图build sqlpackage linux image 得到No usable version of the libssl was found
    • @Francesco URL 返回 404。我相信你现在应该wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb 然后sudo apt install ./libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb
    【解决方案3】:

    在使用 sqlpackage 工具 (https://docs.microsoft.com/en-us/sql/tools/sqlpackage-download?view=sql-server-2017) 时,在 Fedora 30(安装了 compat-openssl10)上仍然可以得到这个。

    $ dotnet --info
    .NET Core SDK (reflecting any global.json):
     Version:   2.2.203
     Commit:    e5bab63eca
    
    Runtime Environment:
     OS Name:     fedora
     OS Version:  30
     OS Platform: Linux
     RID:         linux-x64
     Base Path:   /usr/share/dotnet/sdk/2.2.203/
    
    Host (useful for support):
      Version: 2.2.4
      Commit:  f95848e524
    
    .NET Core SDKs installed:
      2.2.203 [/usr/share/dotnet/sdk]
    
    .NET Core runtimes installed:
      Microsoft.AspNetCore.All 2.2.4 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
      Microsoft.AspNetCore.App 2.2.4 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
      Microsoft.NETCore.App 2.2.4 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
    
    To install additional .NET Core runtimes or SDKs:
      https://aka.ms/dotnet-download
    

    Dotnet 自己运行良好。但是运行sqlpackage不起作用:

    $ sqlpackage /tsn:localhost /tu:xx /tp:yyy /A:Import /tdn:mydb /sf:mydb.bacpac
    Importing to database 'mydb' on server 'localhost'.
    No usable version of the libssl was found
    Aborted (core dumped)
    

    【讨论】:

      【解决方案4】:

      我在 github 中查找“找不到可用的 libssl 版本”。您会在 C 中找到 .Net 核心安全库的许多变体,每个变体都有非常特定的 dll 加载,用于精确的 libssl 库,并且所有内容都必须完美匹配,尽管它在许多中的名称不同。

      对于 raspberry pi / debian,它只需要 libssl 1.0.2,仅此而已。

      sudo apt-get install libssl1.0.2

      应该为 pi 解决问题!我无法与其他变体交谈。

      【讨论】:

      • 这不起作用。它会安装,.netcore 应用程序启动并运行,但是一旦您建立 SSL 连接,它就会抛出一个 HttpRequestException,消息是“无法建立 SSL 连接”,并且内部异常中有大量关于原因的信息。
      猜你喜欢
      • 2021-09-06
      • 1970-01-01
      • 2023-01-14
      • 2019-01-24
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      相关资源
      最近更新 更多