2016-07-19 7 views
5

Я устанавливаю DotNet на своем Macintosh с помощью MacPorts вместе с DotNet core от Microsoft. Их сайт говорит, чтобы установить OpenSSL из доморощенных:MacPorts OpenSSL Force Link для установки DotNet

brew update 
brew install openssl 
brew link --force openssl 

Я установлен OpenSSL через MacPorts:

ports install openssl 

Что означает «заварить ссылка --force OpenSSL» делать, и как я могу реализовать тот же с помощью MacPorts?

Спасибо!

+0

Так что, если я правильно понимаю, вы хотите реализовать команду, которую вы не знаете, что эта функция в другой менеджер пакета, он не предназначен? Я сомневаюсь, что это хорошая идея. –

+1

Поскольку вопрос задавался в контексте .NET Core, я не думаю, что OP обязательно хочет реализовать команду «link» в MacPorts, но хочет воссоздать все, что есть в этой команде. В частности, без эквивалента этой команды .NET Core находит версию OS X OpenSSL (0.9.8something), но не версию MacPorts (1.0.2something) и сбой. –

+0

'brew link' создает символические ссылки для файлов, установленных формулой openssl в'/usr/local'; Homebrew обычно устанавливает файлы только в папке ниже// usr/local/Cellar. – neverpanic

ответ

4

Я нашел решение этой проблемы, но не более общую в issue 173 .NET Core. Короче говоря, вам нужно связать версии MacPorts из libcrypto.dylib и libssl.dylib к /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

Вы не должны этого делать. Вместо этого экспортируйте 'DYLD_FALLBACK_LIBRARY_PATH =/opt/local/lib', чтобы заставить загрузчика найти библиотеки в'/opt/local/lib' или использовать 'install_name_tool -change' в двоичном файле dotnet, который ссылается на библиотеки в'/usr/local/lib', чтобы изменить пути к '/ opt/local/lib'. – neverpanic

+0

Хмм, по крайней мере 'sudo install_name_tool -change libcrypto.1.0.0.dylib /opt/local/lib/libcrypto.1.0.0.dylib/usr/local/share/dotnet/dotnet' (и ditto для libssl) didn ' t сделать трюк для меня: dotnet все еще бросает 'DllNotFoundException' для' System.Security.Cryptography.Native', как это было раньше. –

+0

Возможно, существует другая библиотека, ссылающаяся на libssl и libcrypto libs, или dotnet может попытаться открыть библиотеки во время выполнения, используя dlopen. К сожалению, мое знание dotnet слишком ограничено, чтобы узнать, какой из них (если таковой имеется). – neverpanic