前言

由于懒人安装在windows11上面,最高只能获取到Sagemath9.3的版本,在wsl2+ubuntu22.04上面最新的也才sagemath9.5好像,不会升级,有些exp跑不了,遂安装了Sagemath10.x版本

在网上找了一圈,发现都没有教程是使用WSL2+ubuntu22.04+sagemath10.x的,很多都是在Arch Linux里面装的

特此,安装好了,可以运行了,写下了这篇博客

闲来无事,去敲打了一下Kimi

SageMath 10.x 版本推荐使用 Arch Linux 的原因主要有以下几点:
维护良好且最新的SageMath包:从Sage 10.2开始,Arch Linux 提供了维护良好且最新的SageMath包,这意味着用户可以更容易地获得最新版本的SageMath,以及及时的安全更新和功能改进。
兼容性和支持:Arch Linux 对于 SageMath 的支持较好,社区活跃,能够及时解决与SageMath 相关的兼容性问题
滚动更新模型:Arch Linux 采用滚动更新模型,这意味着系统和软件包始终保持最新状态,这对于科研和开发人员来说是一个很大的优势,因为他们可以快速获得最新的软件和库

用户推荐:有用户因为个人使用体验良好而推荐在 Arch Linux 下安装 SageMath。他们可能觉得在 Arch Linux 下使用 SageMath 更为方便,尤其是在 WSL2 环境下。
从源代码安装的便利性:Arch Linux 的文档中提到,Sage源代码树包含符号链接,如果使用Windows行结束而不是UNIX行结束,构建将无法工作。这表明在Arch Linux(一个UNIX-like系统)上从源代码安装SageMath更为便利

包管理器支持:SageMath 可以从各种发行版获得,并且可以由包管理器安装。Arch Linux 的包管理器 pacman 使得安装和更新 SageMath 变得简单

综上所述,Arch Linux 提供了最新的SageMath包、良好的社区支持、滚动更新模型以及从源代码安装的便利性,这些因素共同使得它成为运行 SageMath 10.x 版本的推荐选择

我的评价是,Arch Linux能用最新版!
本来是想参考师兄的,发现还是做不到啊,死在了conda上,原因未知

安装wsl2+Arch Linux

wsl2的安装的话,参考网上的教程,一大堆

然后,在微软商城下载Arch WSL,打开之后就是用户名密码的配置
非默认系统的情况下,wsl -d Arch进入Arch Linux

wsl --list可以看到当前有什么适用于 Linux 的 Windows 子系统分发
设为默认子系统,可以将Arch换成别的,比如Ubuntu-22.04
wsl --set-default Arch

配置pacman

(很强大的包管理器)
配置pacman镜像源,也就是换源(因为自身的源太慢了,或者因为是国外的,用不了,得换成国内的镜像源,比如阿里源、清华源等)
sudo su进入root模式
vim /etc/pacman.d/mirrorlist
在顶部增加

Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = http://repo.archlinuxcn.org/$arch
Server = http://mirrors.163.com/archlinux-cn/$arch
Server = https://mirrors.aliyun.com/archlinuxcn/$arch

更新系统,输入pacman -Syu,不知道梯子有没有影响(有时候开梯子很慢),看情况是否把梯子关闭吧

配置pacman key,输入以下命令

pacman-key --init
pacman-key --populate
pacman -Sy archlinux-keyring

更新系统pacman -Syu,为什么这里又更新呢,因为这一步是必须的,上一步如果配置pacman key出现网络问题,更新系统就能解决,如果没有就不用更新系统了

如果源用不了(换了源之后的情况),比如Could not resolve host,可能是DNS出了点问题(?),经验告诉我是这样的,vim /etc/resolv.conf,增加nameserver 8.8.8.8,这个是谷歌的DNS服务器,也可以再加多一个nameserver 114.114.114.114,可以把原来的那个本地的删了,应该没有什么问题()

