Pekkanen
(Pekkanen)
1
我需要更新 app.yml 中的 SMTP 设置,但不想更改 Discourse 的版本。
当我通过 version 标签指定版本时,重建会失败,并出现以下错误。我当前使用的版本是 2.4.0.beta8。
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && find /var/www/discourse ! -user discourse -exec chown discourse {} \+ failed with return #<Process::Status: pid 336 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
6269af00c2a4671a6fd2cb13a55bd475743205262bae7f483bf468e4dcacbeed
** 启动失败 ** 请向上滚动并查找之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
1 个赞
Remah
(Just another happy Discourse user)
2
这个问题每年都会出现,可能应该创建一个#操作指南主题。我刚刚搜索了特定版本:
1 个赞
Pekkanen
(Pekkanen)
3
是的,这里的区别是我在 yml 中使用了 version 标签,但在重新构建时遇到了错误。
1 个赞
pfaffman
(Jay Pfaffman)
4
如果您只需要更改 SMTP 设置,可以执行以下命令:
./launcher destroy app
./launcher start app
5 个赞
Pekkanen
(Pekkanen)
5
好的,这样即使不重新构建也能读取 YML 文件,听起来不错。虽然这能解决我的燃眉之急,但我仍然想知道为什么版本功能不起作用。
pfaffman
(Jay Pfaffman)
6
你说遇到了“错误”。这意味着你操作有误。我推测最可能是 YML 格式错误,但如果不清楚具体报错内容,确实无法确定。
抱歉,请向上滚动页面,查找之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
3 个赞
Pekkanen
(Pekkanen)
7
是的,我注意到我在帖子中提供的信息不够详细。我认为这不是格式错误,因为去掉版本标签后 yml 文件可以正常工作。
我又进行了一些测试,发现我遇到的这个 bug 在版本 10 和 11 中不会触发,但在版本 4 到 9 中会触发。
我在输出日志中只发现了两个错误,我认为这两个错误是预期的:
2020-02-22 10:42:33.410 UTC [62] postgres@postgres ERROR: database "discourse" already exists
2020-02-22 10:42:33.533 UTC [73] postgres@discourse ERROR: role "discourse" already exists
我查看了版本 10 的发布说明,但没有找到与此相关的修复说明。
很高兴问题已得到解决,加上您针对 SMTP 设置的变通方案(我将在周一测试,周末不想在生产服务器上操作),目前对我来说并不紧急。但最好能确认是否存在测试无法捕获的未知错误,如果该问题只是偶然被修复而非通过针对性修改解决,未来可能会再次出现。我想知道未来版本函数可以预期达到怎样的稳定性。
以下是以 v2.4.0.beta9 为目标版本运行时的输出转储:
dump_disco_version_error.txt (127.5 KB)
Pekkanen
(Pekkanen)
8
我终于抽出时间测试了,但它没有生效。我可以看到应用在启动时打印出了正确的密码,但由于访问被拒绝,邮件发送仍然失败。
pfaffman
(Jay Pfaffman)
9
嗯,我确定它以前是有效的。我见过其他一些设置没有被推送到配置文件。我不确定这是否被视为一个错误。
Pekkanen
(Pekkanen)
10
也可能是因为我使用的是旧版本,因此它在新版本中可能有效,也可能无效。我只是想分享一下我的发现。
Pekkanen
(Pekkanen)
11
我最近又遇到这个问题,看起来版本功能对分支有效,但对标签无效。我猜可能是因为启动器没有先获取所有标签,但我不确定。有没有办法编辑启动器脚本?
Pekkanen
(Pekkanen)
12
终于弄明白问题出在哪里了:discourse_docker 仓库和 discourse 仓库相互依赖,因此特定版本的 discourse 只能通过特定版本的 discourse_docker 仓库来安装。不幸的是,discourse_docker 仓库中没有标签,所以很难确定安装特定版本时应使用哪个 SHA。至少现在总算有了个交代。我会在以后进行安装时开始记录这些注意事项。
1 个赞