无法安装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)
显然 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