出现了个问题,在Arch Linux里面配置禁止重启自动更新的话是有问题的(同样的操作在ubuntu是没有任何问题的),表现为/etc/resolv.conf文件不存在。。。所以在Arch Linux里面就不要配置这个了,有问题再加谷歌的DNS服务器

配置archlinuxcn镜像源,vim /etc/pacman.conf,增加以下内容

[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

安装archlinuxcnkeypacman -Sy archlinuxcn-keyring

这两个key吧,我也不知道有没有配置成功,输入命令之后好像没反应,总感觉没有成功一样的(?)

继续安装后面的sage,完成之后既然没有出现问题,那就不管它了

安装sage

sudo pacman -Sy sagemath
请耐心耐心耐心等待,好几个G呢
运行sage,看看是否安装成功

可以看到都是最新版,这下好玩了
如果需要管理sage,它的文件路径是Arch\usr\lib\python3.12\site-packages\sage

安装JupyterLab(推荐)

sudo pacman -S jupyterlab

在JupyterLab中启动Sage

sage -n jupyterlab --allow-root
按道理来说不指定浏览器,你点击它之后会自动跳到默认浏览器的,但是我这里跳到了Edge浏览器,不是我默认的火狐浏览器

也懒得改了,直接浏览器输入http://localhost:8888/lab
通常我们是不记指令的,那么我们来搞一个bash脚本快速启动,其实就是把这条指令丢进去
在工作目录下,比如我的/mnt/d/desktop

sudo su
vim sage.sh
# 输入以下两行的内容

#!/bin/bash
sage -n jupyterlab --allow-root

保存退出之后

# 赋予执行权限
chmod +x sage.sh
# 启动
./sage.sh

所以,平时我们需要使用sagemath的时候,在我们的工作目录下面./sage.sh即可启动

导入一些库

# sudo pacman -S python-<package_name> [python-<package_name>]
# 温馨提示:有的库没法安装是因为Arch里边没有而已,整个pip并用pip3安装即可
sudo pacman -S python-gmpy2 python-pycryptodome python-pwntools python-tqdm

后续还有python其他的库需要安装,可以参考上面的格式python-xxxx,也可以去整个pip,目前来说这些是够了的(只打ctf crypto方向,应该够),好像它内置就挺多了的

最舒服的就是,你在windows下面下载的pwntools,可能过了一阵子,等你又安装了别的什么什么东西,可能是一些依赖项冲突了,会导致你from pwn import *无法使用

所以我的解决方案是在Linux里面下载pwntools(环境隔绝),在Linux里面执行python脚本就好了,就像这里Arch Linuxpwntools就不会起冲突,可以正常使用

有的萌新可能第一次接触crypto方向的容器题,可能有点难上手,现提供一个板板

密码学方向环境题(通俗一点来说,就是打远程)的交互脚本模板如下

from pwn import *
# 连接服务
p = remote('host', port)
# 记录调试信息
context(arch='amd64', os='linux', log_level='debug')
# 接收服务器端的信息,识情况而选
a = p.recvline()
p.recvlines(n)
p.recvall()
p.recv(n) # 接收n字节
p.recvuntil(delim) # 一直接收,直到delim为止
# 发送信息给服务器端,识情况而选
p.send(string)
p.sendafter(string,payload) # 接收到string后发送
p.sendline(string) # 末尾有 \n
p.sendlineafter(string,payload)
# 保持交互
p.interactive()

需要注意的是接收和发送的数据类型都是字节数据,比如b'hello'

安装flatter(可以加速格基规约)

sudo pacman -S gmp mpfr eigen base-devel gcc git cmake
git clone https://github.com/keeganryan/flatter.git
cd flatter
mkdir build && cd ./build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make
sudo make install
sudo ldconfig #这个可以不输入

flatter -h查看是否能正常使用

代码补全功能

路径:Setting->Setting Editer->Code Completion

感觉函数解释是不需要的,有点碍眼睛

测试发现可运行

参考

https://shinichicun.top/posts/arch下的sage安装/
https://zhuanlan.zhihu.com/p/633782050