You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextCloud Snap离线更新因在线钩子执行失败求助

解决离线环境下Snap版NextCloud升级pre-refresh钩子报错问题

问题描述

在无外网的Ubuntu 22.04无头服务器上,通过Snap安装的NextCloud 24.0.3snap1升级至25.0.10snap1时,执行以下命令:

nextcloud.occ maintenance:mode --on
snap ack ./nextcloud_37355.assert
snap install ./nextcloud_37355.snap

触发pre-refresh钩子报错:

  • Run pre-refresh hook of "nextcloud" snap if present (run hook "pre-refresh": Unable to refresh: apps.nextcloud.com seems to be down, please try again later)

原因是该版本的Snap钩子新增了apps.nextcloud.com可用性检查,而离线环境无法满足此要求,且不想通过卸载重装方式解决。

解决步骤

方法一:临时修改pre-refresh钩子(推荐)

  1. 确保维护模式已开启(若之前未执行或已关闭,重新执行):
nextcloud.occ maintenance:mode --on
  1. 复制原pre-refresh钩子到临时目录:
cp /snap/nextcloud/current/hooks/pre-refresh /tmp/pre-refresh
  1. 编辑临时钩子文件,注释掉或修改检查apps.nextcloud.com的逻辑:
    • 打开/tmp/pre-refresh,找到包含apps.nextcloud.com的检查代码段(通常是curl请求或可达性验证)
    • 将该段代码注释掉,或直接在检查前添加return 0让钩子直接返回成功
  2. 挂载替换原钩子(Snap目录默认只读,通过bind挂载临时修改):
mount --bind /tmp/pre-refresh /snap/nextcloud/current/hooks/pre-refresh
  1. 执行本地Snap安装命令:
snap install ./nextcloud_37355.snap
  1. 安装完成后,取消挂载恢复原钩子:
umount /snap/nextcloud/current/hooks/pre-refresh
  1. 关闭维护模式:
nextcloud.occ maintenance:mode --off

方法二:使用devmode参数安装(简化但降低安全限制)

若对安全限制要求不高,可直接添加--devmode参数跳过钩子的部分检查:

nextcloud.occ maintenance:mode --on
snap ack ./nextcloud_37355.assert
snap install --devmode ./nextcloud_37355.snap
nextcloud.occ maintenance:mode --off

注意:devmode会关闭Snap的部分安全隔离机制,仅建议离线环境临时使用。

内容的提问来源于stack exchange,提问作者MookiBar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:25:20