WSL2配置个人开发环境(C + Rust + sagemath)

之前把电脑恢复出厂设置了所以重新配了环境。这次正好把上次的问题解决了,记录下基于WSL2的开发环境配置。包括WSL2, sagemath, vscode, rust, C/C++.

我vim等工具玩的也不多,而且感觉也没需求(不过这次重装其实就是打N1CTF半截,vscode连不上WSL2,然后WSL2也炸了)。所以不搞花里胡哨的,一切从简..
但是sagemath 10.x版本对我来说很有必要,而apt包管理器目前只能下到9.5,所以sagemath是自己编译的。

前置

WSL2 + vscode

安装

默认是装C盘的,上次我C盘空间不足,很折磨。 所以这次选择手动安装。

正确做法是import或者先官方安装 export再import,千万别自己解压缩包然后像下面这样安装!!

  1. 先升级Windows11到23H2,否则不方便让WSL2科学上网。这会影响到sagemath高版本的编译。23H2应该很快就发布了,急着用就看这篇的2023.9.19更新

  2. 下载WSL2并做安装所需的前置步骤:下载发行版里面选个ubuntu的LTS高版本下载,同时往上翻完成前五步

  3. 下载的.appx文件后缀改为.zip,架构的.appx包拖出来再改为.zip,解压到你想安装的文件夹。然后点击ubuntu.exe

  4. 直接装vscode,打开右下角自动提示安装WSL2扩展。下面改xxx文件就可以直接code xxx了。没写权限先chmod,再改回去

  5. Windows上装点东西:设置 WSL 开发环境的最佳做法分步指南。 Windows Terminal 肯定还是要装,别的看着办。

ubuntu配置

  1. 换国内源

  2. 安装实用工具(可选):thefuck, ag, …

  3. 给WSL2加内存、处理器核心数等等。根据官方文档示例,新建或编辑WSL的全局配置文件内容如下(根据自己电脑的配置自行修改),文件路径为C:\Users\<YourUserName>\.wslconfig

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # Settings apply across all Linux distros running on WSL 2
    [wsl2]

    # Limits VM memory to use no more than 14 GB, this can be set as whole numbers using GB or MB
    memory=14GB

    # Sets the VM to use six virtual processors
    processors=6

    # Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
    # kernel=C:\\temp\\myCustomKernel

    # Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
    # kernelCommandLine = vsyscall=emulate

    # Sets amount of swap storage space to 14GB, default is 25% of available RAM
    swap=14GB

    # Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
    swapfile=E:\\temp\\wsl-swap.vhdx

    # Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
    pageReporting=false

    # Turn off default connection to bind WSL 2 localhost to Windows localhost
    localhostforwarding=true

    # Disables nested virtualization
    nestedVirtualization=false

    # Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
    debugConsole=true

    # Enable experimental features
    [experimental]
    sparseVhd=true

    # For network purpose. Only useful when windows version is 23H2, and wsl --update --pre-release
    # Currently only a windows insider of Release Preview Channel can use this..
    networkingMode=mirrored
    dnsTunneling=true
    firewall=true
    autoProxy=true

    其中swapfile设定的路径所在文件夹必须存在。编辑之后,让WSL2关机再重启才会生效。Powershell wsl --shutdown 关机

  1. 让WSL2能科学上网,eg. clash. 评论区也写了怎么一键配置和取消配置。

Rust

官网或直接一句话安装:

1
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

vscode扩展插件装上rust-analyzer。

C/C++

需要读一些项目代码,既安装了gcc又安装了clang。
目前vscode配上了扩展: call graph(LuoZhihao写的那个)。感觉效果差一些,准备摸索一下用doxygen + codeviz生成call graph。

conda+sage源码安装sage

自己编译sagemath真的很坑,很难装上,基本上得去google group请教sagemath的人。但是用anaconda安装还是不难的。

此处参考sagemath conda安装方法的’Using conda to provide all dependencies for the Sage library’章节

  1. 先把sage源码 git clone下来, checkout 到 master分支:
    1
    2
    3
    4
    5
    ORIG=https://github.com/sagemath/sage.git
    # git clone -c core.symlinks=true --branch develop --tags $ORIG
    git clone $ORIG
    cd sage
    git checkout master
  2. 找个合适地方下载conda。注意读LICENSE环节,然后全部选择yes
    1
    2
    curl -L -O https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-$(uname)-$(uname -m).sh
    sh Mambaforge-$(uname)-$(uname -m).sh
  3. 配置conda源为阿里源,据说清华源中科大源现在不好用了:配置说明
  4. conda install mamba
  5. 配置mamba源,类似conda源的配置:说明. 实际上直接把 .condarc 的拷一下就行. 然后也是 mamba clean -i
  6. 回到clone的sage文件夹,然后开始安装环境
    1
    2
    3
    # 可以把sage改成XXX,以后activate时 mamba activate XXX
    mamba env create --file src/environment-3.11.yml --name sage
    mamba activate sage
  7. 1
    2
    3
    ./bootstrap
    pip install --no-build-isolation -v -v --editable ./pkgs/sage-conf_conda ./pkgs/sage-setup
    pip install --no-build-isolation --config-settings editable_mode=compat -v -v --editable ./src
  8. 验证sagemath已安装
    1
    sage -c 'print(version())'
文章作者: 随缘(su1yu4n)
文章链接: https://su1yu4n.github.io/2022/10/23/WSL2 开发环境配置/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 随缘的博客