无法从 CLI 删除已弃用的主题组件 - 引导失败

我知道这是因为“替代徽标”组件:

I, [2021-06-25T11:00:32.360020 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
更新“替代徽标”失败
about.json 包含无效值:最大 Discourse 版本无效
/var/www/discourse/app/models/remote_theme.rb:169:in `update_from_remote'
/var/www/discourse/lib/tasks/themes.rake:61:in `block (2 levels) in <main>'

我曾安装过该组件,但由于 Discourse 已宕机,我无法访问管理面板将其删除。如何从命令行删除该主题组件?

我不确定 cleanup 对已停止的容器有什么作用,但你也许可以直接运行 ./launcher start app,然后在 https://your.domain/admin/customize/themes 中禁用那个有问题的主题?

你指的是 app.yml 中的插件吗?

没错。

我知道问题出在 Alternative Logos 上:

I, [2021-06-25T11:00:32.360020 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
更新 Alternative Logos 失败
about.json 包含无效值:最大 Discourse 版本无效
/var/www/discourse/app/models/remote_theme.rb:169:in `update_from_remote'
/var/www/discourse/lib/tasks/themes.rake:61:in `block (2 levels) in <main>'

我安装了该组件,但由于 Discourse 服务已宕机,我无法访问管理面板将其删除。我该如何从命令行删除该主题组件?我无法重建或启动应用,这真让人头疼。

所以:

  • 我无法重新构建,因为 Alternative Logos 的 about.json 中指定的最高版本低于我当前的版本
  • 我无法删除 Alternative Logos 组件,除非进入应用
  • 我无法进入应用,因为我无法重新构建它

有什么办法可以解决这个问题吗?我想移除 Alternative Logos 组件。

难道不能直接启动应用,而不必重新构建吗?

./launcher start app

无法在本地找到镜像 'local_discourse/app:latest'
docker: 守护进程错误响应:拉取访问被拒绝 local_discourse/app,仓库不存在或可能需要 'docker login':拒绝:请求访问资源被拒绝。
请参阅 'docker run --help'。

不幸的是,确实如此。

那也许可以用 git pull,但或许可以等等援兵 :sweat_smile:(我看到 Jay 在回复……)

不行,git pull 没有任何作用。

你试过运行

  ./launcher start app

吗?不过,如果你在旧容器停止时执行了 ./launcher cleanup,导致没有容器可以启动,那可就有点麻烦了。你当时就是这么做的吗? 看起来确实是这样。

我认为这是一个 bug:一个有问题的主题组件竟然会导致无法升级,所以或许很快就会有解决方案。

我觉得你可以修改数据库来移除该主题组件,但如果你没有正在运行的容器来访问数据库,我就不太清楚该如何操作了。

我唯一的其他紧急解决方案是,看看能否在干净的安装环境中恢复现有的数据库。

也许你可以将数据库恢复到干净的安装环境(它可能会忽略损坏的主题),然后删除你的数据库,使用升级后的 Discourse 重新构建一个全新的空数据库,最后从远程干净安装环境中恢复数据库。

另一种解决方案是创建一个仅包含数据库的镜像,并使用 SQL 移除损坏的主题组件。

2 个赞

我猜我要重新安装了,然后从备份恢复(在这个 .sql 备份文件中,我会对“替代徽标”部分进行修改。

不过情况确实很糟糕:一旦某个组件导致 Discourse 重建失败,除了全新安装之外,你没有任何其他选择。

2 个赞

好的,解决方案是搭建一个新的 Discourse 安装,从备份恢复,然后删除导致问题的组件。

3 个赞

我今天早上也遇到了类似的情况,但只需重启应用即可解决。

我的站点大约有 10 个主题,每个主题都使用了“替代徽标”组件,因为每个主题都使用不同颜色的徽标以匹配其配色方案。我注意到现在可以在站点设置中输入深色主题徽标。但是,如果删除这个已弃用的组件,其他主题的自定义徽标该在哪里添加呢?

我认为问题仅出在 about.json 文件中,你可以 fork 主题组件来创建自己的版本。但我尚未仔细查看或亲自尝试过。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.