我在装有 Ubuntu 16.04 LTS 的笔记本电脑上安装了 VS Code。我尝试了多种安装方法,但结果都一样;最近,我按照 Cactux 的“新”说明操作这里。我尝试过两种方式打开该应用程序,但都没有效果。
- 当我从“应用程序”打开该程序时,图标会在启动器中显示大约 15 秒,然后消失。没有弹出任何错误。
- 当我打开终端并输入时
code
,该命令什么也不做,并且我在不到一秒钟的时间内得到了一个新的提示。
which code
由于我对 Linux 还比较陌生,所以我不知道该尝试什么。yields
/usr/bin/code
是一个 bash 脚本。这是我无法理解的地方。
脚本内容
/usr/bin$ cat code
#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# If root, ensure that --user-data-dir or --file-write is specified
if [ "$(id -u)" = "0" ]; then
for i in $@
do
if [[ $i == --user-data-dir || $i == --user-data-dir=* || $i == --file-write ]]; then
CAN_LAUNCH_AS_ROOT=1
fi
done
if [ -z $CAN_LAUNCH_AS_ROOT ]; then
echo "You are trying to start vscode as a super user which is not recommended. If you really want to, you must specify an alternate user data directory using the --user-data-dir argument." 1>&2
exit 1
fi
fi
if [ ! -L $0 ]; then
# if path is not a symlink, find relatively
VSCODE_PATH="$(dirname $0)/.."
else
if which readlink >/dev/null; then
# if readlink exists, follow the symlink and find relatively
VSCODE_PATH="$(dirname $(readlink -f $0))/.."
else
# else use the standard install location
VSCODE_PATH="/usr/share/code"
fi
fi
ELECTRON="$VSCODE_PATH/code"
CLI="$VSCODE_PATH/resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?
调试输出(来自不同的目录)
~$ bash -x code
++ id -u
+ '[' 1000 = 0 ']'
+ '[' '!' -L code ']'
++ dirname code
+ VSCODE_PATH=./..
+ ELECTRON=./../code
+ CLI=./../resources/app/out/cli.js
+ ELECTRON_RUN_AS_NODE=1
+ ./../code ./../resources/app/out/cli.js
/usr/bin/code: line 35: ./../code: No such file or directory
+ exit 127
/usr/bin$ bash -x code
++ id -u
+ '[' 1000 = 0 ']'
+ '[' '!' -L code ']'
+ which readlink
+++ readlink -f code
++ dirname /usr/share/code/bin/code
+ VSCODE_PATH=/usr/share/code/bin/..
+ ELECTRON=/usr/share/code/bin/../code
+ CLI=/usr/share/code/bin/../resources/app/out/cli.js
+ ELECTRON_RUN_AS_NODE=1
+ /usr/share/code/bin/../code /usr/share/code/bin/../resources/app/out/cli.js
+ exit 0
PATH 的内容
~$ $PATH
bash: /home/adam/anaconda3/bin:/home/adam/anaconda3/bin:/home/adam/bin:/home/adam/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin: No such file or directory
任何帮助或建议都将不胜感激。
答案1
我遇到了这里描述的相同问题,新安装了 Ubuntu 18.04 LTS。我从 conda 安装了 VS Code。
发现如果你运行以下命令
code --verbose
它会告诉你代码发生了什么。就我的情况而言
code --verbose
[main 20:19:26] Startup error:
Error: EACCES: permission denied, mkdir '/home/<user>/.config/Code/CachedData'
确信文件夹 ~/.config/Code 由于某种原因具有 root 访问权限。使用 sudo 删除了该文件夹。
rm -rf /home/<user>/.config/Code
再次尝试运行代码并且运行良好。
答案2
我也遇到了同样的问题。正如 Robin G 和 Nezir 所建议的那样,我意识到/home/user/.config/Code
目录的所有者是“root”。但是,您可以更改该目录的所有权,而不是将其删除。
sudo chown -R $USER "$HOME/.config/Code"
需要“-R”选项来递归更改目标目录下所有文件和目录的所有权。
此后,Ubuntu 18.04 上的 Visual Studio Code v. 1.27 在我的计算机上正常运行。
答案3
使用正确的命令调试 bash
要调试您应该使用以下命令:
bash --debugger `which code`
这将逐行运行 bash 脚本。要转到下一行,只需输入n和 返回. 发布的输出比我们将看到的还多。
通过 snap 安装(适用于 Ubuntu 版本 > 18.04)
顺便说一下,Ubuntu 18.04 LTS(长期版本)现在直接支持代码,您可以通过 snap 包安装它:
显示 ubuntu 支持的 snap 版本和信息:
snap info code
并安装它
sudo snap install code
我个人更喜欢通过 apt 安装。因此请按照微软的以下说明操作:
安装 VS Code
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
这将下载 gpg 密钥并复制并生成 apt 文件。然后您只需更新和安装即可vs 代码:
sudo apt-get update
sudo apt-get install code
- 这种安装方法的优点是,你可以使用apt-get 更新命令。工作正常,我使用vs 代码与vim 插件超过 2 年(c、c++、python、md、latex、html、javascript...)。
答案4
就我而言,运行时出现code --verbose
错误是:
错误:ENOSPC:已达到文件监视者数量的系统限制,请监视“/snap/code”
/etc/sysctl.conf
因此,我通过修改文件末尾并添加以下内容,将文件观察器的数量增加到最大:
fs.inotify.max_user_watches=524288
然后我必须运行此命令来在系统中加载该值:
sudo sysctl -p
现在我可以毫无问题地运行 VScode