Sage 是根据 GNU 通用公共许可证 GPLv2+ 发布的开源数学软件,并包含具有兼容软件许可证的软件包。 全球各地的人们都为 Sage 的发展做出了贡献。完整文档可在线获取。
- 入门
- 支持的平台
- [Windows] 准备平台
- [macOS] 准备平台
- 从源代码构建的说明
- SageMath Docker 镜像
- 故障排除
- 为圣人做出贡献
- 目录布局
- 构建系统
- 搬迁
- 再分配
- 构建系统
- 附带软件的更改
那些不耐烦的人可以使用预构建的 Sage,可以从任何地方在线获取
无需本地安装。否则请继续阅读。
Sage 安装指南提供 了一个决策树,可指导您选择最适合您的安装类型。这包括从源代码构建、从包管理器获取 Sage、使用容器映像或在云中使用 Sage。
本自述文件包含从源代码构建 Sage 的独立说明。 它假设您已经克隆了 git 存储库或 以 tarball 的形式下载了源代码。
如果您有疑问或遇到问题,请随时向Sage 支持邮件列表发送电子邮件或在Ask Sage 问题与解答网站 上提问。
Sage 尝试支持所有主要的 Linux 发行版、最新版本的 macOS 和 Windows(使用适用于 Linux 或虚拟化的 Windows 子系统)。
有关特定 Sage 版本支持的平台的详细信息,请参阅此版本发布之旅的 可用性和安装帮助部分。
我们高度赞赏对 Sage 的贡献,修复了可移植性错误并帮助将 Sage 移植到新平台;请通过sage-devel 邮件列表告诉我们。
在 Windows 上运行 Sage 的首选方法是使用 Windows Subsystem for Linux (WSL)。按照 官方 WSL 安装指南 安装 Ubuntu(或其他 Linux 发行版)。确保为 WSL 分配足够的 RAM;已知 5GB 可以工作,而 2GB 可能不足以从源代码构建 Sage。然后适用于 Linux 中的所有安装说明。
作为替代方案,您还可以使用 Docker(见下文)或其他虚拟化解决方案在 Windows 上运行 Linux。
-
如果您的 Mac 使用 Apple Silicon(M1、M2、M3;arm64)架构,并且您通过从旧版 Mac 传输文件来设置 Mac,请确保该目录
/usr/local
不包含 Homebrew(或其他软件)的旧副本您可能已复制的 x86_64 架构。请注意,M1 的 Homebrew 安装在/opt/homebrew
,而不是/usr/local
. -
如果您想使用 conda,请参阅Sage 安装手册中有关 conda 的部分以获取指导。
-
否则,我们强烈建议使用https://brew.sh/中的 Homebrew(“macOS 缺少的包管理器”) ,它提供了
gfortran
编译器和许多库。 -
否则,如果您不想安装 Homebrew,则需要安装最新版本的 Xcode 命令行工具。打开终端窗口并运行
xcode-select --install
;然后在弹出的窗口中点击“安装”。如果 Xcode 命令行工具已安装,您可能需要输入 来检查是否需要更新softwareupdate -l
。
与许多其他软件包一样,Sage 是使用
./configure
,然后是make
.但是,我们强烈建议您阅读以下构建 Sage 的分步说明。
这些说明涵盖所有 Linux、macOS 和 WSL。
提供这些说明背景的更多详细信息可以在“从源代码安装”部分中找到。在安装指南中。
-
确定源/构建目录 (
SAGE_ROOT
):-
在个人计算机上,:envvar: 目录的任何子目录
HOME
都可以。 -
例如,您可以使用
SAGE_ROOT=~/sage/sage
,我们将使用它作为下面的运行示例。 -
您需要至少 10 GB 的可用磁盘空间。
-
源目录的完整路径不能包含空格。
-
开始构建后,您无法在不破坏内容的情况下移动源/构建目录。
-
您可能希望避免使用慢速文件系统,例如 网络文件系统 (NFS) 等。
-
[macOS] macOS 允许在不使用精确大小写的情况下更改目录。针对 macOS 进行编译时请注意这种便利性。更改为 :envvar: 时忽略精确的大写
SAGE_ROOT
可能会导致需要路径名中精确大写的依赖项出现构建错误。
-
-
使用以下命令克隆源
git
:-
要检查其
git
是否可用,请打开终端并在 shell 提示符 ($
) 下输入以下命令:$ git --version git version 2.42.0
确切的版本并不重要,但如果此命令出现错误,
git
请使用包管理器进行安装,使用以下命令之一:$ sudo pacman -S git # on Arch Linux $ sudo apt-get update && apt-get install git # on Debian/Ubuntu $ sudo yum install git # on Fedora/Redhat/CentOS $ sudo zypper install git # on openSUSE $ sudo xbps-install git # on Void Linux
-
SAGE_ROOT
创建应建立的目录:$ mkdir -p ~/sage $ cd ~/sage
-
克隆 Sage git 存储库:
$ git clone -c core.symlinks=true --filter blob:none \ --origin upstream --branch develop --tags \ https://github.com/sagemath/sage.git
此命令获取最新的开发版本。替换
--branch develop
为--branch master
选择最新的稳定版本。这将创建子目录
~/sage/sage
。 (有关详细信息,请参阅《Sage 开发人员指南》中的“设置 git”部分 和以下部分。) -
切换到创建的子目录:
$ cd sage
-
[Windows] Sage 源代码树包含符号链接,如果使用 Windows 行结尾而不是 UNIX 行结尾,则构建将无法工作。
因此建议(但不是必须)使用 WSL 版本的
git
.
-
-
安装系统包。
请参阅《Sage 安装手册》中有关从源代码安装的部分,以获取可以安装的系统软件包的编译。完成后,跳至步骤 7(引导)。
或者,遵循下面更细粒度的方法。
-
[Linux、WSL] 安装所需的最低构建先决条件:
-
编译器:
gcc
、gfortran
、g++
(支持从 8.4.0 到 13.x 的 GCC 版本以及最新版本的 Clang (LLVM))。 有关合适编译器的讨论,请参阅build/pkgs/gcc/SPKG.rst和 build/pkgs/gfortran/SPKG.rst 。 -
构建工具:GNU 、
make
GNU 、m4
(perl
包括ExtUtils::MakeMaker
)ranlib
、、、、、。有关更多详细信息,请参阅build/pkgs/_prereq/SPKG.rst 。git
tar
bc
-
Python 3.4 或更高版本,或 Python 2.7,完整安装包括
urllib
;但理想的版本是 3.9.x、3.10.x、3.11.x、3.12.x,这将避免构建 Sage 自己的 Python 3 副本。 有关更多详细信息,请参阅build/pkgs/python3/SPKG.rst 。
我们收集了提供这些构建先决条件的系统包列表。请参阅文件夹 build/pkgs/_prereq/distros中的文件 arch.txt、 debian.txt (也适用于 Ubuntu、Linux Mint 等)、 fedora.txt (也适用于 Red Hat、CentOS)、 opensuse.txt、 slackware.txt和 void.txt,或访问 https://doc.sagemath.org/html/en/reference/spkg/_prereq.html#spkg-prereq
-
-
可选:建议您安装 LaTeX 和 ImageMagick 工具(例如“转换”命令),因为某些绘图功能可以受益于它们。
-
[开发] 如果您计划进行 Sage 开发或以其他方式使用票据分支而不仅仅是发布,请安装引导先决条件。请参阅文件夹 build/pkgs/_bootstrap/distros中的文件,或访问 https://doc.sagemath.org/html/en/reference/spkg/_bootstrap.html#spkg-bootstrap
-
使用以下命令引导源树:
$ make configure
(如果未安装引导先决条件,此命令将下载提供预构建引导输出的包。)
-
清理构建环境。使用命令
$ env
检查当前环境变量,特别是
PATH
、PKG_CONFIG_PATH
、LD_LIBRARY_PATH
、CFLAGS
、CPPFLAGS
、CXXFLAGS
和LDFLAGS
(如果设置)。从这些(以冒号分隔的)环境变量中删除 Sage 不应将其用于其自己的构建的项目。特别是,如果项目引用了以前的 Sage 安装,请删除它们。
-
[WSL] 特别是,WSL 将许多项目从 Windows
PATH
变量导入到 Linux 环境中,这可能会导致令人困惑的构建错误。这些项目通常以 开头/mnt/c
。最好将它们从环境变量中全部删除。例如,您可以PATH
使用以下命令进行设置:$ export PATH=/usr/sbin/:/sbin/:/bin/:/usr/lib/wsl/lib/
-
[macOS with homebrew] 设置构建所需的环境变量:
$ source ./.homebrew-build-env
这是为了使一些 Homebrew 的软件包(所谓的 keg-only 软件包)可用于构建。运行一次以应用当前终端会话的建议。在从新的终端会话重建 Sage 之前或安装其他自制程序包之后,您可能需要重复此命令。 (您还可以将其添加到您的 shell 配置文件中,以便它在以后的所有会话中自动运行。)
-
-
(可选)决定安装前缀 (
SAGE_LOCAL
):-
传统上,默认情况下,Sage 安装到根目录为 的子目录层次结构中
SAGE_ROOT/local/
。 -
可以使用 进行更改
./configure --prefix=SAGE_LOCAL
,其中SAGE_LOCAL
是所需的安装前缀,该前缀必须可由用户写入。如果将此选项与 结合使用
--disable-editable
,则可以在完成构建过程后删除整个 Sage 源树。安装的SAGE_LOCAL
将是 Sage 的独立安装。 -
请注意,在 Sage 的构建过程中,
make
构建并 安装(make install
是无操作)。因此,安装层次结构必须可由用户写入。 -
如果您想安装到共享位置(例如
/usr/local/
.不要尝试将 Sage 构建为root
.
-
-
(可选)查看配置选项,其中包括许多可选包:
$ ./configure --help
Sage 开发人员值得注意的选项如下:
-
使用该选项
--config-cache
可以configure
保留配置值的磁盘缓存。当尝试进行包升级的票证分支时,这会带来很好的加速,这涉及自动重新运行配置步骤。 -
使用该选项
--enable-ccache
让 Sage 安装并使用可选包ccache
,该包预先配置为保留从源文件创建的对象文件的磁盘缓存。这可以在不同分支之间切换时提供极大的加速,但会占用磁盘空间。
-
-
可选,但强烈推荐:设置一些环境变量来自定义构建。
例如,
MAKE
环境变量控制是否并行运行多个作业。例如,在具有 4 个处理器的机器上,键入export MAKE="make -j4"
将配置构建脚本以使用 4 个作业执行 Sage 的并行编译。在一些功能强大的机器上,您甚至可能会考虑-j16
,因为使用比 CPU 核心更多的作业进行构建可以进一步加快速度。要减少构建期间的终端输出,请输入
export V=0
。 (V
代表“冗长”。)一些环境变量值得特别提及:
CC
、CXX
和FC
。这些定义编译器的变量可以在配置时设置,并且它们的值将被记录下来以供在构建时和运行时进一步使用。有关构建 Sage 的更多环境变量的深入讨论,请参阅安装指南。
-
键入
./configure
,然后键入您要使用的任何选项。例如,要gf2x
使用 Sage 提供的包构建 Sage,请使用./configure --with-system-gf2x=no
.成功运行结束后
./configure
,您可能会看到建议使用包管理器安装额外系统包的消息。对于大量的Sage 软件包,Sage 能够检测已安装的系统软件包是否适合与 Sage 一起使用;在这种情况下,Sage 不会从源构建另一个副本。
有时,消息会建议安装系统上已安装的软件包。请参阅之前的配置消息或文件
config.log
以获取说明。此外,这些消息可能会建议安装实际上不可用的软件包;只有您的发行版的最新版本才会包含所有这些推荐的软件包。 -
可选:如果您选择安装附加系统软件包,重新运行
./configure
将测试安装的版本是否可用于 Sage;如果是,这将减少 Sage 所需的编译时间和磁盘空间。包的使用可以通过./configure
参数进行调整(再次检查 的输出./configure --help
)。 -
类型
make
。就是这样!一切都是自动且非交互的。如果您遵循上述说明,特别是关于安装(步骤 11)的输出推荐的系统软件包
./configure
,以及关于并行构建(步骤 10),则在现代计算机上构建 Sage 需要不到一小时。 (否则,可能需要更长的时间。)该构建应该可以在所有完全支持的平台上正常运行。如果没有,我们想知道!
-
输入
./sage
来尝试一下。在 Sage 中,尝试例如2 + 2
,plot(x^2)
来plot3d(lambda x, y: x*y, (-1, 1), (-1, 1))
测试 2D 和 3D 中的简单计算和绘图。输入Ctrl+D或quit
退出 Sage。 -
可选:键入
make ptestlong
测试文档中的所有示例(超过 200,000 行输入!)——这需要 10 分钟到几个小时。如果出现 2 到 3 次失败,请不要太担心,但请随时将logs/ptestlong.log
包含错误的部分通过电子邮件发送到sage-support 邮件列表。如果出现大量失败,则表明您的构建存在严重问题。 -
HTML 版本的文档是 在 Sage 编译过程中构建的,并驻留在目录中
local/share/doc/sage/html/
。您可能想在浏览器中将其添加为书签。 -
可选:如果您想构建文档的 PDF 版本,请运行
make doc-pdf
(这需要安装 LaTeX)。 -
./sage --optional
可选:安装您感兴趣的可选软件包:通过键入或访问 软件包文档页面获取列表 。 -
可选:例如,
sage
在您的目录中创建指向已安装脚本的符号链接。这将允许您通过从任何地方键入来启动 Sage ,而不必键入完整路径或导航到 Sage 目录并键入。这可以通过运行来完成:PATH
/usr/local
sage
./sage
$ sudo ln -s $(./sage -sh -c 'ls $SAGE_ROOT/venv/bin/sage') /usr/local/bin
-
可选:将 SageMath 设置为现有 Jupyter 笔记本或 JupyterLab 安装中的 Jupyter 内核,如 Sage 安装手册中的“启动 SageMath”部分所述。
为了从 PyPI 在 Python 环境中安装 Sage,Sage 提供了
pip
可安装包sagemath-standard。
除非您需要将 Sage 安装到特定的现有环境中,否则我们建议创建并激活一个全新的虚拟环境,例如~/sage-venv/
:
$ python3 -m venv ~/sage-venv
$ source ~/sage-venv/bin/activate
作为第一个安装步骤,安装sage_conf,它在以下子目录中构建各种必备包~/.sage/
:
(sage-venv) $ python3 -m pip install -v sage_conf
安装成功后,驾驶室会提供各种Python包。您可以使用以下命令列出轮子:
(sage-venv) $ ls $(sage-config SAGE_SPKG_WHEELS)
如果这给出错误,指出sage-config
未找到,请检查该pip install
命令可能已打印的任何消息。您可能需要调整您的PATH
,例如:
$ export PATH="$(python3 -c 'import sysconfig; print(sysconfig.get_path("scripts", "posix_user"))'):$PATH"
现在安装驾驶室中的软件包和sage_setup 软件包,最后安装 Sage 库:
(sage-venv) $ python3 -m pip install $(sage-config SAGE_SPKG_WHEELS)/*.whl sage_setup
(sage-venv) $ python3 -m pip install --no-build-isolation -v sagemath-standard
上述说明安装了 Sage 的最新稳定版本。要安装最新的开发版本,请将开关添加--pre
到
python3 -m pip install
.
注意: PyPI 还有各种其他pip
可安装的软件包,其名称中带有“sage”一词。其中一些由 SageMath 项目维护,一些由 SageMath 用户出于各种目的提供,还有一些与 SageMath 完全无关。不要使用包
sage
和sagemath
。有关软件包的精选列表,请参阅
Sage 参考手册的软件包和功能一章。
SageMath 在 Docker Hub 上可用,可以通过以下方式下载:
docker pull sagemath/sagemath
目前,仅稳定版本保持最新。
如果您在构建 Sage 时遇到问题,请查看 Sage 安装指南,以及与您要安装的版本相对应的Sage 发布教程中特定于版本的 Sage 安装常见问题解答。
请随时在SageMath 论坛 或sage 支持邮件列表中寻求帮助。Sage 安装指南中的故障排除部分 提供 了有关提供哪些信息的说明,以便我们可以更有效地提供帮助。
如果您想为 Sage 做出贡献,我们强烈建议您阅读 开发人员指南。
Sage 具有用以下语言编写的重要组件:C/C++、Python、Cython、Common Lisp、Fortran 和一些 Perl。
简化的目录布局(仅重要文件/目录):
SAGE_ROOT Root directory (create by git clone)
├── build
│ └── pkgs Every package is a subdirectory here
│ ├── 4ti2/
│ …
│ └── zlib/
├── configure Top-level configure script
├── COPYING.txt Copyright information
├── pkgs Source trees of Python distribution packages
│ ├── sage-conf
│ │ ├── sage_conf.py
│ │ └── setup.py
│ ├── sage-docbuild
│ │ ├── sage_docbuild/
│ │ └── setup.py
│ ├── sage-setup
│ │ ├── sage_setup/
│ │ └── setup.py
│ ├── sage-sws2rst
│ │ ├── sage_sws2rst/
│ │ └── setup.py
│ └── sagemath-standard
│ ├── bin/
│ ├── sage -> ../../src/sage
│ └── setup.py
├── local (SAGE_LOCAL) Installation hierarchy for non-Python packages
│ ├── bin Executables
│ ├── include C/C++ headers
│ ├── lib Shared libraries, architecture-dependent data
│ ├── share Databases, architecture-independent data, docs
│ │ └── doc Viewable docs of Sage and of some components
│ └── var
│ ├── lib/sage
│ │ ├── installed/
│ │ │ Records of installed non-Python packages
│ │ ├── scripts/ Scripts for uninstalling installed packages
│ │ └── venv-python3.9 (SAGE_VENV)
│ │ │ Installation hierarchy (virtual environment)
│ │ │ for Python packages
│ │ ├── bin/ Executables and installed scripts
│ │ ├── lib/python3.9/site-packages/
│ │ │ Python modules/packages are installed here
│ │ └── var/lib/sage/
│ │ └── wheels/
│ │ Python wheels for all installed Python packages
│ │
│ └── tmp/sage/ Temporary files when building Sage
├── logs
│ ├── install.log Full install log
│ └── pkgs Build logs of individual packages
│ ├── alabaster-0.7.12.log
│ …
│ └── zlib-1.2.11.log
├── m4 M4 macros for generating the configure script
│ └── *.m4
├── Makefile Running "make" uses this file
├── prefix -> SAGE_LOCAL Convenience symlink to the installation tree
├── README.md This file
├── sage Script to start Sage
├── src Monolithic Sage library source tree
│ ├── bin/ Scripts that Sage uses internally
│ ├── doc/ Sage documentation sources
│ └── sage/ The Sage library source code
├── upstream Source tarballs of packages
│ ├── Babel-2.9.1.tar.gz
│ …
│ └── zlib-1.2.11.tar.gz
├── venv -> SAGE_VENV Convenience symlink to the virtual environment
└── VERSION.txt
有关更多详细信息,请参阅我们的开发人员指南。
这是 Sage 软件发行版构建系统的简要总结。完整的 Sage 系统有两个组件——Sage Python 库及其相关的用户界面,以及 Sage 主要依赖项的较大软件分发版(对于用户系统未提供的那些依赖项)。
Sage 的 Python 库是使用setup.py
脚本构建和安装的,这是 Python 包的标准(Sage 的setup.py
库很重要,但并不罕见)。
构建系统的其余部分大部分涉及以正确的相互关系顺序构建 Sage 的所有依赖项。 Sage 包含的依赖项称为 SPKG(即“Sage 包”)并列在 下build/pkgs
。
Makefile
Sage 构建系统的主要入口点是源树根部的顶层。与大多数使用 autoconf 的普通项目不同(Sage 也这样做,如下所述),它Makefile
不会生成。相反,它包含一些高级目标和与引导系统相关的目标。尽管如此,我们仍然make <target>
从源代码树的根开始运行——顶层中未明确定义的目标Makefile
将传递到build/make/Makefile
.
后者build/make/Makefile
是由 autoconf 生成的
configure
脚本使用 中的模板生成的build/make/Makefile.in
。这包括构建 Sage 库本身的规则 ( make sagelib
),以及构建和安装每个 Sage 依赖项的规则 (例如make gf2x
)。
如果脚本configure
本身尚未构建,则可以通过运行脚本来生成bootstrap
(后者需要安装GNU 自动工具)。顶层Makefile
也会自动处理这个问题。
总而言之,make python3
在源树的顶层运行命令如下所示:
make python3
./bootstrap
如果configure
需要更新则运行-
如果需要更新,
./configure
请使用任何先前配置的选项运行build/make/Makefile
- 将目录更改为
build/make
并运行install
脚本 - 这只不过是运行的前端make -f build/make/Makefile python3
,它设置一些必要的环境变量并记录一些信息 build/make/Makefile
包含实际的构建规则python3
;这包括python3
首先构建所有的依赖项(以及它们的依赖项,递归地);实际的软件包安装是通过sage-spkg
程序执行的
构建 Sage 后不支持移动SAGE_ROOT
或目录。SAGE_LOCAL
如果您确实移动了目录,则必须make distclean
从头开始重新运行并构建 Sage。
对于系统范围的安装,您必须将 Sage 构建为“普通”用户,然后以 root 身份可以更改权限。请参阅安装指南 了解更多信息。
您的本地 Sage 安装几乎与任何“开发人员”安装完全相同。您可以对文档、源代码等进行更改,并像我们一样轻松地将完整结果打包以便重新分发。
-
要使用当前安装的软件包制作二进制发行版,请访问sagemath/binary-pkg。
-
要制作您自己的 Sage 源 tarball,请输入:
$ make dist
结果放置在目录中
dist/
。
Sage 中包含的所有软件均受各自作者的版权保护,并根据与GPL 版本 3 或更高版本兼容的开源许可证发布。有关更多详细信息,请参阅COPYING.txt 。
源代码位于目录中未修改(尽可能)的 tarball 中
upstream/
。其余的描述、版本信息、补丁和构建脚本位于随附的
build/pkgs/<packagename>
目录中。该目录是 Sage git 存储库的一部分。
版权所有 (C) 2005-2024 Sage 开发团队