Sage 是根据 GNU 通用公共许可证 GPLv2+ 发布的开源数学软件,并包含具有兼容软件许可证的软件包。全球各地的人们都为 Sage 的发展做出了贡献。完整文档可在线获取。
那些不耐烦的人可以使用预构建的 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、M4;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
、 git
、 tar
、 bc
。有关更多详细信息,请参阅 build/pkgs/_prereq/SPKG.rst。
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
构建 Sage。
(可选)查看配置选项,其中包括许多可选包:
$ ./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
,然后输入您想要使用的任何选项。例如,要使用 Sage 提供的gf2x
包构建 Sage,请使用./configure --with-system-gf2x=no
。
成功运行./configure
后,您可能会看到建议使用包管理器安装额外系统包的消息。
对于大量 Sage 软件包,Sage 能够检测已安装的系统软件包是否适合与 Sage 一起使用;在这种情况下,Sage 不会从源构建另一个副本。
有时,消息会建议安装系统上已安装的软件包。请参阅之前的配置消息或文件config.log
以获取说明。此外,这些消息可能会建议安装实际上不可用的软件包;只有您的发行版的最新版本才会包含所有这些推荐的软件包。
可选:如果您选择安装附加系统软件包,则重新运行./configure
将测试安装的版本是否可用于 Sage;如果是,这将减少 Sage 所需的编译时间和磁盘空间。包的使用可以通过./configure
参数进行调整(再次检查./configure --help
的输出)。
键入make
。就是这样!一切都是自动且非交互的。
如果您遵循上述说明,特别是关于安装./configure
的输出推荐的系统软件包(步骤 11),以及关于并行构建(步骤 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
或访问软件包文档页面来获取列表。
可选:在PATH
的目录中创建指向已安装sage
脚本的符号链接,例如/usr/local
。这将允许您通过从任何地方键入sage
来启动 Sage,而不必键入完整路径或导航到 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 安装指南,以及与您要安装的版本相对应的发行教程中特定于版本的安装帮助。
请随时在 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
下。
Sage 构建系统的主要入口点是源代码树根部的顶级Makefile
。与大多数使用 autoconf 的普通项目(Sage 也这样做,如下所述)不同,不会生成此Makefile
。相反,它包含一些高级目标和与引导系统相关的目标。尽管如此,我们仍然从源代码树的根运行make
——顶级Makefile
中未明确定义的目标将传递到build/make/Makefile
下的另一个 Makefile 。
后者的build/make/Makefile
是由 autoconf 生成的configure
脚本使用build/make/Makefile.in
中的模板生成的。这包括构建 Sage 库本身( make sagelib
)以及构建和安装每个 Sage 依赖项(例如make gf2x
)的规则。
configure
脚本本身(如果尚未构建)可以通过运行bootstrap
脚本来生成(后者需要安装GNU 自动工具)。顶层Makefile
也会自动处理这个问题。
总而言之,在源代码树的顶层运行像make python3
这样的命令会像这样:
make python3
configure
需要更新,请运行./bootstrap
build/make/Makefile
需要更新,请使用任何先前配置的选项运行./configure
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。
源代码位于upstream/
目录中的未修改(尽可能)的 tarball 中。其余的描述、版本信息、补丁和构建脚本位于随附的build/pkgs/
目录中。该目录是 Sage git 存储库的一部分。
版权所有 (C) 2005-2024 Sage 开发团队
https://www.sagemath.org