如何在 RHEL 中升级 ruby

如何在 RHEL 中升级 ruby

如何在 RHEL 中将 ruby​​ 升级到新版本。

当我尝试时 -sudo yum install ruby它说

软件包 ruby​​-2.0.0.648-33.el7_4.x86_64 已安装并且是最新的

版本 没什么可做的

当我尝试时 -sudo yum install @ruby2.5它说,

加载的插件:fastestmirror、langpacks 存储库“UIM_install”是

配置中缺少名称,使用 id 存储库“调试”丢失

配置中的 name,使用 id Repository nodesource 列出更多

比配置存储库中列出的节点源源多一次

配置存储库“opencl”多次丢失

配置中的名称,使用 id 从缓存加载镜像速度

ruby2.5 的主机文件组不存在。错误:无事可做

我的系统中需要最新的 ruby​​。解决办法是什么?

编辑:

我尝试sudo yum update ruby并给出了以下回应。

从缓存的主机文件加载镜像速度

没有标记为更新的软件包

答案1

您可以通过以下方式获取更新版本的 ruby红帽软件集合

安装 rhscl 存储库后,您可以安装 ruby​​ SCL 软件包。这些包与从基础存储库安装的 Ruby 版本一起存在,因此您不会使用 /usr/bin/ruby。 “rh-ruby25”SCL 包括 Ruby 2.5,但如果您想要更新的版本,也可以使用 Ruby 2.6 (rh-ruby26)。

使用 SCL 的优点是它受 Red Hat 支持,它像其他东西一样由 yum 安装,并且您可以获得安全更新。缺点是它与基础 ruby​​ 一起存在,因此在使用它之前加载 SCL 需要小心。说明位于提供的链接中。

答案2

一般来说,我从不尝试使用任何 Linux 发行版上打包的 Ruby(或 Rails)版本,它们几乎总是太旧,无法满足我的需要 - 相反,我下载我需要的任何版本右室VM。如果这样做,您需要将较新版本的 Ruby 安装到与发行版提供的 Ruby 不同的目录中,然后您可以$PATH根据需要将该目录放在发行版提供的二进制文件之前。

答案3

RVM 为懒人提供的说明(斜线那些宁愿这种废话实际上首先起作用的人):

$ sudo dnf remove ruby

确保它不会删除您实际需要的任何内容。幸运的是,我没有依赖过鲁比。

安装 RVM(Ruby 版本管理器)。它们让你进行毫无意义的关键舞蹈,即使它对安全的影响为零。

gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable

启动一个新的外壳。

查看https://www.ruby-lang.org/en/downloads/查看最新的 Ruby 版本。不幸的是,似乎没有--latest旗帜。嘘。

rvm install 3.3.0

它会提示您输入 sudo 密码,以便安装一些依赖项(是的!)

然后就会从源代码构建 Ruby。是的,Ruby 具有与 Python 相同的疯狂安装用户体验。我不记得当我安装 Go 或 Rust 时它们是从源代码构建的。嘘。

你会得到一个错误:

Error running 'run_gem_wrappers regenerate',
please read /home/you/.rvm/log/1706528997_ruby-3.3.0/gemset.wrappers.global.log

去谷歌上查询。尝试第一个建议(安装libtool)。它已经安装好了。尝试第二个建议:

sudo dnf install libyaml-devel

再试一次

$ rvm install 3.3.0
Already installed ruby-3.3.0.
To reinstall use:

    rvm reinstall ruby-3.3.0

谎言。尝试一下reinstall版本。

终于成功了!谁知道升级软件会如此简单?

编辑:说得太早了:

$ rvm use 3.3.0

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for an example.

不要按照它说的去做;只需移动.bash_profile它添加到的最后一行.bashrc即可。

一个简单的12步过程!

为了节省您查找另一个命令:

rvm --default use 3.3.0

答案4

Redhat和centos不提供各种软件的最新版本。这是因为是 LTS(长期支持)操作系统。仅发布安全性和次要升级。为了安装更高版本的软件,最好自行编译,并且不要替换现有版本。这是因为(也许)操作系统依赖于用旧的特定版本编写的脚本/工具。换一个不同的可能会破坏一些东西。

相关内容