使用 macOS 上的 Homebrew

使用 macOS 上的 Homebrew

我希望我的操作系统中有两个不同的 OpenSSL 版本。目前,openssl version -v返回

OpenSSL 1.1.1f 2020 年 3 月 31 日

我也想拥有 OpenSSL 1.0.2,因为我需要安装Ruby 2.2.10萊本,对于 2.4 以下的版本,则需要 OpenSSL 降级。

如何在 Ubuntu 16.04 上安装 openssl 1.0.2 和默认 openssl(1.1.1)?- 我已经关注莫纳耶在这个线程中的回答,并设法安装了 OpenSSL:openssl version -v

OpenSSL 1.0.2l 2017 年 5 月 25 日

但操作系统使用 OpenSSL 可能会与我的 Ruby 3.0.0 应用程序发生冲突,因为我需要同时使用两个 SSL 版本。这就是为什么我将 OpenSSL 更新回最新版本的原因

萊本的文档有一个在 MacOS 中解决此冲突的方法:

使用 macOS 上的 Homebrew

brew 安装 rbenv/tap/[电子邮件保护] RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix[电子邮件保护])“rbenv 安装 2.3.8

我在 Ubuntu 20.04 中需要类似的东西——可能吗?

在 rbenv 论坛中,如下OpenSSL 版本兼容性它说:

构建 Ruby 2.3 或更早版本时,您必须确保 OpenSSL 1.0 在系统上的某个位置可用,并通过 --with-openssl-dir 配置标志指向它。目前,大多数附带 OpenSSL 1.1 的 Linux 发行版都有一个单独的 OpenSSL 1.0 包。

RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])" rbenv install 2.3.8

失败:Command 'brew' not found

答案1

是我找到的解决方案,经过一点调整后它就起作用了。感谢 EliKazap 编辑 /etc/apt/sources.list并在文件末尾添加以下内容:deb http://security.ubuntu.com/ubuntu bionic-security main

然后

Run sudo apt-get update && apt-cache policy libssl1.0-dev

Run sudo apt-get install libssl1.0-dev

检查版本是否正确./usr/local/ssl/bin/openssl version

进而

RUBY_CONFIGURE_OPTS="--with-openssl-dir='/usr/local/ssl/bin'" rbenv install 2.2.10

答案2

如果您以标准方式编译 openssl,则标准--with-openssl-dir解决方案效果很好,但在某些 Linux 发行版中,它们有多个以非标准方式编译的 openssl 版本。例如,EPEL 在 RHEL/CentOS 7 上提供了 openssl11。我能够使用以下命令对其进行编译:

RUBY_CONFIGURE_OPTS='--with-openssl-dir=/usr/include/openssl11 --with-openssl-lib=/usr/lib64/openssl11 --with-openssl-include=/usr/include/openssl11' rbenv install 3.2.2

相关内容