mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
1012 字
3 分钟
wsl上部署sagemath
2026-03-14

wsl上部署sagemath#

介绍#

SageMath 是一个开源的数学软件系统,内部整合了 NumPy、SciPy、Maxima、GAP 等数百个数学包,常用于处理密码学大数分解、椭圆曲线以及高等数学中的符号微积分和矩阵推导。

为何不建议直接在本地windows安装?#

  • 运行机制臃肿:SageMath 核心依赖类 Unix 环境,Windows 原生版本实际上是捆绑了一个庞大的 Cygwin 模拟层,导致安装包体积达到数 GB,且运行效率存在明显折损。
  • 生态集成困难:原生 Windows 版相对封闭,难以与现有的命令行工具链(如 Git、系统级 Python 脚本等)顺畅集成。

通过 Windows Subsystem for Linux (WSL) 运行原生的 Ubuntu 环境,可以无损调用 Linux 的执行效率,并与 Windows 宿主机文件系统互通。

基于 Conda 的部署#

在 Ubuntu 下不使用自带的 apt 安装或源码编译的原因:

  • apt 软件源中的 SageMath 版本通常严重滞后。
  • 源码编译需要手动解决数以百计的 C/C++ 和 Fortran 库依赖,耗时极长且容易因缺少系统级头文件而失败。

利用 Conda(推荐使用轻量级的 Miniforge)可以直接拉取 conda-forge 社区预编译的完整二进制包,免去编译过程并实现环境隔离。

部署步骤:#

  1. 下载并安装 Miniforge:
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

image-20260314202002401image-20260314202035979

按下回车键image-20260314202056185

输入yes

安装过程中按提示确认,完成后执行以下命令初始化环境变量:

source ~/.bashrc

创建并激活 SageMath 独立环境(以 Python 3.12 为例):

conda create -n sage sage python=3.12
conda activate sage

image-20260314193542148

当终端提示符前出现 (sage) 时,即表示部署完成。直接输入 sage 即可进入交互环境

日常使用#

在 WSL 中启动后,由于禁用了 base 环境自动激活,需手动进入 Sage 环境。

# 1. 激活 Sage 环境
conda activate sage
# 2. 检查环境状态(可选,确认左侧出现 (sage))
conda info --envs

交互式命令行#

# 启动交互式终端
sage
# 示例操作 (进入 sage: 提示符后)
# factor(2^128 - 1)
# exit() (退出)

适用于临时的数学计算、大数分解或验证某个公式。

  1. 进入环境conda activate sage
  2. 启动:输入 sage
  3. 操作:在 sage: 提示符后输入数学表达式。
    • 例如:factor(2^128 - 1)
  4. 退出:输入 exit 或按 Ctrl + D

终端编辑#

使用 Nano

  1. 新建/打开文件:输入 nano solve.py

  2. 编辑内容:在编辑器中输入代码。注意必须引入 Sage 库:

    from sage.all import *
    # 这里写逻辑,例如:
    print(is_prime(2**31 - 1))
  3. 保存:按 Ctrl + O,然后按 Enter 确认文件名。

  4. 退出:按 Ctrl + X

  5. 运行:在终端输入 sage solve.py

关于conda#

Conda 常用指令#

  • conda list:查看当前环境安装了哪些包。
  • conda install <package>:在当前环境安装新工具(如 requests)。
  • conda env remove -n sage:删除整个 sage 环境。

关于关闭“自动激活 base 环境”#

命令conda config --set auto_activate_base false

  • 保持系统纯净。WSL 启动时不会抢占系统路径,避免 Conda 的库与你进行的 xv6 或 C 语言底层实验产生冲突。
  • 增加操作成本。每次使用 Sage 必须手动 conda activate sage,否则系统找不到 sage 命令。
  • 不关闭的影响:终端始终显示 (base),系统优先使用 Conda 提供的 Python,这可能导致你在编译一些依赖特定系统库的 C/C++ 项目时报错。

结语#

我在windows和Ubuntu虚拟机还有wsl上都部署过sagemath,因为我本人不是crypto方向的,windows上因为只能使用老版本的限制很大,Ubuntu虚拟机放着就占我20多G,kali部署太复杂容易崩溃导致每次用完我就删,觉得以后不会用的,今天打suctf的时候一道ai安全又要用到,决定还是在wsl部署一个备用,这样占用少,操作简单,启动快,我认为是在windows电脑上最佳的方法

还有本篇博客的内容几乎都是ai写的,所以ai师傅放一作,感谢ai师傅让我蹭一个二作orz

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

wsl上部署sagemath
https://btop251.vercel.app/posts/ctf/wsl上部署sagemath/
作者
btop251
发布于
2026-03-14
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时