Linux에서 닷넷 실행

Linux에서 닷넷 실행

내 컴퓨터에서 닷넷을 실행하는 데 문제가 있습니다.

uname -a
Linux Olympus 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 (2016-07-21) x86_64 GNU/Linux

나는 다음을 통해 닷넷 코어를 설치했습니다.https://www.microsoft.com/net/core#linuxdebian

내가 따랐던 명령은 다음과 같습니다.

sudo apt-get install curl libunwind8 gettext
curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=843453
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin

그런 다음 초기화 코드의 다음 단계를 사용하면 다음과 같은 결과를 얻습니다.

dotnet --info
.NET Command Line Tools (1.0.1)

Product Information:
 Version:            1.0.1

Runtime Environment:
 OS Name:     kali
 OS Version:  2016.2
 OS Platform: Linux
 RID:         debian.8-x64
 Base Path:   /opt/dotnet/sdk/1.0.1

내가 얻는 오류는 다음과 같습니다.

dotnet new

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Crypto' threw an exception. ---> System.TypeInitializationException: The type initializer for 'CryptoInitializer' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'System.Security.Cryptography.Native.OpenSsl': The specified module could not be found.
 (Exception from HRESULT: 0x8007007E)
   at Interop.CryptoInitializer.EnsureOpenSslInitialized()
   at Interop.CryptoInitializer..cctor()
   --- End of inner exception stack trace ---
   at Interop.Crypto..cctor()
   --- End of inner exception stack trace ---
   at Interop.Crypto.GetRandomBytes(Byte* buf, Int32 num)
   at System.IO.Path.GetCryptoRandomBytesOpenSsl(Byte* bytes, Int32 byteCount)
   at System.IO.Path.GetCryptoRandomBytes(Byte* bytes, Int32 byteCount)
   at System.IO.Path.GetRandomFileName()
   at Microsoft.DotNet.InternalAbstractions.TemporaryDirectory..ctor()
   at Microsoft.Extensions.EnvironmentAbstractions.DirectoryWrapper.CreateTemporaryDirectory()
   at Microsoft.DotNet.Configurer.NuGetPackagesArchiver..ctor()
   at Microsoft.DotNet.Cli.Program.ConfigureDotNetForFirstTimeUse(INuGetCacheSentinel nugetCacheSentinel)
   at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, ITelemetry telemetryClient)
   at Microsoft.DotNet.Cli.Program.Main(String[] args)
Aborted

이 문제에 대해 조사해 보았지만 대부분의 질문은 MacOSx 및 Mac 관련 질문이었습니다.

또한 openssl 업데이트를 시도했습니다.

openssl version
OpenSSL 1.1.0e  16 Feb 2017

다음에 무엇을 해야할지 잘 모르겠습니다. 다른 사람 중에 이 문제가 발생했거나 여기서 어디로 갈 수 있는지 아는 사람이 있나요? Linux mint 17에서는 dotnet을 성공적으로 사용할 수 있었지만 kali linux에서는 사용할 수 없었습니다.

답변1

나는 마침내 이것을 알아낼 수 있었습니다. (죄송합니다. 저는 이 사이트에 처음 왔기 때문에 이 질문은 저에게서 나온 것입니다. 하지만 당시 저는 계정을 만들지 않았습니다.)

최신 Kali(kali 2016.2)를 설치한 다음 제가 제공한 웹 사이트(실제로는 최신 버전이 아님)에서 최신 dotnet 코어 버전 1.0.1을 설치하려고 할 때마다 dotnet 전에 다운그레이드해야 하는 많은 종속성이 있습니다. 이전 버전으로 실행할 수 있습니다.

첫 번째는 libicu57을 libicu52로 다운그레이드하는 것입니다(debian 패키지 사이트에서 찾을 수 있음). 이렇게 하면 다음 문제가 해결됩니다.

Failed to initialize CoreCLR, HRESULT: 0x80131500

다음으로 이전 버전의 libssl을 설치해야 합니다(libssl1.0.2에서 libssl1.0.0으로 다운그레이드). 그러면 이 글의 원래 문제가 해결될 것입니다.

그런 다음 dotnet new, dotnet Restore 및 dotnet run을 호출할 때 분할 오류를 방지하려면 libcurl3을 다운그레이드해야 합니다(libcurl3 7.52에서 libcurl3 7.38로).

그래야 합니다.

관련 정보