Доморощенный отказывается от ссылки OpenSSL

Я нахожусь: OSX 10.11.6, Homebrew версия 0.9.9m OpenSSL 0.9.8zg 14 июля 2015

Я пытаюсь поиграть с dotnetcore и следуя ихинструкции,

Я обновил / установил последнюю версию openssl:

> brew install openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
Already downloaded: /Users/administrator/Library/Caches/Homebrew/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Pouring openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

Но когда я пытаюсь связать openssl, я продолжаю сталкиваться с этой ошибкой связывания:

> brew link --force openssl
Warning: Refusing to link: openssl
Linking keg-only OpenSSL means you may end up linking against the insecure,
deprecated system version while using the headers from the Homebrew version.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

Возможность включать флаги компилятора не имеет смысла для меня, так как я не компилирую эти библиотеки, от которых я зависим.

РЕДАКТИРОВАТЬ dotnetcore обновил свои инструкции:

brew update    
brew install openssl    
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/    
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
 bartonjs30 июл. 2016 г., 08:11
Возможно, подойдет другой HOMEBREW_PREFIX; но это определенно за пределами моего опыта.
 bfontaine13 авг. 2016 г., 10:20
rpath решение лучше. Есть причина, по которой Homebrew теперь запрещает вам связывать OpenSSL; Этоявляется плохая идея и может сломать вещи на вашем компьютере.
 Paul Keister01 авг. 2016 г., 07:09
Я попробовал большинство решений на этой странице, но ни одно из них не сработало. Однако я смог заставить ядро ​​.Net работать с этим решением:github.com/dotnet/cli/issues/3964#issuecomment-236485454
 daviddeath31 июл. 2016 г., 01:06
@bartonjs - связь работала с версией 1.0.1. В соответствии с коммитом, который вы опубликовали, который был всего несколько дней назад, я предполагаю, что более старые версии имеют другой HOMEBREW_PREFIX. Пока все хорошо, но в будущем я попробую ваше предложение попробовать другой префикс.
 jww30 июл. 2016 г., 13:53
«... когда я пытаюсь связать openssl, я продолжаю сталкиваться с этой ошибкой связывания: ..» - Также смКак установить путь выполнения (-rpath) исполняемого файла с gcc под Mac OSX?, Это может помочь вам всегда загружать правильную библиотеку во время выполнения, если Brew не добавляет ее.
 bartonjs30 июл. 2016 г., 08:10
Похоже, Homebrew явно заблокировал это:github.com/Homebrew/brew/commit/....
 songololo01 авг. 2016 г., 12:20
Ссылка @ PaulKeister на обсуждение github работала для меня. В основном просто запустить:sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib
 bartonjs30 июл. 2016 г., 07:32
Для .NET Core вам нужна поддерживаемая версия OpenSSL, которая будет 1.0.1 или 1.0.2. Поскольку вы сообщаете о версии 0.9.8, возможно, вам нужноbrew upgrade openssl первый?
 bartonjs30 июл. 2016 г., 08:28
И ... чтобы продолжить округлять мою болтовню, вас может заинтересовать все, что происходит наgithub.com/Homebrew/brew/pull/597
 rogerdpack27 сент. 2017 г., 17:53
Вы, вероятно, должны указать, что ваш «dotnetcore обновил инструкции по их установке» в ответ на свой вопрос: \ Как следует из обновления к другому ответу, обходной путь установки старой версии openssl101 больше не будет работать. Прямо сейчас обойти см.
 daviddeath30 июл. 2016 г., 07:59
Я уже сделал это. Я должен был уточнить, но я не добавил эти шаги к вопросу. Но я уже сделалbrew update а такжеbrew install openssl, Это пытается установить поддерживаемую версию.

Ответы на вопрос(11)

, Ниже приведено решение, которое я достиг: (без принудительной связи посредством варки)brew link --forceЭто не решает вопрос прямо. Я оставляю однострочник на тот случай, если кто-нибудь использует pip и требует openssl lib.

LDFLAGS=-L/usr/local/opt/openssl/lib 
CPPFLAGS=-I/usr/local/opt/openssl/include
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig 
pip install mitmproxy

Обратите внимание

 пути получены/usr/local/opt/openssl/libНашел этот полезный для установки pysqlcipherbrew info openssl

 drtf05 дек. 2016 г., 13:05
Полезно для установки
 Sagar15 дек. 2016 г., 23:38
, Я скучал поcryptography переменнаяPKG_CONFIG_PATHЭто сработало для меня:
Я перенес свой Mac, и он не связан

