Ruby 安装:构建失败(Ubuntu 20.04 使用 ruby​​-build 20220324)

1 ruby compiling

无法安装Ruby,我之前使用过以下命令行:

sudo apt install -y build-essential tklib zlib1g-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev libreadline-dev

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
exec zsh
Run Code Online (Sandbox Code Playgroud)

感谢尝试运行:rbenv install 3.0.3

但不断收到此错误:

Downloading ruby-3.0.3.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.3.tar.gz
error: failed to download ruby-3.0.3.tar.gz

BUILD FAILED (Ubuntu 20.04 using ruby-build 20220324)
Run Code Online (Sandbox Code Playgroud)

thi*_*a48 5

显然 Ubuntu 及其更新的衍生版本附带了 OpenSSL 3.0,在本例中,早于 3.1 的 Ruby 版本使用 OpenSSL 1.1

在这种情况下,最安全的选择是遵循用户手册并手动编译 OpenSSL 1.1。

它对我来说也适用于 Pop!_OS 和 asdf

PS:我将导出放在 .zshrc 中

安装依赖项:

sudo apt install build-essential checkinstall zlib1g-dev

下载 OpenSSL 1.1.1:

cd ~/Downloads
wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
tar xf openssl-1.1.1n.tar.gz
Run Code Online (Sandbox Code Playgroud)

编译它:

cd ~/Downloads/openssl-1.1.1n
./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n shared zlib
make
make test
sudo make install
Run Code Online (Sandbox Code Playgroud)

将系统的证书链接到 OpenSSL 1.1.1 目录:

sudo rm -rf /opt/openssl-1.1.1n/certs
sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n
Run Code Online (Sandbox Code Playgroud)

在安装 ruby​​ 版本的命令之前使用 RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1n :

RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1n rbenv install 2.7.6

如果您想使其永久化,请将此行添加到您的 .bashrc 或 .zshrc 文件中:

export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/openssl-1.1.1n/"

然后,您不再需要在命令之前使用 RUBY_CONFIGURE_OPTS=--with-openssl-dir=/opt/openssl-1.1.1n 。

字体: https ://github.com/rbenv/ruby-build/discussions/1940#discussioncomment-2663209