手动更新 discourse 时需要内核版本升级

如果你们在同一数据中心之间 rsync /var/discourse,那么停机时间可以非常短,并且你们的回退方案仅仅是 DNS 恢复。
新的 VPS 只需要 docker 和可能的 swap。

2 个赞

你好,

我在运行 Red Hat Enterprise Linux 7 时也遇到了这个错误,内核版本为 3.10.0。RHEL8 的内核也没有新多少。

1 个赞

一样,3.1.0.beta1 在 CentOS7 (3.10.0-1160.76.1.el7.x86_64) 上运行正常

显然,发行版内核会进行大量回溯。像这样检查 vanilla 内核版本在其他项目中也引起了麻烦。有没有办法从命令行绕过此检查?

—更新—
我编辑了启动器脚本以绕过检查 - 几个 CentOS7 安装已成功更新。

5 个赞

这个问题会得到更多关注吗?系统要求不要求任何内核版本,CentOS 7/RHEL 7 尚未到达 EOL。Docker 也不需要更新的内核。我认为从长远来看,手动绕过检查并不是一个合适的解决方案。

2 个赞

我正准备升级一个旧论坛,遇到了同样的错误。CentOS 7 尚未达到 EOL(生命周期结束),您能否为 Ubuntu 14.04 找到替代解决方案?

如果您认为您正在运行操作系统供应商提供的最新内核(包含回溯修复),您可能想尝试绕过此检查。我知道我会这样做!是添加此检查的问题。我认为您只需删除或注释掉 ./launcher 脚本中的 exit 命令,在这一段中:

  # At least minimum version
  if compare_version "${kernel_min_version}" "${test}"; then
    echo "ERROR: Kernel version ${test} not supported, please upgrade to at least ${kernel_min_version}"
    exit 1
  fi

如果结果是升级仍然失败,那么您将需要找到一种方法在较新的内核上运行您的 Discourse。

(很有可能有人认为这个建议不合时宜,但我认为发生的情况是,我们检查的是版本号而不是某个功能(urandom),而这种方法可能会产生误报。)

4 个赞

我目前遇到了这个问题,我们的论坛也因此宕机了。我该如何编辑启动器脚本并注释掉内核检查(至少要等到 Centos7 获得此更新或我们尝试将论坛迁移到另一台服务器)?

更新:
我通过反复试验成功更新了启动器,并且没有注释掉内核,而是将其要求版本设置为一个较低的版本。这效果很好。

也许这不是一个长期的解决方案,但我们的托管公司已经告知我们 Centos7 不会获得 4.4 内核版本……有人能解释一下这在实际操作中意味着什么吗?

1 个赞

看起来 CentOS 7 的更新将持续到 2024 年中期。

在某个时候——可能是在 EOL 之前——不断前进的 Discourse 将需要 CentOS 7 所没有的东西,届时您需要升级您的操作系统(或迁移到具有合适操作系统版本的新实例)。看起来那个时候还没有到来。

一如既往,在尝试更新 Discourse(现在或将来)之前,请备份您的论坛,并安全地保存该备份副本,以及 app.yml 文件的安全副本。

1 个赞

您正在运行什么内核来配合您刚刚完成的重建?

如果低于 4.4 并且可以正常工作,那么 @falco 可能需要再次降低要求的版本。

(因为发行版会有来自较新内核的功能和修复的向后移植,所以内核版本检查是一种非常粗略的手段。我理解减少支持负载的想法,但也有相反的效果,即安全检查出现误报。并且随着 Discourse 的普及,这个问题会越来越大。检查功能比检查版本要好得多。)

2 个赞

我们的系统运行以下版本:

  • CentOS Linux release 7.9.2009 (Core)
  • Kernel 3.10.0-1160.88.1.el7.x86_64
1 个赞

更新此内容:
尽管我们的论坛现在可以正常工作,但我们越来越频繁地看到此错误:

糟糕

为此讨论论坛提供支持的软件遇到了意外问题。我们对此造成的不便深表歉意。

错误详情已记录,并生成了自动通知。我们会进行查看。

无需进一步操作。但是,如果错误状况持续存在,您可以通过在网站的反馈类别中发布讨论主题来提供更多详细信息,包括重现错误的步骤。

这是否与最小内核要求问题有关?这种“不稳定”(我们姑且这么称呼它)在最近几天/几周变得更加明显。它似乎时有时无,有时论坛运行正常,有时则不然。

编辑:算了,我认为这与 PostgreSQL 问题有关(由于没有容器的图像而导致了过多的进程在运行,通过清理启动器解决了这个问题)。

1 个赞

我倾向于同意这一点。您认为这是一个好主意吗,@Falco

1 个赞

是的,欢迎提交 PR 来正确地进行功能检测。

2 个赞

你好 Falco,

我在尝试将 discourse 从 3.1.0.beta2 更新到 3.1.0.beta4 时遇到了这个问题。

这看起来是一次小升级,但由于内核检查,在 CentOS7 上这次更新涉及的内容要多得多。也许下次可以使用不同的版本号来更好地反映这些相对较大的更改。

通读讨论后,我无法确定哪个功能检查是必需的,也许如果你能详细说明一下,有人就能提交一个 PR。

1 个赞

它在 @Ed_S 的帖子中:

在 Ruby 3.1 上,当在未正确实现的平台上调用 Random.urandom 时会发生 RuntimeException,这包括在内核 3.13 上运行 Ubuntu 14.04 的用户。