如何在 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(长期支持)操作系统。仅发布安全性和次要升级。为了安装更高版本的软件,最好自行编译,并且不要替换现有版本。这是因为(也许)操作系统依赖于用旧的特定版本编写的脚本/工具。换一个不同的可能会破坏一些东西。