Windows 下 VsCoq 配置踩坑记录(基于 wsl)
Abstract. 是谁没有 Mac 也没装 Linux 就来选 Software Fundations 啊🤣👉
原来是我🤡🤡🤡
讲一下今晚上配置 coq 环境的流程以及踩的所有坑。其实可能有的地方记不太清楚了。
配置时间和环境:2024. 2. 22,本地环境为 Windows 11 22621.3155,vscode 1.86.2,wsl 发行版为 Ubuntu 22.04,但是感觉未必需要对着配置。
Keywords. 环境配置, wsl, WSL_E_CONSOLE, Coq, VsCoq, opam。
首先作者不是原教旨主义者所以不会用 Emacs,于是考虑配一个 VsCoq
坑 1.
虽然可以在 windows 下面安装 coq,但是 VsCoq 的配置需要一个所谓的 code server,这个 server 需要用 opam 来安装,但是 opam 现在暂时没有 windows 版本。
据说 opam 2.2 之后会支持 windows,但是哥们享受不到了。
安装 WSL
考虑电脑上装一个 wsl,然后用 vscode 的远程连接插件连上去。
首先开始菜单搜索「启用或关闭 windows 功能」,在里面勾选
- 适用于 Linux 的 Windows 子系统
- 虚拟机平台
- Windows 虚拟机监控程序平台
不知道有没有多选东西,反正这三个没什么问题。
接下来按指示重启电脑。
坑 2.
接下来应当把 wsl 版本调至 2,否则会寄。
打开 windows terminal,依次运行以下命令:
1 | wsl --set-default-version 2 |
这样会安装 Ubuntu 22.04。
如果不加后两个参数会安装某个 Ubuntu,经过 lsb_release -a
发现好像也是 22.04。
接下来在 vscode 中安装扩展 WSL,Ctrl + Shift + p
后输入 WSL: Connect to WSL
,理论上可以连接到刚才下的 Ubuntu。
坑 3(出现概率不高).
此处遇到连接时程序反复报错 WSL_E_CONSOLE,无法连接。
一般人不会出现这个问题,因为这里纯粹是学 OI 学的,网上搜索也没有搜索到类似的情况。
这是因为在早年的算法竞赛经历中,为了在紧张调试运行程序时跳过 windows terminal 的动画(加载需要约 1s),选择了默认使用旧版命令行界面。但是 WSL2 并不能在旧版命令行界面中运行。
此时以任意方法打开旧版命令行界面,在左上角属性中将其禁用即可。
接下来所有命令均在 Ubuntu 中执行(在 windows terminal 中打开一个 ubuntu 的终端,或者在连接到 wsl 的 vscode 中开启终端)。
安装 Coq Prover
这一步没什么坑,直接运行
1 | sudo snap install coq-prover |
即可。
其实有一个,prover 只有一个 o,有傻逼不会英语拼错了。
安装 Opam
接下来的配置过程中需要用到 Opam。按照官网的指示依次执行
1 | add-apt-repository ppa:avsm/ppa |
即可。接下来需要初始化。
坑 4
注意 opam 的源本来是在国外的,接下来你需要下载大量的包,如果不换源后续安装过程极卡。
这里我们使用了 SJTU 提供的国内镜像,可以在初始化时直接使用该源,运行
1 | opam init default https://mirrors.sjtug.sjtu.edu.cn/git/opam-repository.git |
如果你忘了换源,直接运行了
1 | opam init |
也可以再运行
1 | opam repo set-url default https://mirrors.sjtug.sjtu.edu.cn/git/opam-repository.git --all --set-default |
来切换。
配置 VsCoq
首先在 vscode 中安装扩展 VsCoq。接下来依插件说明页的说明,依次运行两个下载命令:
1 | opam pin add coq 8.18.0 |
这会在 ubuntu 上安装 language server,接下来为了让 vscode 找到这个 server,你需要运行
1 | which vscoqtop |
坑 5.
如果此时没有输出(即失败),可能是没有刷新。运行
1 | eval $(opam env) |
然后重试。
此时你将得到一个类似于
1 | /home/$USERNAME$/.opam/default/bin/vscoqtop |
的输出,将其完整地复制下来,填入 VsCoq 的 Extension Setting 中,VsCoq: Path
的值。
坑 6.(舍友踩的)
有人在 Windows 下配环境变量配习惯了,把路径复制到 ../bin
就停了。但是此时必须要完整地复制全部内容。
然后预计就能跑了。为了测试你可以下载 Logical Fundations,然后打开里面的 Basics.v
,理论上将会看到如下分栏的界面:
然后可以凭手感写几个前面的作业,有 FP 基础的话不需要读书读下上下文就能写。此时光标放在某个句号后面,右侧边栏就会进入 proof mode,并显示这个句号后面的 goal,举例来说:
然后看起来基本上能用了。