自动更新在 VSCode 中不起作用:无法创建临时目录:权限被拒绝

Auto update isn't working in VSCode: Could not create temporary directory: Permission denied

从某个时候开始,我开始不时收到此错误(我想它会在编辑器尝试检查更新时触发),并且 manual/auto 更新不起作用。我更新编辑器的唯一方法是重新下载应用程序并手动替换它。

有人遇到同样的问题并成功解决了吗?

尝试在终端中输入以下命令:

cd ~/Library/Caches

sudo chown -R <username>:staff *

上述解决方案有效,但就像用大锤杀死家蝇一样。

  1. 转到缓存 cd ~/Library/Caches
  2. 检查文件夹的所有权。 ls -la
  3. 你可能会看到drwxr--r-- 2 root staff 64 Nov 15 09:37 com.microsoft.VSCode.ShipIt
  4. 运行 sudo chown <username>:staff com.microsoft.VSCode.ShipIt

这允许您只更新该文件夹所有者,而不会触及其他文件夹。你可以意外地打破项目。

在 2020 年 8 月 12 日对我的 macOS Catalina 10.15.6 进行了补充更新和错误修复后,我在更新 VSCode 时遇到了类似的问题。我通过手动更新 VSCode:

解决了这个问题
  1. 在官方网站上转到 last changes
  2. 下载:Windows:用户系统| Mac | Linux: 快照 deb rpm tarball
  3. mv ~/Downloads/Visual\ Studio\ Code.app/ ~/Applications/ 或 move/copy Visual Studio Code.app 进入 Applications 文件夹
  4. 启动 Visual Studio Code.app 并享受最新版本。

After that, the application should auto update the new version without any problems !

我使用以下脚本手动 download/install 新版本(例如在 /opt/ 下)。旧目录已备份。此外,如果出现网络故障,我可以重新运行脚本以恢复。

vscode-update

#!/bin/bash
set -e
cd /opt/
datetime=$(date +"%Y-%m-%d_%H%m%S")
dateonly=$(date +"%Y-%m-%d")
downloadedfile="vscode_download_$dateonly.tar.gz"
backupfile="VSCode-linux-x64_backup_$datetime"
url=https://update.code.visualstudio.com/latest/linux-x64/stable


echo "Downloading $url --> $(pwd)/$downloadedfile"
wget --continue -O "$downloadedfile" $url

echo "backing up old vscode under: $backupfile"
mv VSCode-linux-x64/ "$backupfile"

echo "extracting: $downloadedfile"
tar xvzf "$downloadedfile"

echo "UPDATE DONE!"

就我而言,~/Library/Caches/com.microsoft.VSCode.ShipIt 突然归 root:staff 所有。我通过 运行 以下命令修复了它:

sudo chown -R $USER:'staff' ~/Library/Caches/com.microsoft.VSCode.ShipIt

(在组名周围添加了单引号,因为 ZSH 不喜欢它)