Executando dotnet no linux

1

Tenho tido alguma dificuldade em fazer a dotnet rodar na minha máquina,

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

Eu instalei o dotnet core por meio do link

Os comandos que eu segui foram:

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

Então, usando o próximo passo de inicializar o código, obtenho:

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

e o erro que recebo é:

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

Eu tentei pesquisar esse problema, mas a maioria dos problemas vem do MacOSx e estão relacionados ao Mac.

Eu também tentei atualizar o openssl:

openssl version
OpenSSL 1.1.0e  16 Feb 2017

Não sei bem o que fazer a seguir. Alguém mais se deparou com este problema ou tem uma ideia de onde posso ir a partir daqui? Eu tenho sido capaz de usar com sucesso o dotnet no linux mint 17, mas não no kali linux.

    
por mattype4 27.03.2017 / 18:37

1 resposta

2

Eu finalmente consegui descobrir isso. (Desculpe novo para o site, então a pergunta foi feita por mim, mas eu não criei uma conta na época).

Sempre que você instala o Kali mais recente (Este é o kali 2016.2) e tenta instalar o último dotnet do site que forneci (que não é o mais recente) na versão 1.0.1, há muitos dependências que precisam ser reduzidas para uma versão anterior antes que o dotnet funcione.

Primeiro está fazendo o downgrade de libicu57 para libicu52 (que pode ser encontrado no site de pacotes debian). Isso consertará o seguinte problema:

Failed to initialize CoreCLR, HRESULT: 0x80131500

Em seguida, você precisa instalar a versão anterior do libssl (downgrade de libssl1.0.2 para libssl1.0.0). Isso corrigirá o problema original desta postagem.

Então, você precisa fazer o downgrade do libcurl3 (libcurl3 7.52 para libcurl3 7.38) para evitar que a falha de segmentação ocorra ao chamar o dotnet new, a restauração do dotnet, a execução do dotnet.

Deve ser isso.

    
por 27.03.2017 / 23:30