2016-07-19 32 views
5

Instaluję DotNet na moim Macintoshu za pomocą MacPorts wraz z DotNet core od Microsoft. Ich strona mówi zainstalować OpenSSL z homebrew:MacPorts OpenSSL Force Link do instalacji DotNet

brew update 
brew install openssl 
brew link --force openssl 

mam OpenSSL zainstalowane przez MacPorts:

ports install openssl 

Co spowoduje "napar Link --force OpenSSL" zrobić i jak mogę wdrożyć ten sam rzeczy używające MacPorts?

Dzięki!

+0

Więc jeśli dobrze rozumiem, chcesz wprowadzić polecenie, które nie wiedzą, co ta funkcja jest do innego menadżera pakietów, które to nie jest przeznaczone? Wątpię, że to dobry pomysł. –

+1

Ponieważ pytanie zostało zadane w kontekście .NET Core, nie sądzę, że OP koniecznie chce zaimplementować polecenie "link" w MacPorts, ale raczej chce odtworzyć to, co robi to polecenie. W szczególności, bez odpowiednika tego polecenia, .NET Core znajduje wersję OpenSSL OS X (0.9.8 coś), ale nie wersję MacPorts (1.0.2 coś) i awarie. –

+0

'brew link' tworzy dowiązania symboliczne dla plików instalowanych przez formułę openssl w'/usr/local'; Homebrew zazwyczaj instaluje tylko pliki w folderze poniżej '/ usr/local/Cellar'. – neverpanic

Odpowiedz

4

Znalazłem rozwiązanie tego konkretnego problemu, ale nie bardziej ogólne w issue 173. NET Core. W skrócie, trzeba połączyć wersje DarwinPorts z libcrypto.dylib i libssl.dylib do /usr/local/lib:

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

Nie powinieneś tego robić. Zamiast tego wyeksportuj 'DYLD_FALLBACK_LIBRARY_PATH =/opt/local/lib', aby program ładujący znalazł biblioteki w'/opt/local/lib', lub użyj 'install_name_tool -change' w pliku binarnym dotnet, który odwołuje się do bibliotek w'/usr/local/lib', aby zmienić ścieżki do '/ opt/local/lib'. – neverpanic

+0

Hmm, przynajmniej 'sudo nazwa_instalacji_tool -change libcrypto.1.0.0.dylib /opt/local/lib/libcrypto.1.0.0.dylib/usr/local/share/dotnet/dotnet' (i ditto for libssl) didn ' Zrób mi jakąś sztuczkę: dotnet wciąż rzuca 'DllNotFoundException' dla' System.Security.Cryptography.Native' jak wcześniej. –

+0

Może istnieć inna biblioteka odwołująca się do libssl i libcrypto libs, lub dotnet może rzeczywiście próbować otworzyć biblioteki w środowisku wykonawczym używając dlopen. Moja znajomość dotnetu jest niestety zbyt ograniczona, aby wiedzieć, który z tych (jeśli w ogóle) ma miejsce. – neverpanic