WSL2 版本的 Ubuntu 上的 Apt 不包含最新版本的 ruby​​-build

问题描述

我安装了 WSL2 和 Ubuntu 20.04,其中包括 Ruby 2.7.0:

$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]

我想安装 Ruby 3.0.1,但 ruby-build 没有安装:

...
2.4.0-rc1
2.4.0
2.4.1
2.5.0-dev
jruby-1.5.6
jruby-1.6.3
...

我更新了apt

$ sudo apt update
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
Ign:3 https://dl.bintray.com/sbt/debian  InRelease
Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:5 https://dl.bintray.com/sbt/debian  Release [815 B]
Get:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [982 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [774 kB]
Fetched 1971 kB in 1s (1379 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.

但是 ruby-build 的版本仍然很旧:

$ apt show ruby-build
Package: ruby-build
Version: 20170726-1
Priority: optional
...

我的 OSX 机器:

$ ruby-build --version
ruby-build 20210510

这是 Ubuntu、apt 或其他方面的问题吗?我该如何解决?

解决方法

Ubuntu 版本是“长期支持”(LTS) 或“临时版本”(参见 Ubuntu Release Cycle)。 “偶数年,四月/春季”(例如 20.04 或 22.04)版本是长期支持版本,旨在提供稳定、经过验证的软件包,这些软件包将由 Canonical 支持 5 年。其他 3 个中间版本(例如 20.10、21.04、21.10)可能将软件包更新到更新的版本以进行测试。

也就是说,Canonical 只将 Ubuntu 的 LTS 版本放在 Microsoft Store 中以用于 WSL。暂时发布possible to upgrade。请注意,您使用的是“不太稳定”的版本。您可能希望在单独的安装中执行此操作,并且仍然保留 20.04 版本。如果是这样,请参阅 this answer 以了解我关于如何执行此操作的文章。仍然不能保证 21.04 包含更高版本的 ruby​​-build。它显然不会在 5 月 10 日发布。我还没有检查包列表,看看 21.04 中的 ruby​​-build 版本是什么。

无论如何,我会提出一个不同的选择。你提到你的 MacOS 版本是最新的,我假设你用 Homebrew (brew) 安装了它。 ruby-build 维护者负责更新该软件包并确保最新版本可通过 Homebrew 获得。如果您想在 WSL 上安装和使用 Homebrew,您can as well。我自己没有这样做过,但从 Homebrew 文档看来这完全有可能。不过,我想我会先清除您从 Ubuntu 存储库中安装的 ruby​​-build 软件包,以避免冲突。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...