Homebrew refusant de lier OpenSSL

Je suis sur: OSX 10.11.6, version Homebrew 0.9.9m OpenSSL 0.9.8zg 14 juillet 2015

J’essaie de jouer avec dotnetcore et en suivant leurs instructions ,

J’ai mis à jour / installé la dernière version 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 certificatees from the system keychain. To add additional certificatees, 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 

Mais lorsque j’essaie de lier openssl, je continue à rencontrer cette erreur de liaison:

 > 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 comstackr eg: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib 

L’option d’inclure les indicateurs du compilateur n’a pas de sens pour moi, car je ne comstack pas ces bibliothèques dont je dépend.

EDIT dotnetcore a mis à jour ses instructions:

 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/ 

Comme le suggère la mise à jour de l’autre réponse, la solution de contournement de l’installation de l’ancienne armserie openssl101 ne fonctionnera plus. Pour une solution de contournement, consultez ce commentaire sur dotnet / cli # 3964 .

La partie la plus pertinente du problème a été copiée ici:

J’ai examiné l’autre option suggérée pour définir le chemin dans la bibliothèque. Je pense que ce qui suit est une meilleure solution qui affectera uniquement cette bibliothèque spécifique.

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

et / ou si NETCore 1.0.1 est installé, exécutez la même commande pour la version 1.0.1:

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 fait, plutôt que de demander au système d’exploitation d’utiliser toujours la version homebrew de SSL et de provoquer un problème, nous disons à dotnet comment trouver la bibliothèque appropriée.

Il est également important de noter que Microsoft est conscient du problème et qu’il dispose à la fois d’un plan d’atténuation un peu immédiat et d’une solution à long terme (regroupement d’OpenSSL avec dotnet).

Une autre chose à noter: /usr/local/opt/openssl/lib est l’endroit où le armsage est lié par défaut:

 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, pour quelque raison que ce soit, vous installez l’infusion et que vous la reliez à un autre endroit, alors ce chemin est celui que vous devez utiliser comme chemin.

Une fois que vous avez mis à jour le rpath de System.Security.Cryptography.Native.dylib libray, vous devez redémarrer votre session interactive (fermer votre console et en démarrer une autre).

C’est ce qui a fonctionné pour moi:

 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 

Merci à @dorlandode sur ce sujet https://github.com/Homebrew/brew/pull/597

NB: je l’ai seulement utilisé comme correctif temporaire jusqu’à ce que je puisse passer du temps à installer correctement Openssl à partir de zéro. Si je me souviens bien, j’ai passé une bonne partie de la journée à déboguer et à rencontrer des problèmes avant de réaliser que le meilleur moyen était d’installer manuellement les certificates dont j’avais besoin un par un. S’il vous plaît lire le lien dans le commentaire de @ bouke avant d’essayer cela.

Aucune de ces solutions n’a fonctionné pour moi sur OS X El Capitan 10.11.6. Probablement parce que OS X a une version native de openssl qui lui semble supérieure et, en tant que telle, n’aime pas la falsification.

Alors, j’ai pris la grande route et j’ai recommencé …


Installation manuelle et lien symbolique

 cd /usr/local/src 
  • Si vous obtenez “No such file or directory”, créez le:

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

Téléchargez openssl:

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

Extrait et cd dans:

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

Comstackr et installer:

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

Désormais, le lien symbolique de openssl d’OS X avec votre nouveau fichier openssl mis à jour:

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

Fermez le terminal, ouvrez une nouvelle session et vérifiez que OS X utilise votre nouveau fichier openssl:

 openssl version -a 

Il suffit d’exécuter les brew info openssl et de lire les informations où il est écrit:

Si vous avez besoin d’avoir ce logiciel d’abord dans votre PATH, exécutez: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

Après avoir essayé tout ce que j’ai pu trouver et rien n’a fonctionné, j’ai juste essayé ceci:

 touch ~/.bash_profile; open ~/.bash_profile 

À l’intérieur du fichier, cette ligne a été ajoutée.

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

maintenant ça marche 🙂

 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 

J’ai un cas similaire Je dois installer openssl via brew, puis utiliser pip pour installer mitmproxy. Je reçois la même plainte du brew link --force . Voici la solution que j’ai atteinte: (sans lien de force par armsage)

 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 

Cela ne répond pas directement à la question. Je quitte le one-liner au cas où quelqu’un utilise pip et requirejs la librairie openssl.

Remarque: les chemins d’access /usr/local/opt/openssl/lib sont obtenus par brew info openssl

Juste pour laisser une note à ce sujet, j’avais migré mon Mac et il a dissocié toutes mes installations homebrew, y compris celle-ci. Cette gem install , ce qui est la première fois que j’ai commencé à essayer de réparer cela.

J’ai essayé un million de solutions (je suis sur OSX Sierra – 10.12.5) et la solution a fini par être très simple:

 brew reinstall ruby brew reinstall openssl 

Cela a fonctionné pour moi:

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

La solution ci-dessus d’edwardthesecond a travaillé pour moi aussi sur Sierra

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

Les autres étapes que je faisais auparavant étaient:

  • installer openssl via brew

     brew install openssl 
  • append openssl au chemin comme suggéré par homebrew

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

Remarque: cela ne fonctionne plus en raison de https://github.com/Homebrew/brew/pull/612

J’ai eu le même problème aujourd’hui. J’ai désinstallé (unbrewed ??) openssl 1.0.2 et installé 1.0.1 également avec homebrew. Dotnet nouveau / restaurer / exécuter alors travaillé correctement.

Installez openssl 101:
armser installer homebrew / versions / openssl101
Mise en relation:
lien de armsage –force homebrew / versions / openssl101

pour moi c’est ce qui a fonctionné …

J’ai édité le fichier ./bash_profile et ajouté la commande ci-dessous

export PATH = “/ usr / local / opt / openssl / bin: $ PATH”