2016-07-19 24 views
5

Ich installiere DotNet auf meinem Macintosh mit den MacPorts zusammen mit der DotNet core von Microsoft. Ihre Website sagt OpenSSL von HomeBrew zu installieren:MacPorts OpenSSL Force Link für die Installation von DotNet

brew update 
brew install openssl 
brew link --force openssl 

Ich habe OpenSSL über MacPorts installiert:

ports install openssl 

Was bedeutet das "Gebräu Link --force openssl" tun, und wie kann ich das gleiche implementieren Sache mit MacPorts?

Danke!

+0

Also, wenn ich das richtig verstehe, wollen Sie einen Befehl implementieren, die Sie nicht wissen, was die Funktion in einem anderen Paket-Manager ist, dass es ist nicht dafür gedacht? Ich bezweifle, dass das eine gute Idee ist. –

+1

Da die Frage im Zusammenhang mit dem .NET-Core gestellt wurde, glaube ich nicht, dass der OP den "link" -Befehl unbedingt in MacPorts implementieren möchte, sondern vielmehr, was auch immer dieser Befehl tut. Ohne das Äquivalent dieses Befehls findet .NET Core die OS X-Version von OpenSSL (0.9.8something), nicht jedoch die MacPorts-Version (1.0.2something) und stürzt ab. –

+0

'brew link' erstellt Symlinks für die von der openssl-Formel installierten Dateien in'/usr/local'; Homebrew installiert die Dateien normalerweise nur in einem Ordner unterhalb von '/ usr/local/Cellar'. – neverpanic

Antwort

4

Ich fand die Lösung für dieses spezielle Problem, aber nicht die allgemeinere in issue 173 des .NET Core. Kurz gesagt, müssen Sie die MacPorts Versionen von libcrypto.dylib und libssl.dylib zu /usr/local/lib verlinken:

sudo ln -s /opt/local/lib/libcrypto.1.0.0.dylib /usr/local/lib/libcrypto.1.0.0.dylib 
sudo ln -s /opt/local/lib/libssl.1.0.0.dylib /usr/local/lib/libssl.1.0.0.dylib 
+2

Sie sollten das nicht tun. Exportieren Sie stattdessen 'DYLD_FALLBACK_LIBRARY_PATH =/opt/local/lib', damit der Loader die Bibliotheken in'/opt/local/lib' findet, oder verwenden Sie 'install_name_tool -change' in der dotnet-Binärdatei, die auf die Bibliotheken in'/usr/verweist. local/lib', um die Pfade zu '/ opt/local/lib' zu ändern. – neverpanic

+0

Hmm, zumindest 'sudo install_name_tool -change libcrypto.1.0.0.dylib /opt/local/lib/libcrypto.1.0.0.dylib/usr/ local/share/dotnet/dotnet' (und dito für libssl) didn ' t den Trick für mich: dotnet wirft noch eine "DllNotFoundException" für "System.Security.Cryptography.Native" wie zuvor. –

+0

Es könnte eine andere Bibliothek geben, die auf die libssl- und libcrypto-Bibliotheken verweist, oder dotnet versucht möglicherweise tatsächlich, die Bibliotheken zur Laufzeit mit dlopen zu öffnen. Mein Wissen von Dotnet ist leider zu begrenzt, um zu wissen, welche von denen (falls überhaupt) der Fall ist. – neverpanic