为什么 gem 告诉我当前的 ruby 版本是 2.5.0,而事实并非如此?

Why is gem telling me the current ruby version is 2.5.0 when it's not?

提问人:Ashamandarei 提问时间:10/9/2023 更新时间:10/10/2023 访问量:82

问:

上下文:我正在尝试在 Ubuntu 18.04 LTS 上安装 jekyll,这样我就可以在 GitHub Pages 站点上工作,而不必在每次查看更改时都将其部署到生产环境。

情况是这样的。当我运行时,它告诉我安装 google-protobuf。当我运行时,它告诉我:sudo gem install jekyllsudo gem install google-protobuf

google-protobuf 需要 Ruby 版本 < 3.3.dev,>= 2.6。当前的 ruby 版本是 2.5.0。

运行显示我的系统上有两个版本rbenv versions

系统

* 3.2.2 (由 /home/me/.rbenv/version 设置)

我认为是 2.5.0 版本导致了问题,但正在运行输出systemruby -v

Ruby 3.2.2(2023-03-30 修订版 E51014F9C0) [x86_64-Linux]

和运行输出rbenv global

3.2.2

所以对我来说,系统仍在使用 2.5.0 是没有意义的。有人可以说明解决方法是什么吗?

红宝石 Jekyll Ubuntu-16.04 RBenv

评论

3赞 WALVISK 10/9/2023
尝试没有sudo怎么样?gem install jekyll
0赞 Tom Lord 10/9/2023
这些工具背后的想法是,你不需要使用,因为你的整个 Ruby 环境都以沙盒的形式存在于你自己的工作区中。因此,我会优先考虑解决权限问题(也许重新安装 ruby 是最简单的方法)。rbenvsudo
0赞 Stefan 10/9/2023
请参阅安装 Ruby gem 的文档,特别是以“You should not use sudo to install gems”开头的警告。

答:

2赞 Felix 10/10/2023 #1

不知道(但是,和其他类似的工具),但作为 Ruby 版本管理器,它的工作是设置不同的/多个 Ruby 环境,为不同的用户安装不同的 gem。rbenvrvmasdf

由于您调用此命令可能会解析为默认情况下可用于具有更高权限的用户 (a super user) 的全局命令。很可能 rbenv 没有为这种情况设置,因此它回退到系统范围的安装和命令,这似乎是 Ubuntu 2.5 上的 Ruby 18.04。sudo gem install ...gemrubygem

因此,请尝试在没有 .如果这失败了,因为它想安装系统范围的软件包(库),求助于 rbenv 文档如何实现这一点。它可能会给出要运行的命令列表(例如)或要求您输入密码以进行系统修改。sudosudo apt install libprotobuf