все мой доморощенный устанавливает - в том числе OpenSSL. Это сломалосьИменно так я впервые заметил проблему и начал пытаться ее починить.gem installПосле миллиона решений (при переходе на OSX Sierra - 10.12.5) решение оказалось комично простым:

Да, спасибо, это тоже для меня.

brew reinstall ruby
brew reinstall openssl
 Matthew19 нояб. 2017 г., 09:08
Легенда, у меня тоже сработало.
 Jamie13 июн. 2018 г., 17:46
И через год это случилось со мной, когда я перенес свой Mac, и твое исправление сработало и для меня. Спасибо; Я начал думать о том, чтобы стереть мой новый Mac, выполнить новую установку и заново все настроить вручную.
 David28 июн. 2018 г., 14:25
@ Давид рад, что я могу не дать тебе пройти через край! Я почти сделал то же самое.
 tobybot28 июн. 2018 г., 16:54
Вам также может понадобиться удалить эту папку, прежде чем делать выше.
 Gal Bracha19 сент. 2018 г., 12:33
Перепробовав все что смог найти и ничего не получилось, я просто попробовал вот что:rm -rf /usr/local/opt/openssl

Внутри файла добавлена ​​эта строка.

touch ~/.bash_profile; open ~/.bash_profile

теперь это работает :)

export PATH="$PATH:/usr/local/Cellar/openssl/1.0.2j/bin/openssl"

Это действительно простое решение, и я очень надеялся, что оно сработает для меня, но не повезло. Даже после обновления моего PATH и перезапуска сеанса оболочки

Jorns-iMac:~ jorn$ openssl version -a
OpenSSL 1.0.2j  26 Sep 2016
built on: reproducible build, date unspecified
//blah blah
OPENSSLDIR: "/usr/local/etc/openssl"

Jorns-iMac:~ jorn$ which openssl
/usr/local/opt/openssl/bin/openssl
 Mark Reed16 окт. 2017 г., 16:36
без/usr/local/opt/openssl/bin,   в конце концов, к/opensslфронт ПУТИ, а не конец  С помощьюPATH=/usr/local/opt/openssl/bin:$PATH вместо/usr/local/opt/openssl означает, что вы автоматически сохраняете самую последнюю версию в своей переменной $ PATH без необходимости менять ее при каждом обновлении./usr/local/Cellar/openssl/$versionПосле нескольких часов немоты это помогло мне вместе с дополнительными заметками @ MarkReed
 Karthik N G15 февр. 2019 г., 23:46
У меня похожий случай. Мне нужно установить openssl через brew, а затем использовать pip для установки mitmproxy. Я получаю ту же жалобу от
 Alison21 дек. 2016 г., 17:40
то же самое - это не работаетexport PATH=/usr/local/bin:$PATH
 Will Hitchcock20 нояб. 2016 г., 00:48
 еще указывает наwhich opensslДля того, чтобы это работало, мне также пришлось отредактировать мой .bash_profile. Но единственное, что сработало, - это попросил его искать в / usr / local / bin вместо / usr / bin. Я сделал это, добавив/usr/bin/openssl
 Vyachaslav Gerchicov23 июн. 2017 г., 09:58
Чтобы это работало, нужно добавить
 Naomi See25 февр. 2018 г., 05:57
Я смог использовать это и заставить его работать на меня. Спасибо. У меня 1.0.2q версия openssl.

https://github.com/Homebrew/brew/pull/612У меня была такая же проблема сегодня. Я удалил (unbrewed ??) openssl 1.0.2 и установил 1.0.1 также с homebrew. Дотнет новый / восстановить / запустить потом нормально работал.

Установите openssl 101:

Brew Install Homebrew / Версии / openssl101
Связь:
brew link --forve homebrew / версии / openssl101
Это сделал это! Кажется, что 1.0.2 не хочет связываться. Следующий вопрос: почему .netcore предлагает что-то, что не рекомендуется в сообществе.

 Gerry01 авг. 2016 г., 08:04
, затемif false &&, Не делай этого, я, вероятно, ужасный человек за то, что даже предложил это.brew install --force opensslдля меня это то, что сработало ...
 dark_ruby31 июл. 2016 г., 22:10
Этот ответ больше не является правильным, учитывая изменения, внесенные разработчиками homebrew вRefusing to link: openssl101 Linking keg-only openssl101 means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl101. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl101/include -L/usr/local/opt/openssl101/lib
 user348882030 июл. 2016 г., 20:55
Ссылка на github, опубликованная @bartonjs, показывает, что brew был обновлен всего несколько дней назад. Глядя на фиксацию, изменение заключается в том, что `if HOMEBREW_PREFIX.to_s ==" / usr / local "&& keg.name ==" openssl "`, поэтому я предполагаю, что версия 1.0.1 использует другой HOMEBREW_PREFIX.
 daviddeath31 июл. 2016 г., 01:03
