Mac 下 vscode 更新报错

前言

自从换了 Mac 之后,我就没有主动更新过 VS Code。今天本来想装个插件,结果却提示当前版本过低,必须更新后才能安装。点击 Check for Update 后,VS Code 在右下角弹出了这样一条错误提示:

Cannot update while running on a read-only volume. The application is on a read-only volume. Please move the application and try again. If you're on macOS Sierra or later, you'll need to move the application out of the Downloads directory. This might mean the application was put on quarantine by macOS. See this link for more information.

起初还以为是 VS Code 更新机制的问题,但仔细看提示,结合一些网上的搜索后,发现这个问题主要与 macOS 的权限管理有关。

问题分析

从错误提示可以看出,问题的根源在于 VS Code 被存放在了一个只读卷上,导致无法正常更新。在 macOS 上,这种情况常见于以下几种场景:

  1. 存放在默认的"下载"目录

    用户从官网下载后直接运行 VS Code,而没有将其移动到 /Applications 目录,默认情况下,"下载"目录并不具备足够的权限支持应用更新。

  2. 放置在自定义的"只读"目录

    如果用户将 VS Code 放在自定义目录(例如 ~/Applications),而非系统的 /Applications,可能会因为权限问题导致更新失败。

  3. 被 macOS 的"隔离机制"标记为只读

    从 macOS Sierra 开始,系统对从非 App Store 下载的应用默认启用"隔离"机制(quarantine),会限制应用程序的权限,包括更新权限。

综上所述,这个问题实际上源于 VS Code 的存储路径以及 macOS 的权限限制。那么,如何解决这个问题呢?

解决方法

方法 1:移动到 /Applications 目录

手动将 VS Code 移动到根目录下的 /Applications 文件夹,这是 macOS 上的标准应用存储位置,拥有更新所需的权限。操作步骤如下:

  1. 打开 Finder,找到 Visual Studio Code.app
  2. 拖动该文件到 /Applications 目录下(如果系统提示输入管理员密码,输入即可)。

完成后,重新打开 VS Code 并尝试更新。如果问题解决,那么恭喜你,这种方法最简单有效。

方法 2:修改缓存文件权限

如果移动到 /Applications 后仍然无法解决问题,很可能是 VS Code 的更新缓存文件权限出现问题。我们需要修改这些文件的所有者为当前用户。

1. 检查缓存目录是否存在

执行以下命令,确认更新缓存目录的状态:

bash 复制代码
ls ~/Library/Caches/com.microsoft.VSCode.ShipIt
  • 如果目录存在并有内容,则继续执行下一步。
  • 如果目录内容为空,可以手动删除该目录:
bash 复制代码
rm -rf ~/Library/Caches/com.microsoft.VSCode.ShipIt

2. 修改缓存文件所有者

将缓存文件的所有者改为当前用户,以便获得修改权限:

bash 复制代码
sudo chown -R $USER ~/Library/Caches/com.microsoft.VSCode.ShipIt

3:解除应用隔离状态

有时 macOS 的隔离机制会将下载的应用标记为"受限"状态。我们需要解除隔离状态,让应用获得正常权限:

bash 复制代码
xattr -dr com.apple.quarantine /Applications/Visual\ Studio\ Code.app

注意:如果执行此命令时提示权限错误,可以尝试重启电脑后再运行。

4. 重启系统并重试更新

在完成上述操作后,如果问题仍然存在,建议重启电脑以清除 macOS 的权限缓存。重启后,重新尝试更新:

  1. 打开 VS Code。
  2. 点击菜单栏中的 Code > Check for Updates

如果问题仍未解决,可以考虑卸载 VS Code 并重新下载最新版本。

结语

出现这个问题的原因在于 VS Code 存储目录的权限不足,这主要是因为它是一个无需安装即可运行的应用。用户在首次使用时通常不会关注存储路径,导致更新时权限不足。通过移动目录、修改权限、解除隔离状态等方法,我们可以解决这个问题。

相关链接

相关推荐
庸俗今天不摸鱼21 分钟前
【万字总结】前端全方位性能优化指南(十)——自适应优化系统、遗传算法调参、Service Worker智能降级方案
前端·性能优化·webassembly
QTX1873022 分钟前
JavaScript 中的原型链与继承
开发语言·javascript·原型模式
黄毛火烧雪下28 分钟前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
Apifox39 分钟前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景
前端·后端·程序员
一张假钞41 分钟前
Firefox默认在新标签页打开收藏栏链接
前端·firefox
高达可以过山车不行42 分钟前
Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
前端·firefox
m0_5937581043 分钟前
firefox 136.0.4版本离线安装MarkDown插件
前端·firefox
掘金一周1 小时前
金石焕新程 >> 瓜分万元现金大奖征文活动即将回归 | 掘金一周 4.3
前端·人工智能·后端
三翼鸟数字化技术团队1 小时前
Vue自定义指令最佳实践教程
前端·vue.js
Jasmin Tin Wei2 小时前
蓝桥杯 web 学海无涯(axios、ecahrts)版本二
前端·蓝桥杯