macOS 10.12 brew 安装 openssl 问题
macOS 10.12 brew install openssl issue
尝试在自制软件上安装 openssl 使用:
brew install openssl
在制作过程中出现以下错误:
clang -I. -Iinclude -fPIC -arch x86_64 -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/etc/openssl@1.1\"" -DENGINESDIR="\"/usr/local/Cellar/openssl@1.1/1.1.1l/lib/engines-1.1\"" -D_REENTRANT -DNDEBUG -MMD -MF crypto/rand/randfile.d.tmp -MT crypto/rand/randfile.o -c -o crypto/rand/randfile.o crypto/rand/randfile.c
In file included from crypto/rand/rand_unix.c:38:
/usr/include/CommonCrypto/CommonRandom.h:35:9: error: unknown type name 'CCCryptorStatus'
typedef CCCryptorStatus CCRNGStatus;
^
crypto/rand/rand_unix.c:385:47: error: use of undeclared identifier 'kCCSuccess'
if (CCRandomGenerateBytes(buf, buflen) == kCCSuccess)
^
2 errors generated.
make[1]: *** [crypto/rand/rand_unix.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
Do not report this issue to Homebrew/brew or Homebrew/core!
Brew 正在尝试安装 openssl 1.1.1l:
==> Downloading https://www.openssl.org/source/openssl-1.1.1l.tar.gz
Already downloaded: /Users/user/Library/Caches/Homebrew/downloads/b6ccc5a2a602c2af3480bbcf1656bd9844595974ba60501871ac12504508e818--openssl-1.1.1l.tar.gz
我需要此依赖项来安装许多其他 applications/tools,例如 wget 或 python - 并且想使用自制软件来执行此操作。
我使用的brew版本是:
Homebrew 3.2.9
Homebrew/homebrew-core (git revision fa395c6627; last commit 2021-08-27)
Homebrew/homebrew-cask (git revision 606ed52390; last commit 2021-08-27)
macOS 是:10.12.6 (Sierra),我使用的是 MacBook Pro(13 英寸,2011 年初)
有什么方法可以解决这个问题来安装 openssl 吗?或者无论如何我可以安装 python 指定不同的 openssl 用作依赖项?
我能够使用以下 brew 命令安装 openssl 1.0:
brew install rbenv/tap/openssl@1.0
但是,python 不断尝试使用 openssl 1.1.1l,但由于上述错误而失败。
似乎是 openssl 本身的错误。 https://github.com/openssl/openssl/issues/16487
~~export SDKROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk "
呢?~~
某些版本的 macOS 的 Homebrew 预构建包。但它不断放弃对旧 macOS 的预构建支持。在 macOS 10.12 上,您正在从源代码构建 openssl
并且需要 Xcode 命令行工具 。
xcode-select --install
然后再brew install openssl
。
我设法通过编辑公式解决了它 (brew edit openssl
)
并添加
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
到 configure_args
中的 args 数组。
如下:
def configure_args
args = %W[
--prefix=#{prefix}
--openssldir=#{openssldir}
no-ssl3
no-ssl3-method
no-zlib
##### add the line here ####
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
]
on_linux do
args += (ENV.cflags || "").split
args += (ENV.cppflags || "").split
args += (ENV.ldflags || "").split
args << "enable-md2"
end
args
end
首先,编辑文件:
$ export EDITOR=nano
$ export VISUAL="$EDITOR"
然后
brew edit openssl
文件打开后添加行
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
# help debug inevitable breakage.
def configure_args
args = %W[
--prefix=#{prefix}
--openssldir=#{openssldir}
no-ssl3
no-ssl3-method
no-zlib
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
]
on_linux do
args += (ENV.cflags || "").split
args += (ENV.cppflags || "").split
args += (ENV.ldflags || "").split
args << "enable-md2"
end
args
end
保存版本并安装
brew install openssl
注意:安装时间比较长,但是成功了。
我必须在 Sierra (MacOs 10.12) 上更改以下文件:
sudo chmod a+w /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h
vi /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h
我在 typedef
语句之前添加了以下行:
#include "CommonCrypto/CommonCryptoError.h"
并遵循@Hulkur 的建议 - 运行 命令:
brew edit openssl
并添加
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
到args
数组在configure_args
.
brew edit openssl 后,出现新错误:
=> perl ./Configure --prefix=/usr/local/Cellar/openssl@1.1/1.1.1l --openssldir=/usr/local/etc/openssl@1.1 no-ssl3 no-ssl3-method no-zlib -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
==> make
Last 15 lines from /Users/francis/Library/Logs/Homebrew/openssl@1.1/02.make:
include "CommonCrypto/CommonCryptoError.h"
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h:35:9: error: expected identifier or '('
include "CommonCrypto/CommonCryptoError.h"
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h:52:1: error: unknown type name 'CCRNGStatus'
CCRNGStatus CCRandomGenerateBytes(void *bytes, size_t count)
^
crypto/rand/rand_unix.c:385:47: error: use of undeclared identifier 'kCCSuccess'
if (CCRandomGenerateBytes(buf, buflen) == kCCSuccess)
^
4 errors generated.
make[1]: *** [crypto/rand/rand_unix.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
编辑
愚蠢的我,我有:
include "CommonCrypto/CommonCryptoError.h"
而不是
#include "CommonCrypto/CommonCryptoError.h"
所以请先确保你有一个哈希值。
此问题现已解决(自 2021 年 9 月 11 日起),不再需要补丁
对于 10.12 之前的 MacOS(例如 10.11 El Capitan)还有另一个问题 - 测试失败:
Test Summary Report
-------------------
../test/recipes/05-test_rand.t (Wstat: 256 Tests: 2 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=1, Tests=2, 5 wallclock secs ( 0.38 usr 0.06 sys + 5.71 cusr 2.48 csys = 8.63 CPU)
Result: FAIL
make[1]: *** [_tests] Error 1
make: *** [tests] Error 2
有一个问题和一个 OpenSSL 的拉取请求可以解决这个问题:
https://github.com/openssl/openssl/issues/16517
https://github.com/openssl/openssl/pull/16587
如果你有这个问题,请过去并为他们投票
我在 Mac Sierra 10.13.6 (17G14042)
中遇到了同样的问题
brew 安装 openssl@1.1
我更新了openssl
brew 编辑 openssl
在 def configure_args
中添加一行
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
def configure_args
args = %W[
--prefix=#{prefix}
--openssldir=#{openssldir}
no-ssl3
no-ssl3-method
no-zlib
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
]
运行 在此之后的下方评论。
RUBY_CONFIGURE_OPTS="--disable-install-doc--with-openssl-dir=$(brew --prefix openssl@1.1)" rbenv 安装 3.0.2
尝试在自制软件上安装 openssl 使用:
brew install openssl
在制作过程中出现以下错误:
clang -I. -Iinclude -fPIC -arch x86_64 -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/etc/openssl@1.1\"" -DENGINESDIR="\"/usr/local/Cellar/openssl@1.1/1.1.1l/lib/engines-1.1\"" -D_REENTRANT -DNDEBUG -MMD -MF crypto/rand/randfile.d.tmp -MT crypto/rand/randfile.o -c -o crypto/rand/randfile.o crypto/rand/randfile.c
In file included from crypto/rand/rand_unix.c:38:
/usr/include/CommonCrypto/CommonRandom.h:35:9: error: unknown type name 'CCCryptorStatus'
typedef CCCryptorStatus CCRNGStatus;
^
crypto/rand/rand_unix.c:385:47: error: use of undeclared identifier 'kCCSuccess'
if (CCRandomGenerateBytes(buf, buflen) == kCCSuccess)
^
2 errors generated.
make[1]: *** [crypto/rand/rand_unix.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
Do not report this issue to Homebrew/brew or Homebrew/core!
Brew 正在尝试安装 openssl 1.1.1l:
==> Downloading https://www.openssl.org/source/openssl-1.1.1l.tar.gz
Already downloaded: /Users/user/Library/Caches/Homebrew/downloads/b6ccc5a2a602c2af3480bbcf1656bd9844595974ba60501871ac12504508e818--openssl-1.1.1l.tar.gz
我需要此依赖项来安装许多其他 applications/tools,例如 wget 或 python - 并且想使用自制软件来执行此操作。
我使用的brew版本是:
Homebrew 3.2.9
Homebrew/homebrew-core (git revision fa395c6627; last commit 2021-08-27)
Homebrew/homebrew-cask (git revision 606ed52390; last commit 2021-08-27)
macOS 是:10.12.6 (Sierra),我使用的是 MacBook Pro(13 英寸,2011 年初)
有什么方法可以解决这个问题来安装 openssl 吗?或者无论如何我可以安装 python 指定不同的 openssl 用作依赖项?
我能够使用以下 brew 命令安装 openssl 1.0:
brew install rbenv/tap/openssl@1.0
但是,python 不断尝试使用 openssl 1.1.1l,但由于上述错误而失败。
似乎是 openssl 本身的错误。 https://github.com/openssl/openssl/issues/16487
~~export SDKROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk "
呢?~~
某些版本的 macOS 的 Homebrew 预构建包。但它不断放弃对旧 macOS 的预构建支持。在 macOS 10.12 上,您正在从源代码构建 openssl
并且需要 Xcode 命令行工具 。
xcode-select --install
然后再brew install openssl
。
我设法通过编辑公式解决了它 (brew edit openssl
)
并添加
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
到 configure_args
中的 args 数组。
如下:
def configure_args
args = %W[
--prefix=#{prefix}
--openssldir=#{openssldir}
no-ssl3
no-ssl3-method
no-zlib
##### add the line here ####
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
]
on_linux do
args += (ENV.cflags || "").split
args += (ENV.cppflags || "").split
args += (ENV.ldflags || "").split
args << "enable-md2"
end
args
end
首先,编辑文件:
$ export EDITOR=nano
$ export VISUAL="$EDITOR"
然后
brew edit openssl
文件打开后添加行 -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
# help debug inevitable breakage.
def configure_args
args = %W[
--prefix=#{prefix}
--openssldir=#{openssldir}
no-ssl3
no-ssl3-method
no-zlib
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
]
on_linux do
args += (ENV.cflags || "").split
args += (ENV.cppflags || "").split
args += (ENV.ldflags || "").split
args << "enable-md2"
end
args
end
保存版本并安装
brew install openssl
注意:安装时间比较长,但是成功了。
我必须在 Sierra (MacOs 10.12) 上更改以下文件:
sudo chmod a+w /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h
vi /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h
我在 typedef
语句之前添加了以下行:
#include "CommonCrypto/CommonCryptoError.h"
并遵循@Hulkur 的建议 - 运行 命令:
brew edit openssl
并添加
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
到args
数组在configure_args
.
brew edit openssl 后,出现新错误:
=> perl ./Configure --prefix=/usr/local/Cellar/openssl@1.1/1.1.1l --openssldir=/usr/local/etc/openssl@1.1 no-ssl3 no-ssl3-method no-zlib -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
==> make
Last 15 lines from /Users/francis/Library/Logs/Homebrew/openssl@1.1/02.make:
include "CommonCrypto/CommonCryptoError.h"
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h:35:9: error: expected identifier or '('
include "CommonCrypto/CommonCryptoError.h"
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/CommonCrypto/CommonRandom.h:52:1: error: unknown type name 'CCRNGStatus'
CCRNGStatus CCRandomGenerateBytes(void *bytes, size_t count)
^
crypto/rand/rand_unix.c:385:47: error: use of undeclared identifier 'kCCSuccess'
if (CCRandomGenerateBytes(buf, buflen) == kCCSuccess)
^
4 errors generated.
make[1]: *** [crypto/rand/rand_unix.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
编辑
愚蠢的我,我有:
include "CommonCrypto/CommonCryptoError.h"
而不是
#include "CommonCrypto/CommonCryptoError.h"
所以请先确保你有一个哈希值。
此问题现已解决(自 2021 年 9 月 11 日起),不再需要补丁
对于 10.12 之前的 MacOS(例如 10.11 El Capitan)还有另一个问题 - 测试失败:
Test Summary Report
-------------------
../test/recipes/05-test_rand.t (Wstat: 256 Tests: 2 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=1, Tests=2, 5 wallclock secs ( 0.38 usr 0.06 sys + 5.71 cusr 2.48 csys = 8.63 CPU)
Result: FAIL
make[1]: *** [_tests] Error 1
make: *** [tests] Error 2
有一个问题和一个 OpenSSL 的拉取请求可以解决这个问题: https://github.com/openssl/openssl/issues/16517
https://github.com/openssl/openssl/pull/16587
如果你有这个问题,请过去并为他们投票
我在 Mac Sierra 10.13.6 (17G14042)
中遇到了同样的问题brew 安装 openssl@1.1
我更新了openssl
brew 编辑 openssl
在 def configure_args
中添加一行-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
def configure_args
args = %W[
--prefix=#{prefix}
--openssldir=#{openssldir}
no-ssl3
no-ssl3-method
no-zlib
-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
]
运行 在此之后的下方评论。
RUBY_CONFIGURE_OPTS="--disable-install-doc--with-openssl-dir=$(brew --prefix openssl@1.1)" rbenv 安装 3.0.2