не работает для меня, все еще дает ошибку
 daviddeath30 июл. 2016 г., 18:42
1.0.2 работал для меня на другом Mac несколько дней назад, так что, возможно, недавно произошли изменения в brew или openssl. Во всяком случае, для дот нетто ядра, мы хороши :)

Итак, я выбрал большую дорогу и начал все заново ...

Вручную установите и символическую ссылку

Если вы получаете «Нет такого файла или каталога», сделайте это:
cd /usr/local/src  

Скачать openssl:

cd /usr/local && mkdir src && cd src

Извлечение и CD в:

curl --remote-name https://www.openssl.org/source/openssl-1.0.2h.tar.gz

Скомпилируйте и установите:

tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h

Теперь символьная ссылка OS X openssl на ваш новый и обновленный openssl:

./configure darwin64-x86_64-cc --prefix=/usr/local/openssl-1.0.2h shared
make depend
make
make install

Закройте терминал, откройте новый сеанс и убедитесь, что OS X использует ваш новый openssl:

ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl

Если вы пытаетесь установить ядро ​​.NET на OS X, вы должны обернуть его в Docker.

openssl version -a
 Merlea Dan28 янв. 2017 г., 18:23
это не работает
 sea26.201 июн. 2018 г., 17:47
Просто выполнить
 Chris22 дек. 2016 г., 21:58
Я следовал этим инструкциям (большое спасибо за шаг за шагом), и он все еще сказал 0.9.8. Спасибо Оливье за ​​альтернативный метод связи, который работал.
 mcgwier02 авг. 2016 г., 03:06
После всего этого: OpenSSL 0.9.8zh 14 января 2016 года, построено: 15 мая 2016 года платформа: darwin64-x86_64-llvm
 AsimRazaKhan09 сент. 2016 г., 17:13
Создание символической ссылки следующим образом сработало для меня:
 Olivier19 дек. 2016 г., 13:47
, После перезапуска сеанса терминала введитеln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl чтобы убедиться, что вы используете обновленную версию 1.0.2 (which openssl) вместо встроенного (/usr/local/bin/openssl)./usr/bin/opensslЯ следовал этим инструкциям, но когда я набираю openssl, я получаю (/ opt / local / bin / openssl). Как мне получить это / usr / local / bin / openssl?
 Vyachaslav Gerchicov23 июн. 2017 г., 09:57
По-прежнему не работает: установлена ​​новая версия OpenSSL. Но это не используется приложениями, такими как Composer. $ openssl version -a OpenSSL 1.0.2o 27 марта 2018 Однако результаты диагностики Composer говорят об обратном. $ composer Diagnose Проверка composer.json: ПРЕДУПРЕЖДЕНИЕ Лицензия не указана, рекомендуется делать это. Для программного обеспечения с закрытым исходным кодом вы можете использовать «проприетарный» в качестве лицензии. Проверка настроек платформы: ПРЕДУПРЕЖДЕНИЕ Библиотека OpenSSL (0.9.8r), используемая PHP, не поддерживает TLSv1.2 или TLSv1.1. Если возможно, вы должны обновить OpenSSL до версии 1.0.1 или выше.
 Onikoroshi12 янв. 2017 г., 04:55
этот спас меня
Решение Вопроса

этот комментарий на dotnet / cli # 3964Наиболее актуальная часть номера скопирована здесь:.

Я посмотрел на другой вариант, который был предложен для установки rpath в библиотеке. Я думаю, что следующее является лучшим решением, которое повлияет только на эту конкретную библиотеку.

и / или если у вас установлен NETCore 1.0.1, выполните ту же команду для 1.0.1:

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib

По сути, вместо того, чтобы указывать операционной системе всегда использовать доморощенную версию SSL и, возможно, что-то сломать, мы сообщаем dotnet, как найти правильную библиотеку.

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Security.Cryptography.Native.dylib

Также важно то, что, похоже, Microsoft осведомлена об этой проблеме и имеет оба: а) несколько немедленный план по смягчению, а также б) долгосрочное решение (вероятностное связывание OpenSSL с dotnet).

Еще одна вещь, чтобы отметить:

 где варка связана по умолчанию:/usr/local/opt/openssl/libЕсли по какой-либо причине вы устанавливаете brew и связываете его в другом месте, то этот путь следует использовать как rpath.

13:22 $ ls -l /usr/local/opt/openssl
lrwxr-xr-x  1 ben  admin  26 May 15 14:22 /usr/local/opt/openssl -> ../Cellar/openssl/1.0.2h_1

