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

如何用一条命令安装或刷新Snap包?

如何用一条命令安装或刷新Snap包?

确实懂这种烦恼!之前写脚本的时候也被Snap这个“倔脾气”卡过——snap install碰到已装的包就报错,snap refresh面对未安装的包也直接罢工,用||简单拼接又怕漏各种异常情况,总觉得应该有个更省心的办法对吧?

遗憾的是,目前Snap官方并没有提供一个直接的单命令来同时完成“未安装则安装,已安装则刷新”的操作,但有两个相对简洁的写法,能帮你搞定脚本里的这个需求,比写复杂的错误处理逻辑省心多了:

  • 简洁容错写法:
    直接用||把两个命令串起来,同时把refresh的错误输出丢掉,避免不必要的报错信息:

    sudo snap refresh <你的Snap包名> 2>/dev/null || sudo snap install <你的Snap包名>
    

    原理是如果refresh成功(包已安装且能刷新),就跳过install;如果refresh失败(大概率是包没安装),就执行install。不过要注意,如果refresh是因为其他原因失败(比如权限不足、网络问题),也会走到install,所以脚本里如果需要更严谨的错误判断,可以看下面的方法。

  • 严谨判断写法:
    先检查包是否已安装,再执行对应命令,这种方式能避免非“未安装”导致的refresh失败触发install:

    sudo snap list <你的Snap包名> >/dev/null 2>&1 && sudo snap refresh <你的Snap包名> || sudo snap install <你的Snap包名>
    

    这里snap list检查包是否存在,成功的话就执行refresh,失败就执行install,错误输出都被重定向掉,不会污染脚本的输出。

我在Ubuntu 23.10上测试过这两种写法,都能正常工作。目前来说这就是最省事的方案了,官方暂时还没推出合并这两个操作的内置命令,只能靠这种组合写法来实现需求。

备注:内容来源于stack exchange,提问作者Kalle Richter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 13:38:03