一直在用sage9.3写题,这两次比赛发现9.3貌似不够用,sage源码已经到10.x的版本了,没找到教程,只能看着官方文档一步一步来,记录一下
我是部署到Ubuntu里的,Ubuntu的相关教程可以在博客上搜索一下,蛮多的
如果有师傅遇到Ubuntu剪切板问题的话,可以看下面的命令
sudo apt-get autoremove open-vm-tools #卸载旧版本的open-vm-tools
sudo apt-get update #更新软件源
sudo apt-get install open-vm-tools #安装 open-vm-tools
sudo apt-get install open-vm-tools-desktop #桌面组件
命令运行安装完成之后,需要重启Ubuntu虚拟机,然后就更改好了
我部署的是sage10.8版本的,Ubuntu系统版本是24.04.3
为了防止兼容问题出现,我是弄了一个新的Ubuntu系统,单独部署sage
首先,安装依赖项,即构建 SageMath 所需的 Ubuntu 软件包:只需打开终端并输入一行命令即可
命令如下(一次性复制完):
sudo apt install automake bc binutils bzip2 ca-certificates cliquer cmake curl ecl eclib-tools fflas-ffpack flintqs g++ gengetopt gfan gfortran git glpk-utils gmp-ecm lcalc libatomic-ops-dev libboost-dev libbraiding-dev libbz2-dev libcdd-dev libcdd-tools libcliquer-dev libcurl4-openssl-dev libec-dev libecm-dev libffi-dev libflint-dev libfreetype-dev libgc-dev libgd-dev libgf2x-dev libgiac-dev libgivaro-dev libglpk-dev libgmp-dev libgsl-dev libhomfly-dev libiml-dev liblfunction-dev liblrcalc-dev liblzma-dev libm4rie-dev libmpc-dev libmpfi-dev libmpfr-dev libncurses-dev libntl-dev libopenblas-dev libpari-dev libpcre3-dev libplanarity-dev libppl-dev libprimesieve-dev libpython3-dev libqhull-dev libreadline-dev librw-dev libsingular4-dev libsqlite3-dev libssl-dev libsuitesparse-dev libsymmetrica2-dev zlib1g-dev libzmq3-dev libzn-poly-dev m4 make nauty openssl palp pari-doc pari-elldata pari-galdata pari-galpol pari-gp2c pari-seadata patch perl pkg-config planarity ppl-dev python3-setuptools python3-venv r-base-dev r-cran-lattice singular sqlite3 sympow tachyon tar tox xcas xz-utils
为了在使用 SageMath 时获得更多功能(例如将 Jupyter notebook 导出为 pdf),可以安装一些额外的 Ubuntu 软件包,看个人意愿,不安装也不会影响使用
命令如下:
sudo apt install texlive-latex-extra texlive-xetex latexmk pandoc dvipng
然后可以下载 SageMath 10.8 源代码,并通过输入以下命令启动构建(从主目录或希望安装 SageMath 的目录)
命令如下:
git clone --branch master https://github.com/sagemath/sage.git #从github克隆
如果github克隆失败的话可以多试两次,再不行的话就换成国内的镜像源进行,我这里是直接github一次性克隆成功的,国内镜像源地址我就不贴了,有需要的师傅自行查找
cd sage #进入sage目录
#配置构建系统
make configure
./configure
MAKE="make -j8" make #开始编译
最后一条命令会在 8 个线程上并行启动构建(由 指定-j8);根据自己的 CPU 进行调整,通常可以选择 CPU 核心数的两倍作为线程
我这里是四个cpu核心,所以用-j8,同理,如果是3个就用-j6,两个就-j4,只要注意不超过-j12就可以了
如果编译过程中因为内存不足失败的话,可以扩容一下,适当减少线程数,改成4线程(-j4)或者2线程(-j2)
我编译的时候用了两个多小时,中间因为内存不足又扩容了一次,扩到了80g(内存容量根据个人,至少60g),后来转-j6线程了,swap我设置的是12g,编译好的话就是下面的界面
只要出现这个Sage build/upgrade complete!的提示就代表成功了

下一步创建符号链接,确保sage命令全局可用
先导航到你的sage目录下
cd ~/sage
创建符号链接(需要sudo权限)
sudo ln -sf $(pwd)/sage /usr/local/bin/sage
验证连接
ls -l /usr/local/bin/sage
和图片中的反馈一样就证明是连接成功了,文件名不同的自行修改

再测试一下sage命令是否全局可用
cd ~ # 回到家目录
sage --version #应该显示版本信息
sage -c "print(2+2)" # 简单计算测试

这就算是部署成功了
启动 Jupyter命令如下(会自动打开浏览器)
sage -n

如果浏览器没有自动打开的,查看输出信息,查找URL
http://localhost:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
复制URL到浏览器打开即可
内置的就正常使用就行了,使用方法我这里不再过多赘述
也可以选择启动JupyterLab,功能和Jupyter Notebook是一样的,只是界面更现代化一点
启动 JupyterLab命令如下
sage -n jupyterlab

sage源码部署完成了,前前后后大概也就三个小时多一点,原本以为会很麻烦,上手才发现蛮简单的
sage部署常见问题解决
1.sage -n报错:
# 尝试指定浏览器
sage -n --browser=firefox # 或 chrome
# 或
sage -n --no-browser
# 然后手动打开浏览器访问显示的URL
2.找不到内核:
# 重新注册内核
./sage -i jupyter
# 然后重试
3.端口被占用:
# 使用不同端口
sage -n --port=8889
如果有师傅部署过程中遇到别的问题可以在评论区留言讨论或者私信我,我看到会回复
如果文中有误,也欢迎各位师傅进行指正