尝试了多种解决方案:
\n\n实际上,在 Apple M1 芯片 macOS Monterey 上无法安装另一个 Ruby 版本(3.1.0 安装没有问题)。
\n以下是已安装版本的详细信息:
\n\xe2\x9e\x9c ~ which openssl\n/opt/homebrew/opt/openssl@3/bin/openssl\n\xe2\x9e\x9c ~ openssl version -a\nOpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)\nbuilt on: Tue Dec 14 16:16:25 2021 UTC\nplatform: darwin64-arm64-cc\noptions: bn(64,64)\ncompiler: clang -fPIC -arch arm64 -O3 -Wall -DL_ENDIAN -DOPENSSL_PIC -D_REENTRANT -DOPENSSL_BUILDING_OPENSSL -DNDEBUG\nOPENSSLDIR: "/opt/homebrew/etc/openssl@3"\nENGINESDIR: "/opt/homebrew/Cellar/openssl@3/3.0.1/lib/engines-3"\nMODULESDIR: "/opt/homebrew/Cellar/openssl@3/3.0.1/lib/ossl-modules"\nSeeding source: os-specific\nCPUINFO: OPENSSL_armcap=0x7f\nRun Code Online (Sandbox Code Playgroud)\n.zshrc以下是设置后添加到文件中的行openssl:
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"\nexport LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"\nexport CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"\nexport PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"\n\n# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.\nexport PATH="$PATH:$HOME/.rvm/bin"\nRun Code Online (Sandbox Code Playgroud)\n使用的RVM版本:
\n\xe2\x9e\x9c ~ rvm -v\nrvm 1.29.12 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]\nRun Code Online (Sandbox Code Playgroud)\n安装Ruby版本时(无论3.0.0或更低版本,例如2.6.5),会引发错误:
\n\xe2\x9e\x9c ~ rvm install 2.6.5 --with-openssl-dir=`brew --prefix openssl`\nruby-2.6.5 - #removing src/ruby-2.6.5 - please wait\nChecking requirements for osx.\nCertificates bundle \'/opt/homebrew/etc/openssl@1.1/cert.pem\' is already up to date.\nRequirements installation successful.\nInstalling Ruby from source to: /Users/serguei/.rvm/rubies/ruby-2.6.5, this may take a while depending on your cpu(s)...\nruby-2.6.5 - #downloading ruby-2.6.5, this may take a while depending on your connection...\nruby-2.6.5 - #extracting ruby-2.6.5 to /Users/serguei/.rvm/src/ruby-2.6.5 - please wait\nruby-2.6.5 - #configuring - please wait\nruby-2.6.5 - #post-configuration - please wait\nruby-2.6.5 - #compiling - please wait\nError running \'__rvm_make -j8\',\nplease read /Users/serguei/.rvm/log/1647291878_ruby-2.6.5/make.log\n\nThere has been an error while running make. Halting the installation.\nRun Code Online (Sandbox Code Playgroud)\n这是创建的日志文件的内容:
\n+__rvm_make:0> make -j8\n BASERUBY = /Users/serguei/.rvm/rubies/ruby-3.1.0/bin/ruby --disable=gems\n CC = gcc\n LD = ld\n LDSHARED = gcc -dynamiclib\n CFLAGS = -O3 -ggdb3 -Wall -Wextra -Wdeclaration-after-statement -Wdeprecated-declarations -Wdivision-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wmisleading-indentation -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wmissing-noreturn -Wno-cast-function-type -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wextra-tokens -fno-common -pipe \n XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT -DCANONICALIZATION_FOR_MATHN\n CPPFLAGS = -I/opt/homebrew/opt/openssl@3/include -I/opt/homebrew/opt/libyaml/include -I/opt/homebrew/opt/libksba/include -I/opt/homebrew/opt/readline/include -I/opt/homebrew/opt/zlib/include -I/opt/homebrew/opt/openssl@1.1/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -I. -I.ext/include/-darwin21 -I./include -I. -I./enc/unicode/12.1.0 \n DLDFLAGS = -L/opt/homebrew/opt/openssl@3/lib -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -L/opt/homebrew/opt/libyaml/lib -L/opt/homebrew/opt/libksba/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/opt/zlib/lib -L/opt/homebrew/opt/openssl@1.1/lib -install_name /Users/serguei/.rvm/rubies/ruby-2.6.5/lib/libruby.2.6.dylib -compatibility_version 2.6 -current_version 2.6.5 -fstack-protector-strong -framework Security -framework Foundation -fstack-protector-strong -framework Security -framework Foundation \n SOLIBS = -lpthread -ldl -lobjc\n LANG = \n LC_ALL = \n LC_CTYPE = UTF-8\nApple clang version 13.1.6 (clang-1316.0.21.2)\nTarget: arm64-apple-darwin21.4.0\nThread model: posix\nInstalledDir: /Library/Developer/CommandLineTools/usr/bin\n...\nast.c:132:19: warning: \'(\' and \'{\' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro]\n rb_funcall(f, rb_intern("set_encoding"), 2, rb_enc_from_encoding(enc), rb_str_new_cstr("-"));\n...\n2 warnings generated.\nlinking shared-object cgi/escape.bundle\n6 warnings generated.\nlinking shared-object psych.bundle\n4 warnings generated.\nlinking shared-object zlib.bundle\n422 warnings generated.\nlinking shared-object date_core.bundle\nmake: *** [build-ext] Error 2\n+__rvm_make:0> return 2\nRun Code Online (Sandbox Code Playgroud)\n唯一成功安装的版本是3.1.0:
\xe2\x9e\x9c ~ rvm list\n=* ruby-3.1.0 [ arm64 ]\n\n# => - current\n# =* - current && default\n# * - default\nRun Code Online (Sandbox Code Playgroud)\n任何想法 ?
\n更新
\n\n对于 ruby 版本2.6.x,2.7.x,也许3.0.0也可以。尝试使用openssl@1.1.
首先,尝试使用 homebrew 安装 openssl@1.1
brew install openssl@1.1
Run Code Online (Sandbox Code Playgroud)
然后尝试用这个 openssl 安装 ruby 2.6.5
rvm install 2.6.5 --with-openssl-dir=`brew --prefix openssl@1.1`
Run Code Online (Sandbox Code Playgroud)
这可能有效。
小智 6
这对我有用:
PKG_CONFIG_PATH=/opt/homebrew/opt/openssl@1.1/lib/pkgconfig rvm install [ruby-version] --with-openssl-lib=/opt/homebrew/opt/openssl@1.1 --with-openssl-include=/opt/homebrew/opt/openssl@1.1
Run Code Online (Sandbox Code Playgroud)
尝试
rvm install 2.6.5 --with-openssl-dir=`brew --prefix openssl`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10688 次 |
| 最近记录: |