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

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

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

谢谢尝试运行: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)

答案1

显然,Ubuntu 及其较新的衍生产品都带有 OpenSSL 3.0,而 Ruby 3.1 之前的版本使用的是 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

编译它:

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

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

sudo rm -rf /opt/openssl-1.1.1n/certs
sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n

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

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

答案2

对于 ruby​​-build 20240119 你需要执行以下操作:

#对于'构建失败(Ubuntu 22.04 在 x86_64 上使用 ruby​​-build 20240119)'

:~$ sudo apt install \
build-essential libxml2 libssl-dev libffi-dev \
libffi8 libyaml-dev libreadline-dev

然后:

asdf install ruby 3.2.3

答案3

安装比 Ubunturbenv包更新的 Ruby 和 Ruby 环境。

sudo apt install rbenv

rbenv install -l | grep VERSION

检查您喜欢的版本是否可用。


如果不是,您可以从 git 更新最新列表并ruby预先删除 ubuntu 的包(为了简单起见)。

cd $HOME

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

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

检查可用的版本。在安装新环境之前,您必须告诉 shell 一个新路径

在末尾添加此代码.bash_profile

# For rbenv
export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(~/.rbenv/bin/rbenv init -)"

重新启动终端或source .bash_profile 如果路径rbenv正确设置which rbenv,它会回复/home/USER/.rbenv/bin/rbenv

rbenv install VERSION
rbenv rehash
rbenv global VERSION


确认

$ ruby -v

ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-linux]

$ which ruby

/home/USER/.rbenv/shims/ruby

相关内容