Как только вы обновите rpath libray System.Security.Cryptography.Native.dylib, вам нужно будет перезапустить интерактивный сеанс (т.е. закрыть консоль и запустить еще один).

Теперь это правильный ответ.

 mrahhal02 авг. 2016 г., 14:20
@mrahhal это путь установки/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib (No such file or directory).
 mrahhal02 авг. 2016 г., 15:16
С dotnet 1.1.0 мне пришлось сделать:
 Bouke24 янв. 2017 г., 10:58
Что, еслиsudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.1.0/System.Security.Cryptography.Native.OpenSsl.dylib
 daviddeath01 авг. 2016 г., 20:53
Где я должен добавить эту строку? Я пытаюсь заставить это работать в CI. Я получаю
 mrahhal02 авг. 2016 г., 14:24
, Повторим попытку и вернемся.dotnetСработало для меня, в моем случае SDK был установлен в другой каталог, поэтому мне пришлось изменить путь.
 macloo12 февр. 2017 г., 18:15
 показывает, у меня его нет?which dotnet@macloo Я слышал сообщения от знакомых о том, что установщик в macOS иногда не обновляет путь должным образом, поэтому вы можете использовать его в своей файловой системе, но не можете нормально его использовать. Другая возможность состоит в том, что у вас его действительно нет, и в этом случае вы должны установить его с
 Ben Collins12 февр. 2017 г., 19:27
 Ben Collins02 авг. 2016 г., 14:23
 инструментов. Возможно, вы либо не установили его, либо установили, либо в другое место. Если он установлен и с вашей стороны, вы можете использоватьdotnet найти его.which dotnetО, просто понял, что я добавляю эту строку перед установкой

Другие шаги, которые я делал раньше, были:

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl 
 ./configure && make

установка openssl через brew

добавление openssl к пути, как это предлагает homebrew

brew install openssl

не работает, начиная с "настроить и сделать"

brew info openssl
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
 Vyachaslav Gerchicov23 июн. 2017 г., 09:47
Работал хорошо для меня, просто пропустил часть "./configure && make"
 David 'mArm' Ansermot08 июн. 2018 г., 08:21
Примечание: это больше не работает из-за

пытаясь скомпилировать PHP 7.2.1 с phpbrew на Mac OS High Sierra - Спасибо!

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl .
 Bruno de Oliveira10 янв. 2018 г., 02:10
Приведенное выше решение от edwardthesecond сработало и у меня на Сьерре

Я отредактировал ./bash_profile и добавил команду ниже

экспорт PATH = "/ usr / local / opt / openssl / bin: $ PATH"

Доморощенный отказывается от ссылки OpenSSL

и прочитайте информацию, где написано:brew info opensslЕсли вам нужно сначала запустить это программное обеспечение при запуске PATH:

 дал такую ​​же полезную информацию для меня. Выполнение предложенной команды выше и затем запускecho 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

 user12438423 апр. 2017 г., 03:01
это не работает
 B.Ma30 сент. 2017 г., 11:10
Если миграция вашего Mac ломает доморощенный:echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
 PanPipes23 февр. 2017 г., 11:19
brew info openssl или открытие нового терминала решило это для меня.source ~/.bash_profileВ КОНЦЕ КОНЦОВ. Это также сработало для меня. Другие ответы выше не сделали!
 Vyachaslav Gerchicov23 июн. 2017 г., 09:50
или же
 Efe Kaptan01 дек. 2016 г., 19:02
Есть веская причина, по которой варево отказывается это делать. Смотрите также это:
 shaneparsons13 апр. 2017 г., 17:43
 исправляет этоln -s -f /usr/local/Cellar/openssl/1.0.2k/bin/openssl /usr/local/bin/opensslэто не работает
 Mohamed Hafez24 окт. 2016 г., 21:33
Почему этот ответ не принят, ты спас мне жизнь человека. ::палец вверх::/usr/local/bin/openssl?
 Bouke24 янв. 2017 г., 10:58
 Vyachaslav Gerchicov23 июн. 2017 г., 09:50
Ни одно из этих решений не работало для меня на OS X El Capitan 10.11.6. Вероятно, потому что OS X имеет собственную версию openssl, которая, по его мнению, является превосходной, и поэтому не любит вмешиваться.
 wukong22 нояб. 2016 г., 20:15
Миллион раз спасибо
 Jeff27 мар. 2017 г., 16:25
 в1.0.2j из-за различий в версии. Так что пользователи остерегаются, вам может понадобиться скорректировать пути для текущей версии1.0.2kЯ видел комментарий @ Джеффа слишком поздно. Если вы тоже, я считаю,

Ваш ответ на вопрос