it-swarm.com.de

Homebrew weigert sich, OpenSSL zu verknüpfen

Ich bin auf: OSX 10.11.6, Homebrew-Version 0.9.9m OpenSSL 0.9.8zg 14. Juli 2015

Ich versuche mit dotnetcore zu spielen und deren Anweisungen zu befolgen

Ich habe die neueste Version von openssl aktualisiert/installiert:

> 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

Aber wenn ich versuche, openssl zu verknüpfen, stoße ich weiterhin auf diesen Verbindungsfehler:

> 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

Die Option zum Einschließen von Compiler-Flags ist für mich nicht sinnvoll, da ich diese Bibliotheken nicht kompiliere, von denen ich abhängig bin. 

EDIT dotnetcore hat seine Anweisungen aktualisiert:

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/
108
daviddeath

Wie aus dem Update für die andere Antwort bereits hervorgeht, funktioniert die Installation des alten openssl101-Suds nicht mehr. Für eine sofortige Problemumgehung siehe diesen Kommentar zu dotnet/cli # 3964 .

Der relevanteste Teil der Ausgabe wurde hier kopiert:

Ich habe nach der anderen Option gesucht, die vorgeschlagen wurde, um den Pfad in der Bibliothek festzulegen. Ich denke, das Folgende ist eine bessere Lösung, die nur diese spezifische Bibliothek betrifft.

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

und/oder wenn Sie NETCore 1.0.1 installiert haben, führen Sie denselben Befehl auch für 1.0.1 aus:

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

Anstatt dem Betriebssystem mitzuteilen, dass es immer die homebrew-Version von SSL verwenden soll, was zu einem Bruch führen kann, teilen wir dotnet mit, wie die richtige Bibliothek zu finden ist.

Es scheint auch so, als ob Microsoft sich des Problems bewusst ist und sowohl a) einen etwas unmittelbaren Plan zur Abmilderung als auch b) eine langfristige Lösung hat (Probaby-Bündelung von OpenSSL mit Dotnet).

Eine andere Sache, die Sie beachten sollten: /usr/local/opt/openssl/lib ist, wo das Gebräu standardmäßig verlinkt ist:

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

Wenn Sie das Gebräu aus irgendeinem Grund installieren und an einen anderen Ort verlinken, sollten Sie diesen Pfad als Pfad verwenden.

Nachdem Sie den R-Pfad der Bibliothek "System.Security.Cryptography.Native.dylib" aktualisiert haben, müssen Sie die interaktive Sitzung erneut starten (d. H. Die Konsole schließen und eine andere Sitzung starten).

56
Ben Collins

Das hat bei mir funktioniert:

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

Danke an @dorlandode in diesem Thread https://github.com/Homebrew/brew/pull/597

NB: Ich habe dies nur als temporäre Lösung verwendet, bis ich Opensl wieder richtig installieren konnte. Soweit ich mich erinnere, verbrachte ich den besten Teil eines Tages mit dem Debuggen und hatte Probleme, bevor mir klar wurde, dass es am besten war, die erforderlichen Zertifikate manuell zu installieren. Bitte lesen Sie den Link in @ boukes Kommentar, bevor Sie dies versuchen.

47
rorykoehler

Keine dieser Lösungen funktionierte für mich unter OS X El Capitan 10.11.6. Wahrscheinlich, weil OS X eine native Version von openssl hat, von der es glaubt, dass sie überlegen ist, und als solche keine Manipulation mag.

Also nahm ich die Straße und fing frisch an ...


Manuell installieren und Symlink

cd /usr/local/src  
  • Wenn Sie "Keine solche Datei oder ein solches Verzeichnis" erhalten, machen Sie folgendes: 

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

Openssl herunterladen:

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

Auszug und CD in:

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

Kompilieren und installieren Sie:

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

Nun verbinden Sie OS Xs openssl mit Ihrem neuen und aktualisierten openssl:

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

Schließen Sie das Terminal, öffnen Sie eine neue Sitzung und stellen Sie sicher, dass OS X Ihr neues openssl verwendet:

openssl version -a
42
mcgwier

Führen Sie einfach brew info openssl aus und lesen Sie die Informationen an der folgenden Stelle:

Wenn Sie diese Software zuerst in Ihrem PFAD benötigen, führen Sie Folgendes aus: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

38
Alex Maiburg

Wenn die Migration Ihres Mac das Homebrew bricht:

Ich habe meinen Mac migriert, und er hat die Verbindung zu all meiner Homebrew-Installation - einschließlich OpenSSL - getrennt. Dies brach gem install, wodurch ich das Problem zum ersten Mal bemerkte und versuchte, es zu reparieren.

Nach einer Million Lösungen (bei der Migration zu OSX Sierra - 10.12.5) war die Lösung komisch einfach:

brew reinstall Ruby
brew reinstall openssl
13
tobybot

Nachdem ich alles ausprobiert hatte, was ich finden konnte und nichts funktionierte, versuchte ich es einfach:

touch ~/.bash_profile; open ~/.bash_profile

In der Datei wurde diese Zeile hinzugefügt.

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

jetzt gehts :)

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
9
Jorn

Ich habe einen ähnlichen Fall. Ich muss openssl via brew installieren und dann pip verwenden, um mitmproxy zu installieren. Ich bekomme dieselbe Beschwerde von brew link --force. Im Folgenden ist die Lösung, die ich erreicht habe: (ohne Kraftverbindung durch Brühen)

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

Die Frage wird nicht direkt beantwortet. Ich verlasse den One-Liner, falls jemand pip verwendet und die openssl-lib benötigt.

Hinweis: Die /usr/local/opt/openssl/lib-Pfade werden durch brew info openssl abgerufen.

8
Pili Hu

Das hat für mich funktioniert:

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl .
6
edwardthesecond

Die obige Lösung von edwardthesecond hat auch bei Sierra funktioniert

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

Andere Schritte, die ich vorher gemacht habe, waren:

  • installiere openssl via brew

    brew install openssl
    
  • hinzufügen von openssl zum Pfad, wie von homebrew vorgeschlagen

    brew info openssl
    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    
5
Lili

Hinweis: Dies funktioniert nicht mehr aufgrund von https://github.com/Homebrew/brew/pull/612

Ich hatte heute das gleiche Problem. Ich habe openssl 1.0.2 deinstalliert (unbrewed ??) und 1.0.1 auch mit Homebrew installiert. Dotnet new/restore/run funktionierte dann einwandfrei.

Installiere openssl 101:
brew install homebrew/versions/openssl101 
Verknüpfung:
brew link --force homebrew/versions/openssl101

1
user3488820

für mich hat das funktioniert ...

Ich habe das ./bash_profile bearbeitet und den folgenden Befehl hinzugefügt

export PATH = "/ usr/local/opt/openssl/bin: $ PATH"

0
sanviri