Rubygems 更新在奇怪的 ruby 版本上失败
Rubygems update fails on strange ruby versions
我正在开发 gem(atd) and I just tried to get gitlab CI to run my tests on all versions of ruby my gem supports (2.2.2 - 2.4.0) including bugfix releases. I had an issue (GitLab CI pipline link, see versions > 2.3.0) with the rainbow gem 无法使用早于 2.6.9 的 rubygems 版本(当前rubygems 版本是 2.6.10),所以在我的 gitlab ci 构建中(基本上是 docker 容器)我尝试 运行 gem update --system
在 bundle install
之前,这消除了彩虹错误,但是当 运行ning gem update --system
仅在 ruby 版本 2.2.4 和 2.3.0 上时,我得到了以下错误,这很奇怪,因为这两个版本之间有 2 个版本,2.2.5 和 2.2.6:
Running with gitlab-ci-multi-runner 1.10.4 (b32125f)
Using Docker executor with image ruby:2.2.4 ...
Pulling docker image ruby:2.2.4 ...
Running on runner-fa6cab46-project-1684988-concurrent-0 via runner-fa6cab46-machine-1486422765-ae1c6a3c-gce...
Cloning repository...
Cloning into '/builds/thesecretmaster/atd'...
Checking out ebe7405a as development...
Skipping Git submodules setup
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
$ which ruby
/usr/local/bin/ruby
$ gem install rubygems-update
Successfully installed rubygems-update-2.6.10
1 gem installed
$ gem update --system
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory @ dir_chdir - /usr/local/bundle/gems/rubygems-update-2.6.3
Updating rubygems-update
Successfully installed rubygems-update-2.6.10
ERROR: Build failed: exit code 1
我觉得可能与升级前的rubygems版本有关,但我不确定。我知道它无法从 rubygems 2.6.3 到 2.6.10 ruby 2.2.4 和 2.3.0.
这是 table 的通过和失败:
ruby -v | initial gem -v | ci pass/fail
=======================================
2.2.2 | 2.4.8 | pass
2.2.3 | 2.5.0 | pass
2.2.4 | 2.6.3 | fail
2.2.5 | 2.6.8 | pass
2.2.6 | 2.6.10 | pass
2.3.0 | 2.6.3 | fail
2.3.1 | 2.6.8 | pass
2.3.2 | 2.6.8 | pass
2.3.3 | 2.6.10 | pass
2.4.0 | 2.6.10 | pass
为了满足 gem update --system
更新 2.6.3
的愿望,您可以 运行 gem install rubygems-update --version 2.6.3
安装代码以更新到 2.6.3,然后您可以通过告诉它 gem update --system 2.6.10
来强制它更新到正确的版本(2.6.10 是撰写本文时的当前 rubygems 版本)。
我正在开发 gem(atd) and I just tried to get gitlab CI to run my tests on all versions of ruby my gem supports (2.2.2 - 2.4.0) including bugfix releases. I had an issue (GitLab CI pipline link, see versions > 2.3.0) with the rainbow gem 无法使用早于 2.6.9 的 rubygems 版本(当前rubygems 版本是 2.6.10),所以在我的 gitlab ci 构建中(基本上是 docker 容器)我尝试 运行 gem update --system
在 bundle install
之前,这消除了彩虹错误,但是当 运行ning gem update --system
仅在 ruby 版本 2.2.4 和 2.3.0 上时,我得到了以下错误,这很奇怪,因为这两个版本之间有 2 个版本,2.2.5 和 2.2.6:
Running with gitlab-ci-multi-runner 1.10.4 (b32125f)
Using Docker executor with image ruby:2.2.4 ...
Pulling docker image ruby:2.2.4 ...
Running on runner-fa6cab46-project-1684988-concurrent-0 via runner-fa6cab46-machine-1486422765-ae1c6a3c-gce...
Cloning repository...
Cloning into '/builds/thesecretmaster/atd'...
Checking out ebe7405a as development...
Skipping Git submodules setup
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
$ which ruby
/usr/local/bin/ruby
$ gem install rubygems-update
Successfully installed rubygems-update-2.6.10
1 gem installed
$ gem update --system
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory @ dir_chdir - /usr/local/bundle/gems/rubygems-update-2.6.3
Updating rubygems-update
Successfully installed rubygems-update-2.6.10
ERROR: Build failed: exit code 1
我觉得可能与升级前的rubygems版本有关,但我不确定。我知道它无法从 rubygems 2.6.3 到 2.6.10 ruby 2.2.4 和 2.3.0.
这是 table 的通过和失败:
ruby -v | initial gem -v | ci pass/fail
=======================================
2.2.2 | 2.4.8 | pass
2.2.3 | 2.5.0 | pass
2.2.4 | 2.6.3 | fail
2.2.5 | 2.6.8 | pass
2.2.6 | 2.6.10 | pass
2.3.0 | 2.6.3 | fail
2.3.1 | 2.6.8 | pass
2.3.2 | 2.6.8 | pass
2.3.3 | 2.6.10 | pass
2.4.0 | 2.6.10 | pass
为了满足 gem update --system
更新 2.6.3
的愿望,您可以 运行 gem install rubygems-update --version 2.6.3
安装代码以更新到 2.6.3,然后您可以通过告诉它 gem update --system 2.6.10
来强制它更新到正确的版本(2.6.10 是撰写本文时的当前 rubygems 版本)。