我正在尝试在openSuse中开发.NET Core。我确实安装了SDK和教程中的所有内容。现在,当我尝试运行dotnet new console
命令时,出现以下错误:
未找到可用的libssl版本
已中止(核心已弃用)
我找到了这个答案:(.NET Core 2.1 SDK Linux x64 No usable version of the libssl was found),但是没有得到解决问题的方法。他们似乎是深度Linuxer(不是,我只是想学习linux)。知道如何运行该命令吗?
更新:系统信息:
openSUSE Leap 15.0
内核版本4.12.14-lp150.12.22-default
操作系统类型:64-bit
答案 0 :(得分:4)
您可以安装libopenssl1_0_0
软件包吗? .NET Core应该可以使用它。
对任何有好奇心的人加长一点的解释:
OpenSSL是Linux上最常用的加密库之一。它有多个版本。 1.0版有点旧,但使用率很高。 1.1是(相对)最近发布的较新版本。 1.0和1.1不兼容。期望1.0的应用程序无法针对1.1构建,也无法针对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的最新版本不再应该发生此问题。
答案 1 :(得分:3)
当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://de.archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.3_amd64.deb
sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.3_amd64.deb
答案 2 :(得分:0)
使用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)
答案 3 :(得分:0)
我在github中查找“未找到libssl的可用版本”。您会在C中找到.Net核心安全性库的许多变体,每个变体对于确切的libssl库都有非常特定的dll加载,尽管在许多情况下命名不同,但所有内容都必须完美匹配。
对于树莓派/ debian,它只需要libssl 1.0.2,
sudo apt-get install libssl1.0.2
应该为pi做花招!我不能说其他的变种。