wsl2下使用ok提交作业显示鉴权失败的解决方案
问题
假定你安装了wsl2,在其上安装了python,且在Windows系统上安装了vscode并使用其wsl插件搭建服务器实现代码编写调试和编译等操作
这时你可能会发现一个问题,你按照SICP插件的说明试图提交你的代码,但是terminal发出了如下的报错
问题原因
造成这个问题的原因好像有很多,包括但不限于:
- vscode的wsl插件搭建的服务器代理了
ok
的鉴权请求 - 你的wsl没有正确安装或者没有安装图形浏览器
- root用户下不能以非沙箱模式启动浏览器,而
ok
好像不会管这种事情 - 你没有正确配置Windows下的防火墙设置导致唤起系统浏览器失败
- 你没有登录oj(?)
- 等等
这种情况比较难绷,下面的步骤可能帮助你解决问题并继续使用wsl
问题解决
@Iroha 的评论,直接安装wslu
好像也可以解决绝大多数人的问题,可以优先尝试此解决方案,但个人安装后提示DISPLAY变量相关错误,且本人尝试过的方案无法解决此错误,在wslu
无效之后可以尝试下面的解决方案。
根据- 检查浏览器是否存在且可用
在终端输入xdg-open https://sicp.pascal-lab.net/2023/
并登陆oj,大部分发布版都会预装xdg-utils
- 如果被提示找不到命令之类的,请执行
sudo apt-get install xdg-utils
或yum install xdg-utils
等,根据你的实际情况而定 - 如果被提示请使用沙箱模式,请
su
到一个其他用户执行,不要使用root用户,也不要遵从他的提示开沙箱模式 - 如果提示没有可执行此操作的程序,您可以尝试自行安装linux下的浏览器,当然我还是选择将
BROWSER
变量export
到mnt
下实体机的的浏览器路径 - 如果提示无法什么
DISPLAY=:0
之类的,请关机并在Windows的管理员模式命令行执行wsl --update
并重启,仍然不能解决请重新安装X
并在Windows系统下也安装服务端(不清楚有没有用,反正我这样可以解决问题),还有更进一步的我也不懂,请自行解决,如果能够执行xdg-clock
并且出现一个可爱的钟表那么你解决了这个问题 - 如果提示无法调用,或者权限相关什么的,请在防火墙里面把所有带有wsl和Hyper-V字样的条目权限全部开放,并且以管理员模式运行wsl
-
保存代码,关闭vscode,cd到你code文件的目录
如果不关闭vscode,ok
的链接请求好像会被vscode代理到它自己的服务器,然后就寄了 -
在终端输入python3 ok -submit,成功提交
Edited by nik_nul