Homebrew se niega a vincular OpenSSL
Estoy en: OSX 10.11.6, Homebrew versión 0.9.9 m OpenSSL 0.9.8 zg 14 de julio de 2015
Estoy tratando de jugar con dotnetcore y siguiendo sus instrucciones ,
He actualizado / instalado la última versión de 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
Pero cuando intento enlazar openssl continúo encontrándome con este error de enlace:
> 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
La opción de incluir indicadores de compilador no tiene sentido para mí, ya que no estoy compilando estas bibliotecas de las que dependo.
EDIT dotnetcore ha actualizado sus instrucciones:
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/
11 answers
Como sugiere la actualización a la otra respuesta, la solución alternativa de instalar el antiguo openssl101 brew ya no funcionará. Para una solución inmediata, consulte este comentario en dotnet/cli#3964.
La parte más relevante de la cuestión copiada aquí:
Miré en la otra opción que se sugirió para establecer el rpath en la biblioteca. Creo que la siguiente es una mejor solución que solo afectará a esta biblioteca específica.
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
Y / o si tiene instalado NETCore 1.0.1 realice el mismo comando para 1.0.1 también:
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
En efecto, en lugar de decirle al sistema operativo que siempre use la versión homebrew de SSL y potencialmente causar que algo se rompa, le estamos diciendo a dotnet cómo encontrar la biblioteca correcta.
También es importante, parece que Microsoft son conscientes del problema y tienen tanto a) un plan algo inmediato para mitigar, así como b) una solución a largo plazo (probaby liando OpenSSL con dotnet).
Otra cosa a tener en cuenta: /usr/local/opt/openssl/lib
es donde el brebaje está vinculado por defecto:
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
Si por alguna razón instala el brew y lo enlaza en una ubicación diferente, entonces esa ruta es la que debe usar como ruta de acceso.
Una vez que haya actualizado el rpath del Sistema.Seguridad.Criptografía.Nativo.dylib libray, necesitará reiniciar su sesión interactiva (es decir, cerrar su consola e iniciar otra).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-21 16:31:59
Esto es lo que funcionó para mí:
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/
ln -s /usr/local/Cellar/openssl/1.0.2j/bin/openssl /usr/local/bin/openssl
Gracias a @dorlandode en este hilo https://github.com/Homebrew/brew/pull/597
NB: Solo usé esto como una solución temporal hasta que pudiera pasar tiempo correctamente instalando Openssl de nuevo desde cero. Según recuerdo, pasé la mayor parte del día depurando y teniendo problemas antes de darme cuenta de que la mejor manera era instalar manualmente los certificados que necesitaba uno por uno. Por favor, lee el enlace en el comentario de @bouke antes de intentar esto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-20 08:32:55
Ninguna de estas soluciones funcionó para mí en OS X El Capitan 10.11.6. Probablemente porque OS X tiene una versión nativa de openssl que cree que es superior,y como tal, no le gusta la manipulación.
Así que, tomé el camino alto y comencé de nuevo...
Instalar manualmente y enlace simbólico
cd /usr/local/src
-
Si usted está recibiendo "Ningún archivo o directorio", hágalo:
cd /usr/local && mkdir src && cd src
Descargar openssl:
curl --remote-name https://www.openssl.org/source/openssl-1.0.2h.tar.gz
Extracto y cd en:
tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
Compilar e instalar:
./configure darwin64-x86_64-cc --prefix=/usr/local/openssl-1.0.2h shared
make depend
make
make install
Ahora enlaza el openssl de OS X a tu openssl nuevo y actualizado:
ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl
Cierre la terminal, abra una nueva sesión y verifique que OS X esté usando su nuevo openssl:
openssl version -a
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-02 20:27:19
Simplemente ejecuta brew info openssl
y lee la información donde dice:
Si necesita tener este software primero en su PATH run:
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-22 07:50:02
Solo para dejar una nota sobre esto, había migrado mi mac y desvinculó todas mis instalaciones de homebrew, incluida esta. Esto se rompió gem install
, que es cómo empecé a tratar de reparar esto.
Probé un millón de soluciones (estoy en OSX Sierra - 10.12.5) y la solución terminó siendo cómicamente simple:
brew reinstall ruby
brew reinstall openssl
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-26 20:56:37
Después de probar todo lo que pude encontrar y nada funcionó, solo probé esto:
touch ~/.bash_profile; open ~/.bash_profile
Dentro del archivo se agregó esta línea.
export PATH="$PATH:/usr/local/Cellar/openssl/1.0.2j/bin/openssl"
Ahora funciona :)
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-04 11:03:41
Tengo un caso similar. Necesito instalar openssl a través de brew y luego usar pip para instalar mitmproxy. Recibo la misma queja de brew link --force
. La siguiente es la solución que alcancé: (sin enlace de fuerza por brew)
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
Esto no aborda la cuestión directamente. Dejo el one-liner en caso de que alguien use pip y requiera el openssl lib.
Nota: las rutas /usr/local/opt/openssl/lib
se obtienen por brew info openssl
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-24 13:18:40
Esto funcionó para mí:
brew install openssl
cd /usr/local/include
ln -s ../opt/openssl/include/openssl .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-23 05:30:04
La solución anterior de edwardel segundo funcionó para mí también en Sierra
brew install openssl
cd /usr/local/include
ln -s ../opt/openssl/include/openssl
./configure && make
Otros pasos que hice antes fueron:
-
Instalación de openssl a través de brew
brew install openssl
-
Añadiendo openssl a la ruta como sugiere homebrew
brew info openssl echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-13 10:08:48
Nota: esto ya no funciona debido a https://github.com/Homebrew/brew/pull/612
Hoy tuve el mismo problema. He desinstalado (sin elaborar??) openssl 1.0.2 e instalado 1.0.1 también con homebrew. Dotnet new / restore / run funcionó bien.
Instalar openssl 101:
brew instalar homebrew / versiones / openssl101
Enlaces:
brew link force force homebrew/versions / openssl101
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-01 03:21:25
Para mí esto es lo que funcionó...
Edité el ./ bash_profile y añadido debajo del comando
Export PATH = "/usr/local/opt/openssl / bin: PATH PATH "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-12 08:14:26