m.abi
(Michael A.)
1
初始化新容器镜像失败。几天前还能正常工作,“没有任何改动”,今天却失败了。日志如下:
[0:02:27] 仍在处理:
[0:02:27] v8
________ 正在 '/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor' 中运行 'vpython third_party/depot_tools/update_depot_tools_toggle.py --disable'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/depot_tools/.cipd_bin/.cipd/pkgs/0/fI6WggdkRyN1r91MnTeApc2_gyTtXfYpueHZVLcaF8gC/vpython:
无法解析选项:无法解析 Python 脚本:stat
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/third_party/depot_tools/update_depot_tools_toggle.py:
没有该文件或目录
错误:命令 'vpython third_party/depot_tools/update_depot_tools_toggle.py --disable' 在 /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor 中返回了非零退出状态 1
...
** 初始化失败 ** 请向上滚动并查看之前的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
深入调查:关于 libv8,GitHub 上已报告过类似问题,与 Ruby 构建器版本变更有关。在初始化过程中,会执行构建器的升级。我认为问题可能与昨天发布的 bundler 2.2.15 版本有关。老实说:我不是 Ruby 专家,所以真正的问题可能略有不同。
不过,以下变通方法对我有效:将 templates/web.template.yml 中的第 148 行
- gem update bundler
修改为
- gem install bundler -v 2.2.14
此致,
Michael
m.abi
(Michael A.)
3
好主意!使用 discourse_docker 的 master 分支,app.yml 中的参数设为 version: stable。
pfaffman
(Jay Pfaffman)
4
除非你有理由运行 stable 版本,并且愿意对某些问题(如本例)投入更多关注,否则使用 tests-passed 会是更好的选择。该版本经过更充分的测试,也是 Discourse 官方托管服务所使用的版本。
sam
(Sam Saffron)
5
这确实值得调试,如果 Bundler 刚发布了一个 bug,我们需要尽快提供解决方案。
@kris.kotlarek 你能在 DigitalOcean 上复现这个问题吗?
david
(David Taylor)
8
这里存在若干问题。目前最稳妥的解决方案是在稳定版中提升 Gemfile 的版本。更多详情请参阅提交信息:
@M.abi 请尝试重新构建,现在应该可以正常工作了。
我预期运行 stable 版本能获得更好的稳定性——理想情况下仅包含安全修复,其他改动极少。至少这是我们对稳定分支的理解。而且,正因为稳定分支可能比“前沿”版本更容易出问题,才更需要用户投入更多关注。
pfaffman
(Jay Pfaffman)
10
不过,正如这个案例所示,实际情况可能与你预期的有所不同。他们确实很擅长快速修复问题(比如这次),但他们(主要)不在自己的托管环境中使用 stable 版本,因此其测试覆盖度不如 tests-passed 充分。所以,除非正好有新 stable 版本发布,否则我认为 tests-passed 相对更“稳妥”一些。当然,并非所有人都认同这一观点。