Homebrew refusant de lien OpenSSL
Je suis sur: OSX 10.11.6, Homebrew version 0.9.9 m OpenSSL 0.9.8 zg 14 juillet 2015
Je suis en train de jouer avec dotnetcore et par suite de leur instructions,
J'ai mis à jour/installer 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 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
Mais quand j'essaie de lien openssl-je continuer à courir dans cette erreur de couplage:
> 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
L'option inclure les drapeaux du compilateur ne fait pas de sens pour moi, puisque je ne suis pas la compilation de ces bibliothèques que je suis dépendante.
MODIFIER 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/
- Pour .NET de Base vous avez besoin d'une version de OpenSSL, qui serait une version 1.0.1 ou version 1.0.2. Puisque vous êtes en train de une version 0.9.8 peut-être vous avez besoin de
brew upgrade openssl
en premier? - Je l'ai déjà fait. Je devrais l'avoir précisé, mais je n'ai pas ajouté les étapes à la question. Mais j'ai déjà fait la
brew update
etbrew install openssl
. C'est en essayant d'installer la version prise en charge. - Ressemble Homebrew a explicitement bloqué: github.com/Homebrew/brew/commit/....
- Peut-être l'aide d'un autre HOMEBREW_PREFIX serait de travailler; mais c'est certainement au-delà de mon expérience.
- Et.. pour continuer à compléter mes divagations, vous pourriez être intéressé par tout ce que développe sur github.com/Homebrew/brew/pull/597
- "... quand j'essaie de lien openssl-je continuer à courir dans cette erreur de couplage:.." - voir Aussi Comment faire pour définir le chemin d'exécution (-rpath) d'un exécutable avec gcc sous Mac OSX?. Il peut vous aider à toujours charger la bibliothèque correcte au moment de l'exécution, si la bière n'est pas de l'ajouter.
- le lien a fonctionné avec la version 1.0.1. Conformément à l'engagement que vous avez posté, qui était juste un il ya quelques jours, ma conjecture est que les anciennes versions ont un autre HOMEBREW_PREFIX. Je suis bon pour l'instant, mais à l'avenir je vais essayer votre suggestion d'essayer un préfixe différent.
- J'ai essayé la plupart des solutions sur cette page, et aucune n'a fonctionné. J'ai été cependant en mesure d'obtenir .Net de base de travail avec cette solution: github.com/dotnet/cli/issues/3964#issuecomment-236485454
- lien vers le github de discussion a fonctionné pour moi. Fondamentalement, il suffit d'exécuter:
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
- Le
rpath
solution est meilleure. Il y a une raison Homebrew maintenant vous empêche de lier OpenSSL; c'est une mauvaise idée et peut casser des trucs sur votre ordinateur. - Vous devriez probablement mettre votre "dotnetcore a mis à jour ses directives d'installation" dans la question ou la réponse à votre propre question :\
Vous devez vous connecter pour publier un commentaire.
Que la mise à jour de la réponse à l'indique, la solution de contournement de l'installation de l'ancien openssl101 brew ne fonctionne plus. Pour un droit désormais solution de contournement, voir ce commentaire sur dotnet/cli#3964.
La partie la plus pertinente de la question copié ici:
Aussi important, il ressemble à Microsoft sont au courant de la question et et ont à la fois) un peu plan immédiat pour atténuer ainsi que b) une solution à long terme (probaby regroupement OpenSSL avec dotnet).
Une autre chose à noter:
/usr/local/opt/openssl/lib
est l'endroit où la bière est lié par défaut:Si, pour quelque raison que ce soit vous installez le brassage et le lien dans un endroit différent, alors que le chemin est celui que vous devez utiliser comme un rpath.
Une fois que vous avez mise à jour de la rpath du Système.De sécurité.La cryptographie.Native.dylib agence canadienne de développement international, vous aurez besoin de redémarrer votre session interactive (c'est à dire, fermez votre console et en lancer un autre).
/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib (No such file or directory)
.dotnet
de l'outillage. Son possible que vous ne l'avez pas installé ou que vous avez installés ou à un autre emplacement. Si sa installé et de votre part, vous pouvez utiliserwhich dotnet
pour le trouver.dotnet
. Nouvelle tentative et de revenir.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
which dotnet
révèle je ne l'ai pas?C'est ce qui a fonctionné pour moi:
Grâce à @dorlandode sur ce fil https://github.com/Homebrew/brew/pull/597
NB: je n'ai utilisé cela comme une solution temporaire jusqu'à ce que je puisse passer du temps correctement installer Openssl nouveau à partir de zéro. Comme je me souviens, j'ai passé la meilleure partie de la journée de débogage et d'avoir des problèmes avant, j'ai réalisé le meilleur moyen était d'installer manuellement les certs j'avais besoin d'un par un. Merci de lire le lien de @bouke commentaire avant de tenter cela.
/usr/local/bin/openssl
?1.0.2j
à1.0.2k
en raison de différences de version. De sorte que les utilisateurs méfiez-vous, vous devrez peut-être ajuster les chemins d'accès pour la version actuelleln -s -f /usr/local/Cellar/openssl/1.0.2k/bin/openssl /usr/local/bin/openssl
fixeAucune 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 qu'il estime supérieure, et en tant que tel, n'aime pas la falsification.
Donc, j'ai pris la grande route et a commencé à frais...
Installer manuellement et symlink
Si vous avez "Aucun fichier ou répertoire", faire:
cd /usr/local && mkdir src && cd src
Télécharger openssl:
D'extraire et de cd dans:
Compiler et installer:
Maintenant lien symbolique OS X openssl de vos nouvelles et mises à jour openssl:
Fermer le terminal, ouvrez une nouvelle session, et de vérifier OS X est l'utilisation de votre nouveau openssl:
ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl
. Après le redémarrage de votre session de Terminal, tapezwhich openssl
à assurez-vous que vous utilisez la mise à jour 1.0.2 version (/usr/local/bin/openssl
) au lieu de la intégré dans un (/usr/bin/openssl
).Exécuter
brew info openssl
et lire l'information où il est dit:brew info openssl
a donné les mêmes informations utiles pour moi. L'exécution de l'suggéré de commande ci-dessus, puis en exécutantsource ~/.bash_profile
ou de l'ouverture d'un nouveau terminal résolu pour moi.echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc
Si la migration de votre mac pauses homebrew:
J'ai migré mon mac, et non reliées tous mon homebrew installe - y compris OpenSSL. C'est
gem install
, qui est la façon dont j'ai d'abord remarqué le problème et a commencé à essayer de réparer cela.Après des millions de solutions (lors de la migration vers OSX Sierra - 10.12.5), la solution a fini par être comique, c'est simple:
rm -rf /usr/local/opt/openssl
Après avoir essayé tout ce que j'ai pu trouver et rien n'a fonctionné, j'ai juste essayé ceci:
À l'intérieur du fichier ajouté cette ligne.
maintenant ça fonctionne 🙂
which openssl
encore des points à/usr/bin/openssl
export PATH=/usr/local/bin:$PATH
/usr/local/opt/openssl/bin
, sans le/openssl
sur la fin, à la avant de la VOIE, et non la fin:PATH=/usr/local/opt/openssl/bin:$PATH
à l'Aide de/usr/local/opt/openssl
au lieu de/usr/local/Cellar/openssl/$version
signifie que vous recevrez automatiquement le garder le plus up-to-date de la version dans votre $PATH sans avoir à changer à chaque fois que vous mettez à niveau.J'ai un cas similaire. J'ai besoin d'installer openssl par le brassage et ensuite utiliser pip pour installer mitmproxy. J'obtiens la même plainte de
brew link --force
. Voici la solution que j'ai atteint: (sans la force du lien par brew)Ce n'aborde pas la question sans détour. Je laisse le one-liner dans le cas où quelqu'un utilise pip et nécessite la openssl lib.
Remarque: le
/usr/local/opt/openssl/lib
chemins sont obtenus parbrew info openssl
cryptography
. J'ai été absent de laPKG_CONFIG_PATH
variableCela a fonctionné pour moi:
La solution ci-dessus à partir de edwardthesecond a fonctionné pour moi aussi sur la Sierra
D'autres étapes que j'ai fait avant l'été:
installer openssl via brew
l'ajout d'openssl pour le chemin d'accès comme suggéré par homebrew
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. Je l'ai désinstallé (unbrewed??) openssl 1.0.2 et installé la version 1.0.1 aussi avec homebrew. Dotnet nouveau/restauration/exécuter puis a bien fonctionné.
Installer openssl 101:
brew install homebrew/versions/openssl101
Liens:
brew lien --force homebrew/versions/openssl101
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
if false &&
. Puisbrew install --force openssl
. Ne le faites pas, je suis probablement une personne terrible pour suggérant même qu'il.pour moi, c'est ce qui a fonctionné...
J'ai édité ./bash_profile et ajouté au-dessous de commande
export PATH="/usr/local/opt/openssl/bin:$PATH"