博客,WSL与VSCode

放假之后便沉迷于安装环境(bushi)。一般来说开发环境用Linux装起来最舒服了,奈何MATLAB在Ubuntu上UI放缩有问题,啥都能忍就是不能忍丑!于是爬回Windows装环境了。

话虽如此,直接在Windows上装实在不太方便,一方面用Windows管理包简直是毁天灭地,一方面Windows的命令行真的太丑了。于是我选择了WSL(Windows Subsystem for Linux),在Linux上管理包,在Windows上使用,十分不错。

另一方面,趁着折腾我补全了博客的评论系统,记录一下踩到的坑,希望看到的你能远远绕过。

我的机型:x86-64 WIndows 10 LTSC N WSL安装了Debian发行版 代号Bookworm

安装WSL&配置代理

切换登入用户

WSL的安装方法遍地都是,但将WSL挪位置之后,默认登录是root用户了。为了防止自己做傻事,想让WSL每次登录时都用用户账户登录。但WSL挪位置之后启动器会消失,网络上那种命令行修改的方法就无效啦!正确做法是:

用WSL在/etc新建文件wsl.conf,如下操作:

1
# nano /etc/wsl.conf ###这一步要root权限才可以哦!

输入以下内容:

1
2
[user]
default=USER_NAME ###此处的USER_NAME是你想要自动登录的用户名!

然后重启WSL

1
2
# exit ###注销WSL用户登录
> wsl --shutdown ###这一步是在Powershell里的 使WSL关机,如果有多个发行版请自行参考官方说明

就可以看到自己的用户成功登入啦!

PS: 如果直接使用Windows访问并新建,似乎并不能使用,在WSL里完成就可用。

配置WSL代理

国内恼人的网络环境让很多包下载都很慢很慢,可以选择添加代理。

我使用WSL1,网络与Windows相通,直接设定环境变量即可:

1
export http_proxy=http://127.0.0.1:114514 ###使用http代理,端口为114514,入口在WIndows上

至于WSL2:首先我的系统是21H2的N版本,默认是没有安装WSL2的升级包的,直接安装WSL2的发行版会报错b110(似乎),其次WSL2很多好用的高级功能在WIndows11 以及22H2版本提供,我的系统并不支持,但是万一有人需要这样的东西,可以参考WSL 中的高级设置配置,在wsl.config中使用镜像模式和自动使用系统代理即可。

R与VSCode

一般使用R都是直接在Windows安装,这次我想在Linux中使用它,配合VSCode。

安装R:

1
$ sudo apt install r-base

安装radian,它可以让输出有颜色,花花绿绿的(不是):

1
2
$ sudo apt install pip #如果没有pip的话
$ pip install radian

这里有个小插曲,pip安装时会报PEP688错误,告诉你当前包管理被外部接管。我猜测这是WSL1的特点导致的,所以:

1
$ sudo mv /usr/lib/python3.11/EXTERNALLY-MANAGED /usr/lib/python3.11/EXTERNALLY-MANAGED.old

进入VSCode,安装WSL插件,等待一下就可以连接到WSL里啦! (PS:使用VSCodium,似乎要折腾很多才能使用这个插件,你可以参考这里以及这里

然后,新建一个R文件,随便写点,运行!VSCode会提示安装laguageserver包,点击安装!结果安装失败了,还给了一大堆报错。看着报错,在WSL中使用下列步骤安装:

1
2
3
4
$ sudo su ###使用root,绕过一些权限问题
# apt install libxml2-dev ###安装需要的依赖
# R
>install.package('languageserver', INSTALL_opts = '--no-lock') ###避免mv错误

就可以安装成功啦!

在VSCode使用radian之类的都参考了知乎,这里radian的路径是使用whereis指令输出的地址。唯一迷惑的就是在安装它所说配置了图片显示,似乎需要等待之类的操作才可以成功显示,我反复在VSCode的不同配置文件的设置中设置,莫名其妙就成功了。

Git与SSH

Git代理设置

GitHub推荐使用SSH来管理repository,但国内使用SSH直连效果并不理想。网络上可以搜索到很多SSH代理的教程,编辑~/.ssh/config中,使用nc或者其它程序完成。 但!是!当如上配置,输入ssh -T git@github.com时,好长时间不输出任何东西,那就要反思,是不是自己的代理商关掉了22端口的传出!为了防止自家机器当跳板,许多代理提供商都会禁止向22端口发包,这让nc一直什么都输出不了,我在这里被坑了一晚上,最后恍然大悟,原来是方法错误了。

这种情况下,应当使用443端口发ssh连接,连接很快。

用ssh-agent免密码

生成一个密钥,公钥保存至Github设置中。 依照Github的官方教程。要注意,WSL默认不启用ssh-agent,需要的话可以在~/.profile或~/.bashrc写入。 完成后就可以愉快的直接push不需登录啦!

博客评论区

由于博客搭建在Vercel上,我选择使用Waline实现评论功能,简单轻松。 依照Waline快速上手配置,一键部署!

自动部署失败

Vercel自动部署失败简直开局失利,若是按照快速上手所说所做,Vercel便会提示“遇到了意料之外的错误,我们的团队正在处理,请稍后再试”之类,GitHub的Security Log显示Block掉了一些操作,并且Vercel官方的Help页面也没有任何有关于这个错误的说明。 还好遇到问题的不是我一个人,在Github issue得知了这个问题发生的原因:Github设置中设置block掉了有个人邮箱泄露风险的操作,而Vercel在clone时使用的是用户关联的邮箱,所以会被Github给全封掉了。 解决方法:把自己账户Email设置中"Block command line pushes that expose my email"勾勾去掉,就可以啦!

去掉地区与浏览器显示 & 邮件提醒

评论区为什么要显示地区呢?我觉得没有必要。可以根据官方的说明重构自己的Waline,就可以实现相应的效果。 邮件提醒是个很酷的功能!但现在似乎有个小小的bug,那就是提醒邮件内的网址似乎是错误的,等我有兴趣再修复吧!(

Licensed under CC BY-NC-SA 4.0