从源代码安装

从Sage开始 :wikipedia:`source code <Source_code>` 的主要优点是,您的安装将针对您的特定计算机进行优化,因此应该比二进制安装提供更好的性能和兼容性。

此外,它还为您提供了全面的开发能力:您完全可以更改Sage的任何部分或它所依赖的包,并重新编译修改后的部分。

请参阅该文件 README.md 在……里面 SAGE_ROOT 有关支持的平台和分步说明的信息。

以下各节提供了一些其他详细信息。大多数用户将不需要阅读它们。要从源代码构建Sage,可能需要熟悉Unix命令行的使用。

先决条件

磁盘空间和内存

您的计算机附带至少6 GB的可用磁盘空间。建议至少有2 GB的RAM,但您可以使用更少的内存(在这种情况下,请确保有一些交换空间)。

Linux系统包安装

我们建议您安装以下程序包,具体取决于您的发行版:

如果您希望进行Sage开发,我们建议您另外安装以下软件:

对于所有用户,我们建议您安装以下系统包,这些包提供附加功能,不能由Sage安装。特别是,这包括 :wikipedia:`LaTeX <LaTeX>` 以及相关工具。除了基本安装 TeX Live ,我们下面的系统包列表包括生成PDF格式的Sage文档所需的所有内容。用于将Jupyter笔记本转换为PDF,也是文档转换器 pandoc 是必要的。为了制作动画,Sage需要使用其中一个包 FFmpegImageMagick

除此之外,如果您不想让Sage构建您的操作系统可能提供的可选程序包,请参阅。上不断增加的这类套餐清单 :issue:`27330` ,安装:

MacOS必备软件

在MacOS系统上,您需要安装最新版本的 Command Line Tools 。它提供了上述所有要求。

运行命令 xcode-select --install 从终端窗口,并在弹出对话框中单击“Install”。

如果您已经安装了 Xcode (在撰写本文时,它可以在Mac App Store免费获得,或者通过https://developer.apple.com/downloads/获得,前提是您注册了苹果开发人员帐户),您也可以从那里安装命令行工具。

如果您尚未安装 Xcode 您可以通过相对较小的下载获得这些工具,但它确实需要注册。

  • 首先,你需要在https://developer.apple.com/register/.上注册为苹果开发者

  • 这样做之后,您应该可以在https://developer.apple.com/downloads/index.action?=command%20line%20tools上免费下载它

  • 或者,https://developer.apple.com/opensource/应该有一个指向命令行工具的链接。

MacOS程序包安装

如果您使用 Homebrew package manager ,您可以安装以下软件:

一些自制软件包是“仅限keg”安装的,这意味着它们在标准路径中不可用。要在构建Sage时使它们可访问,请运行::

$ source SAGE_ROOT/.homebrew-build-env

(替换 SAGE_ROOT 按Sage的主目录)。如果您希望设置在两个Shell会话之间保持不变,可以将类似这样的命令添加到您的Shell配置文件中。

如果您希望进行Sage开发,我们建议您另外安装以下软件:

对于所有用户,我们建议您安装以下系统软件包,这些软件包提供附加功能,不能由Sage安装:

一些额外的可选套餐由以下人员负责:

WSL必备条件

Ubuntu on Windows Subsystem for Linux(WSL)必备安装

参考 窗口 用于在Windows Subsystem for Linux(WSL)上安装Ubuntu。这些说明描述了Ubuntu的全新安装,Ubuntu是WSL中的默认发行版,但其他发行版或安装方法也应该有效。

从现在开始,请按照 Linux系统包安装 一节。强烈建议将Sage源文件放在Linux文件系统中,例如,放在 /home/username/sage 目录中,而不在Windows文件系统中(例如 /mnt/c/... )。

生成时出现WSL权限被拒绝错误 packaging 包装

您可能会遇到此类权限错误 "[Errno 13] Permission denied: 'build/bdist.linux-x86_64/wheel/<package>.dist-info'" 在.期间 make 。这通常来自Windows和Linux文件系统之间的权限冲突。要修复它,请使用以下命令在Linux文件系统中创建一个临时构建文件夹 mkdir -p ~/tmp/sage 并将其用于建筑 eval SAGE_BUILD_DIR="~/tmp/sage" make 。另请参阅 related Github issue 用于其他解决方法。

WSL安装后说明

安装完成后,您可能会对 WSL安装后步骤

其他平台

在Solaris上,您可以使用 pkgadd 和OpenSolaris上 ipf 安装必要的软件。

在其他系统上,请查看特定操作系统的文档。

关于使用CONDA的注解

如果您不希望sage使用conda,请停用conda(用于当前的Shell会话)。

  • 类型::

    $ conda deactivate
    
  • 重复该命令,直到 conda info 显示::

    $ conda info
    
    active environment : None
    ...
    

然后,将使用操作系统提供的编译器或其自己的编译器构建SageMath。

Tcl/Tk(和系统的Python)

如果您想使用 Tcl/Tk 库,并且您将使用您的操作系统的Python3作为Sage的Python,您只需安装其 Tkinter 模块。在Linux系统上,它通常由 python3-tk 或类似名称的(例如 python3-tkinter )包,可以使用以下命令安装:

$ sudo apt-get install python3-tk

或类似的命令。

TCL/Tk(以及Sage自己的Python)

如果您想使用 Tcl/Tk 库,并且您将从源代码构建Sage的Python,您需要安装这些库以及相应的头文件。在Linux系统上,这些通常由 tktk-dev (或 tk-devel )可以使用以下方式安装的程序包:

$ sudo apt-get install tk tk-dev

或类似的命令。

然后,Sage的Python将自动识别您的系统安装的TCL/Tk。如果您首先安装了Sage,也不会失去一切。您只需要重新构建Sage的Python和依赖它的Sage的任何部分::

$ sage -f python3  # rebuild Python3
$ make             # rebuild components of Sage depending on Python

如上所述安装TclTk开发库之后。

如果

sage: import _tkinter
sage: import Tkinter

不会引发 ImportError ,然后它就奏效了。

安装步骤

  1. 按照文件中的步骤进行操作 README.md 在……里面 SAGE_ROOT

  2. 如果您希望为在没有足够Internet连接的环境中构建Sage做好准备:

    • 跑完后 configure ,您可以使用 make download 在构建之前强制下载包。在此之后,包位于子目录中 upstream

    • 或者,您可以从Sage项目的任何稳定版本下载一个自包含的版本tarball,而不是克隆git存储库 GitHub Releases 。使用名为的文件 sage-x.y.tar.gz (从Sage 10.2起为1.25 GB),其中包含一个预填充子目录 upstream

      下载源码tarball之后 sage-x.y.tar.gz 放到一个目录中 ~/sage/ **

      $ cd ~/sage/
      $ tar xf sage-x.y.tar.gz  # adapt x.y; takes a while
      

      这将创建子目录 sage-x.y 。现在更改为::

      $ cd sage-x.y/  # adapt x.y
      

      备注

      在Windows上,从WSL解压源代码树至关重要 bash 使用WSL tar 实用工具,并且不使用其他Windows工具(包括mingw)。

      这是因为Sage源代码树包含符号链接,如果使用Windows行结束而不是UNIX行结束,构建将无法工作。

    • 圣人之镜也为所有人提供了这样的自给自足的油罐 stable releases 另外,对于所有人 development releases

  3. 附加备注:您不需要以超级用户身份登录,因为文件不会在 SAGE_ROOT 目录。事实上, it is inadvisable to build Sage as root ,因为只有在绝对必要的情况下才应使用超级用户帐户,并且如果您以超级用户身份登录,键入错误的命令可能会产生严重后果。

    打字 make 对每个Sage的依赖项执行常规步骤,但会将所有生成的文件安装到安装前缀中。根据使用时间和系统架构的不同,从源代码构建Sage可能需要几十分钟到几个小时。在速度非常慢的硬件上,构建Sage甚至可能需要几天时间。

    Sage的每个组件都有自己的构建日志,保存在 SAGE_ROOT/logs/pkgs 。如果Sage的构建失败,您将看到一条消息,指出哪个包(S)构建失败,以及每个失败包的日志文件的位置。如果发生这种情况,则将这些日志文件(S)的内容粘贴到https://groups.google.com/group/sage-support.上的Sage支持新闻组如果日志文件非常大(而且很多都很大),那么不要粘贴整个文件,但要确保包含任何错误消息。包括操作系统的类型(Linux、MacOS、Solaris、OpenSolaris或任何其他系统)、该操作系统的版本和发布日期以及您正在使用的Sage副本的版本也会很有帮助。(对错误报告没有正式要求--只需发送它们;我们非常感激。)

    看见 制定目标 对于一些目标, make 命令和 环境变量 有关Sage使用的有用环境变量的其他信息。

  4. 要启动Sage,您现在只需在Sage的主目录中键入::

    $ ./sage
    

    您应该会看到SAGE提示符,如下所示:

    $ sage
    ┌────────────────────────────────────────────────────────────────────┐
    │ SageMath version 8.8, Release Date: 2019-06-26                     │
    │ Using Python 3.10.4. Type "help()" for help.                       │
    └────────────────────────────────────────────────────────────────────┘
    sage:
    

    请注意,当Sage第一次启动时,它应该花费不到一分钟的时间,但如果文件系统很慢或繁忙,可能需要几分钟的时间。由于Sage打开了大量文件,因此如果可能的话,最好在快速文件系统上安装Sage。

    只要成功启动,就可以测试许多组件是否正确构建。请注意,这应该已经在构建过程中进行了自动测试。如果上面没有显示(例如,如果您得到大量回溯),请报告问题,例如,在https://groups.google.com/group/sage-support.

    在Sage启动后,尝试一个简单的命令:

    sage: 2 + 2
    4
    

    或者稍微复杂一点的东西:

    sage: factor(2005)
    5 * 401
    
  5. 可选,但强烈建议您输入以下命令来测试安装 ./sage --testall 。这将运行源代码中的大多数示例,并确保它们完全按照声明的方式运行。要测试所有示例,请使用 ./sage --testall --optional=all --long ;这将运行耗时较长的示例,以及那些依赖于可选程序包和软件的示例,例如MATHEMICAL或MAGMA。因此,一些(可选的)例子可能会失败。

    或者,从内部 $SAGE_ROOT ,你可以打字 make test (分别 make ptest )以顺序(分别并行)运行所有标准测试代码。

    测试Sage库可能需要半个小时到几个小时,具体取决于您的硬件。在缓慢的硬件构建和测试中,Sage甚至可能需要几天时间!

  6. 可选:检查可用的任何其他软件的接口。请注意,每个接口使用特定名称调用其对应的程序: Mathematica 通过调用 mathMaple 通过呼叫 maple 更改此名称或执行其他定制的最简单方法是在中创建重定向脚本 $SAGE_ROOT/local/bin 。Sage将此目录插入到您的 PATH 因此,您的脚本可能需要使用绝对路径以避免调用自身;此外,您的脚本应该传递其所有参数。例如,一个 maple 脚本可能如下所示:

    #!/bin/sh
    
    exec /etc/maple10.2/maple.tty "$@"
    
  7. 可选:有不同的可能性可以使使用Sage变得更容易:

    • 从创建符号链接 /usr/local/bin/sage (或您的 PATH )至 $SAGE_ROOT/sage **

      $ ln -s /path/to/sage_root/sage /usr/local/bin/sage
      

      现在只需输入 sage 从任何目录应该足以运行Sage。

    • 复制 $SAGE_ROOT/sage 添加到您的 PATH 。如果执行此操作,请确保编辑以下行:

      #SAGE_ROOT=/path/to/sage-version
      

      在复制的开始处 sage 根据那里给出的方向编写脚本,如下所示:

      SAGE_ROOT=<SAGE_ROOT>
      

      (请注意,您必须更改 <SAGE_ROOT> 上图!)。最好只编辑副本,而不是原件。

    • KDE 用户,创建一个bash脚本 sage 包含行(请注意,您必须更改 <SAGE_ROOT> 下图!):

      #!/usr/bin/env bash
      
      konsole -T "sage" -e <SAGE_ROOT>/sage
      

      使其可执行::

      $ chmod a+x sage
      

      并把它放在你的 PATH

      你也可以创建一个KDE桌面图标,命令如下(在图标属性的应用程序选项卡下,你可以在图标上点击鼠标右键)。

    • 在Linux和MacOS系统上,您可以为 $SAGE_ROOT/sage 。例如,在您的 .bashrc 文件:

      alias sage=<SAGE_ROOT>/sage
      

      (请注意,您必须更改 <SAGE_ROOT> (上图!)完成此操作后,退出终端仿真器并重新启动它。现在正在打字 sage 在您的终端内,仿真器应该启动Sage。

  8. 可选:安装可选的Sage包和数据库。看见 the list of optional packages in the reference manual 有关详细信息,或键入 sage --optional (这需要互联网连接)。

    然后键入 sage -i <package-name> 要自动下载并安装给定的包,请执行以下操作。

  9. 玩得开心!发现一些令人惊叹的猜想!

制定目标

要从头开始构建Sage,通常需要执行 make 在Sage的主目录中构建Sage及其 :wikipedia:`HTML <HTML>` 文件。这个 make 命令非常聪明,所以如果您的Sage构建被中断,那么运行 make 再一次应该会让它从中断的地方重新开始。这个 make 还可以为命令提供选项,这些选项控制构建的内容和构建的方式:

  • make build 构建Sage:它编译所有的Sage包。它不构建文档。

  • make doc 构建Html格式的Sage文档。请注意,这需要首先构建Sage,因此它将自动运行 make build 第一。因此,运行 make doc 相当于运行 make

  • make doc-pdf 构建PDF格式的Sage文档。这还要求首先构建Sage,这样它就会自动运行 make build

  • make doc-html-no-plot builds Sage's documentation in html format but skips the inclusion of graphics auto-generated using the .. PLOT markup and the sphinx_plot function. This is primarily intended for use when producing certain binary distributions of Sage, to lower the size of the distribution. As of this writing (December 2014, Sage 6.5), there are only a few such plots, adding about 4M to the local/share/doc/sage/ directory. In the future, this may grow, of course. Note: after using this, if you want to build the documentation and include the pictures, you should run make doc-uninstall, because the presence, or lack, of pictures is cached in the documentation output. You can benefit from this no-plot feature with other make targets by doing export SAGE_DOCBUILD_OPTS+=' --no-plot'

  • make ptestmake ptestlong :这些应用程序运行Sage的测试套件。第一个版本跳过了需要几秒钟以上才能完成的测试,以及那些依赖于可选程序包或附加软件的测试。第二个版本包括前一个版本,因此需要更长的时间。中的“p” ptest 代表“并行”:测试是并行运行的。如果要连续运行测试,可以使用 make testmake testlong 取而代之的是。如果要根据可选的包和其他软件运行测试,可以使用 make testallmake ptestallmake testalllong ,或 make ptestalllong

  • make doc-uninstallmake doc-clean 每一个都会删除在构建文档时生成的几个目录。

  • make distclean 将Sage目录恢复到执行任何构建之前的状态:这几乎等同于删除Sage的整个主目录并重组源tarfile,唯一的区别是 .git 目录被保留,因此git分支不会被删除。

环境变量

Sage使用几个环境变量来控制其构建过程。大多数用户不需要设置其中的任何一个:构建过程在许多平台上都可以工作。(请注意,尽管该设置 MAKE (如下所述,可以显著加快这一过程。)构建Sage涉及构建许多包,每个包都有自己的编译说明。

控制构建过程的标准环境

以下是影响构建过程的一些更常用的变量:

MAKE

在构建Sage时,此变量的一个有用设置是 MAKE='make -jNUM' 去告诉那些 make 要运行的程序 NUM 在建筑时并行作业。请注意,某些Sage包可能不支持此变量。

有些人建议使用比CPU核心更多的作业,至少在系统负载不是很重并且有足够的RAM的情况下是这样;例如, NUM 可能是核心数量的1到1.5倍。此外, -l 选项设置负载限制: MAKE='make -j4 -l5.5 例如,告诉我们 make 尝试使用四个作业,但如果系统平均负载高于5.5,则不启动多个作业。请参阅GNU手册页面 makeCommand-line optionsParallel building

V

如果设置为 0 ,使构建静音。在每个Sage包的安装开始和结束时,只显示一行输出,而不是显示详细的编译日志。要查看更少的输出,请使用::

$ make -s V=0

(请注意,上面使用的是设置Makefile变量的语法。)

CC

虽然有些程序允许您使用它来指定C编译器, not every Sage package recognizes this 。如果GCC被安插在圣人体内, CC 被忽视了,塞奇的 gcc 而不是使用。

CPP

同样,这将为一些Sage包设置C预处理器,同样,使用它可能非常危险。如果GCC被安插在圣人体内, CPP 被忽视了,塞奇的 cpp 而不是使用。

CXX

同样,这将为一些Sage包设置C++编译器,同样,使用它可能非常危险。如果GCC被安插在圣人体内, CXX 被忽视了,塞奇的 g++ 而不是使用。

FC

同样,这将设置Fortran编译器。所有带有Fortran代码的Sage包都支持这一点。但是,由于历史原因,该值在初始 make 以及随后对 $FC 可能会被忽略(在这种情况下,将改用原始值)。如果GCC被安插在圣人体内, FC 被忽视了,塞奇的 gfortran 而不是使用。

CFLAGS
CXXFLAGS
FCFLAGS

分别用于C编译器、C++编译器和Fortran编译器的标志。同样的评论也适用于这些:设置它们可能会带来问题,因为它们在Sage包中并没有得到普遍的尊重。另请注意, export CFLAGS="" 并不具有与 unset CFLAGS 。后者更可取。

CPPFLAGS
LDFLAGS
CXXFLAG64
LDFLAG64
LD

类似的注释也适用于这些编译器和链接器标志。

控制构建过程的特定于SAGE的环境变量

SAGE_SERVER

Sage源代码tarball已经包含了所有标准包的源代码,也就是说,它允许您在没有互联网连接的情况下构建Sage。然而,Git存储库并不包含第三方程序包的源代码。相反,它将根据需要下载(注意:您可以运行 make download 在构建之前强制下载包)。

如果 SAGE_SERVER 则首先联系指定的Sage镜像。请注意,Sage将搜索该目录 SAGE_SERVER/spkg/upstream 用于上游的油球。

如果从此处下载文件失败或 SAGE_SERVER 如果未设置,将尝试从Sage GitHub存储库的发布资源下载文件。

如果同样失败,则联系Sage镜像网络以确定最近的镜像。

此操作顺序由目录中的文件定义 $SAGE_ROOT/.upstream.d

SAGE_NUM_THREADS

如果设置为一个数字,则在使用 sage -b 或并行对接测试 sage -t -p 0 ,最多只能使用此数量的线程。

如果未设置,则使用 MAKE (见上)或 MAKEFLAGS 环境变量。如果这些都没有指定工作的数量,

  • sage -b 仅使用一个线程

  • sage -t -p 0 使用默认的CPU核心数,最大为8,最小为2。

什么时候 sage -t -p 在GNU的控制下运行 make 则Sage将请求最多此数量的作业槽。

SAGE_CHECK

如果设置为 yes ,然后在构建过程中或手动安装包时,为每个具有测试套件的包运行测试套件,如果测试失败,则停止并返回错误。如果设置为 warn ,则在这种情况下只会打印警告。另请参阅 SAGE_CHECK_PACKAGES

SAGE_CHECK_PACKAGES

如果 SAGE_CHECK 设置为 yes ,则默认行为是为包含它们的所有SPKG运行测试套件。如果 SAGE_CHECK_PACKAGES 时,它应该是逗号分隔的字符串列表,格式为 package-name!package-name 。一个条目 package-name 表示为命名包运行测试套件,而不考虑 SAGE_CHECK 。一个条目 !package-name 意味着跳过其测试套件。因此,如果将其设置为 ppl,!python3 ,然后始终运行针对PPL的测试套件,但始终跳过针对Python3的测试套件。

备注

从Sage 9.1开始,针对Python2和3spkgs的测试套件在大多数平台上都失败了。因此,当该变量为空或未设置时,Sage使用缺省值 !python2,!python3

SAGE_INSTALL_GCC

Obsolete, do not use, to be removed

SAGE_INSTALL_CCACHE

默认情况下,Sage不会安装 ccache 但是,通过设置 SAGE_INSTALL_CCACHE=yes Sage将安装高速缓存。由于Sage分布相当大,因此最大缓存设置为4G。可以通过运行以下命令来更改此设置 sage -sh -c "ccache --max-size=SIZE" ,在哪里 SIZE 通过附加“G”、“M”或“K”以GB、MB或千字节为单位指定。

SAGE不包括ccache的源代码,因为它是一个可选的包。正因为如此,在为Sage构建缓存时需要有一个Internet连接,这样Sage就可以下载必要的源代码。

SAGE_DEBUG

控制调试支持。有三种不同的可能值:

  • 未设置(或设置为“yes”或“no”以外的任何值):使用调试符号构建二进制文件,但不构建特殊的调试构建。这是默认设置。这不会影响性能,只会使用额外的磁盘空间。

  • SAGE_DEBUG=nono 表示没有调试符号(即,no gcc -g ),这节省了一些磁盘空间。

  • SAGE_DEBUG=yes :如果可能的话,构建调试版本(特别是,在打开附加调试的情况下构建Python,而使用不同的内存管理器构建Single)。这些操作速度会明显变慢,但例如,可以更容易地定位内存分配问题。

与其使用 SAGE_DEBUG 用户可以使用配置 --enable-debug={no|symbols|yes}

SAGE_PROFILE

控制分析支持。如果将其设置为 yes ,在可能的情况下启用性能分析支持。请注意,始终可以使用Python级别的性能分析;该选项支持在Cython模块中进行性能分析。

SAGE_BUILD_DIR

默认行为是在的子目录中构建每个spkg $SAGE_ROOT/local/var/tmp/sage/build/ ;例如,内部版本7.27.0 ipython 在目录中 $SAGE_ROOT/local/var/tmp/sage/build/ipython-7.27.0/ 。如果设置了此变量,则内置 $SAGE_BUILD_DIR/ipython-7.27.0/ 取而代之的是。如果目录 $SAGE_BUILD_DIR 不存在,它是被创造出来的。在撰写本文时(Sage 4.8),当构建标准的Sage包时,此目录中需要1.5 GB的可用空间(如果 SAGE_KEEP_BUILT_SPKGS=yes --见下文);所需空间的确切大小因平台而异。例如,文件系统的块大小将影响使用的空间量,因为一些spkg包含许多小文件。

警告

变量 SAGE_BUILD_DIR 必须设置为用户具有写入权限的现有目录的完整路径名,或用户有权创建的不存在的目录的完整路径名。路径名必须包含 no spaces

SAGE_KEEP_BUILT_SPKGS

默认行为是删除每个构建目录--的相应子目录 $SAGE_ROOT/local/var/tmp/sage/build$SAGE_BUILD_DIR --在成功构建每个SPKG之后,如果安装SPKG出现错误,则保留它。将此变量设置为 yes 无论如何都要保留子目录。此外,如果您安装的spkg已经有一个相应的子目录,例如上一次构建时遗留下来的,那么默认行为是删除那个旧子目录。如果此变量设置为 yes ,则旧子目录被移到 $SAGE_ROOT/local/var/tmp/sage/build/old/ (或 $SAGE_BUILD_DIR/old ),覆盖任何已存在的同名文件或目录。

备注

在完全构建Sage之后(从4.8版开始),这些子目录总共可以占用高达6 GB的存储空间,具体取决于平台和文件系统的数据块大小。如果您始终将此变量设置为 yes ,它可能会占用更多的空间:重建每个SPKG将使用两倍的空间量,任何对SPKG的升级都将创建更多的目录,使用更多的空间。

备注

在现有的Sage安装中,运行 sage -i -s <package-name>sage -f -s <package-name> 安装SPKG <package-name> 并保存对应的构建目录,从而设置 SAGE_KEEP_BUILT_SPKGSyes 在从头开始构建Sage或安装单个spkg时,会模拟此行为。因此,您可以将此变量设置为 yes 不是使用 -s 旗帜为 sage -isage -f

SAGE_FAT_BINARY

要构建将在最大范围的目标CPU上运行的二进制文件,请将此变量设置为 yes 在构建Sage或使用进行配置之前 --enable-fat-binary 。这不会使二进制文件可重定位,它只是避免了较新的CPU指令集扩展。对于可重定位(=可移动到不同目录)二进制文件,您必须使用https://github.com/sagemath/binary-pkg

SAGE_SUDO

将此选项设置为 sudo -E 或写入安装层次结构所必需的任何其他命令前缀 (SAGE_LOCAL )由超级用户或其他用户拥有。请注意,此命令需要保留环境变量设置(纯 sudo 不会)。

并非所有SAGE程序包当前都支持 SAGE_SUDO

因此,当系统管理员希望安装支持以下功能的附加Sage包时,此环境变量最有用 SAGE_SUDO ,到根用户拥有的安装层次结构中 (SAGE_LOCAL )。

控制文档构建的环境变量

SAGE_DOCBUILD_OPTS

此变量的值作为参数传递给 sage --docbuild all htmlsage --docbuild all pdf 当你跑步的时候 makemake doc ,或 make doc-pdf 。例如:

  • 添加 --no-plot 设置为此变量以避免生成来自 .. PLOT 文档中的指令,

  • 添加 --no-preparsed-examples 只显示“Examples”块的原始Sage代码,使用准备好的纯Python版本隐藏制表符,或者

  • 添加 --include-tests-blocks 将所有“测试”块包括在参考手册中。

sage --docbuild help 以查看完整的选项列表。

SAGE_SPKG_INSTALL_DOCS

如果设置为 yes ,然后将特定于程序包的文档安装到 $SAGE_ROOT/local/share/doc/PACKAGE_NAME/ 当安装SPKG时。并非所有SPKG都支持此选项。一些SPKG还可能假设某些程序在系统上是可用的(例如, latexpdflatex )。

SAGE_USE_CDNS

如果设置为 yes ,然后使用CDN(内容分发网络)为HTML文档所需的脚本构建文档,例如 MathJax

SAGE_LIVE_DOC

如果设置为 yes ,然后构建实时Sage文档。如果 Make live 按钮,每个示例代码都会获得一个 CodeMirror 代码信元可通过 Thebe 。Thebe负责将代码发送到由 Binder 并显示输出结果。可以将Sage计算环境指定为Binder Repo或本地Jupyter服务器。环境变量 SAGE_JUPYTER_SERVER 用于此目的。

SAGE_JUPYTER_SERVER

将其设置为 binderbinder:repo 使用 repo 指定活页夹回收站或本地Jupyter服务器的URL。

  • binderSage's official Binder repo 。如果环境变量 SAGE_JUPYTER_SERVER 未设置。

  • binder:repo 使用指定活页夹回购 repo ,这是GitHub存储库名称,可以选择添加分支机构名称 / 分隔符。

  • 要使用本地Jupyter服务器而不是活页夹,则将URL设置为 SAGE_JUPYTER_SERVER 和环境变量的秘密令牌 SAGE_JUPYTER_SERVER_TOKEN ,如果默认令牌为 secret 使用的是。如果实时文档是用 SAGE_JUPYTER_SERVER=http://localhost:8889 ,通过以下方式运行本地Jupyter服务器

    ./sage --notebook=jupyterlab \
           --ServerApp.token='secret' \
           --ServerApp.allow_origin='null' \
           --ServerApp.disable_check_xsrf=true \
           --ServerApp.port=8889 \
           --ServerApp.open_browser=false
    

    在打开Sage文档网页之前。

处理特定SAGE包的环境变量

SAGE_MATPLOTLIB_GUI

如果设置为任何非空的值,则 no ,则Sage将在构建matplotlib包时尝试构建图形后端。

OPENBLAS_CONFIGURE

为添加到中的OpenBLAS包添加其他配置标志 make 指挥部。(见 :issue:`23272` )

PARI_CONFIGURE

使用它将额外的参数传递给pari的 Configure 脚本,例如指定图形支持(默认情况下禁用)。请参阅该文件 build/pkgs/pari/spkg-install.in 以获取更多信息。

SAGE_TUNE_PARI

如果是,则启用Pari自调优。请注意,这可能很耗时。如果将此变量设置为“yes”,您还将看到以下内容: WARNING: Tuning PARI/GP is unreliable. You may find your build of PARI fails, or PARI/GP does not work properly once built. We recommend to build this package with SAGE_CHECK="yes".

PARI_MAKEFLAGS

此变量的值作为参数传递给 $MAKE 编译pari时的命令。

处理对接测试的环境变量

SAGE_TIMEOUT

用于Sage的文档测试:在超时之前允许文档测试的秒数。如果未设置,则默认为300秒(5分钟)。

SAGE_TIMEOUT_LONG

用于Sage的文档测试:如果使用以下命令运行测试,则允许文档测试超时之前的秒数 sage -t --long 。如果未设置,则默认为1800秒(30分钟)。

SAGE_TEST_GLOBAL_ITER
SAGE_TEST_ITER

可以使用这些标记来代替传递标志 --global-iterations--file-iterations 分别设置为 sage -t 。事实上,只有在未设置标志的情况下才使用这些变量。跑 sage -t -h 有关这些标志的影响(以及这些变量)的更多信息。

在Sage环境中设置的环境变量

SAGE设置了其他一些环境变量。要了解Sage做了什么,最准确的方法是先运行 env 从Shell提示符中查看您设置了哪些环境变量。那就跑吧 sage --sh -c env 以查看Sage设置变量后的列表。(这将运行一个单独的Shell,执行Shell命令 env ,然后退出该Shell程序,因此在运行此命令后,您的设置将恢复。)或者,您可以仔细阅读Shell脚本 src/bin/sage-env

Sage也有一些类似环境的设置。其中一些对应于实际的环境变量,而另一些具有类似环境变量的名称,但仅在Sage运行时可用。要查看列表,请执行 sage.env.[TAB] 在运行Sage的时候。

在多用户环境中安装

本节讨论系统管理员如何在多用户计算机网络中安装单个Sage副本的问题。

  1. vbl.使用 sudo ,创建安装目录,例如, /opt/sage/sage-x.y 。我们把它称为 SAGE_LOCAL 在下面的说明中。请勿尝试安装到已包含其他软件的目录中,例如 /usr/local **

    $ sudo mkdir -p SAGE_LOCAL
    
  2. 使目录对您可写,所有人都可读::

    $ sudo chown $(id -un) SAGE_LOCAL
    $ sudo chmod 755 SAGE_LOCAL
    
  3. 按照中的说明构建并安装Sage README.md ,使用 configure 选择权 --prefix=SAGE_LOCAL

    不要使用 sudo 在此步骤中,构建Sage必须使用您的普通用户帐户完成。

  4. 或者,创建指向已安装的 sage 用户的目录中的脚本 PATH 例如, /usr/local/bin **

    $ sudo ln -s SAGE_LOCAL/bin/sage /usr/local/bin/sage
    
  5. 或者,更改权限以防止您自己意外更改安装:

    $ sudo chown -R root SAGE_LOCAL
    

升级系统和升级圣人

升级系统包时的注意事项

当从源代码安装Sage时,它将使用各种系统包;特别是,它将链接到系统提供的共享库。

系统的包管理器不跟踪使用共享库的应用程序。因此,不加区别地升级系统包可能会破坏Sage安装。

这始终可以通过完全重建来修复::

$ make distclean && make build

但这一耗时的步骤通常可以通过重新安装几个包来避免。该命令 make -j list-broken-packages 协助完成以下任务:

$ make -j list-broken-packages
make --no-print-directory auditwheel_or_delocate-no-deps
...
# Checking .../local/var/lib/sage/installed/bliss-0.73+debian-1+sage-2016-08-02.p0
...
Checking shared library file '.../local/lib/libumfpack.dylib'
Checking shared library file '.../local/var/tmp/sage/build/suitesparse-5.10.1/src/lib/libsliplu.1.0.2.dylib'
Error during installcheck of 'suitesparse': .../local/var/tmp/sage/build/suitesparse-5.10.1/src/lib/libsliplu.1.0.2.dylib
...
Uninstall broken packages by typing:

    make lcalc-SAGE_LOCAL-uninstall;
    make ratpoints-SAGE_LOCAL-uninstall;
    make r-SAGE_LOCAL-uninstall;
    make suitesparse-SAGE_LOCAL-uninstall;

运行建议的命令后,运行::

$ make build

使用单独的GIT工作树升级Sage

如果您有从源代码构建的Sage的正常安装,并且希望尝试新版本,我们强烈建议您使用单独的 git worktree ,这样当出现问题时,您可以继续使用现有安装。

从您使用时创建的目录开始 git clone ,也许 ~/sage/sage/ 。让我们通过查看隐藏的 .git 子目录。它将如下所示,但具体内容可能会有所不同:

[alice@localhost sage]$ ls .git
COMMIT_EDITMSG HEAD           branches       description    gitk.cache
index          logs           packed-refs    FETCH_HEAD     ORIG_HEAD
config         hooks          info           objects        refs

好的。现在,让我们看看哪些工作树已经存在::

[alice@localhost sage]$ git worktree list
/home/alice/sage/sage                     c0ffeefe10 [master]

我们只看到一行,即在您使用 git clone 。从现在起,我们将把这棵树称为“主工作树”。在目录旁边,您可以看到缩写的COMMIT SHA和我们所在分支的名称 (master )。

要试用新版本的Sage,让我们首先从主存储库中获取它::

[alice@localhost sage]$ git fetch upstream 10.3.beta8
From https://github.com/sagemath/sage
 * tag                     10.3.beta8 -> FETCH_HEAD

现在,让我们创建一个新的工作树。我们需要为它取一个名字;它应该以 worktree- 但在那之后可以是任何东西。经验表明,工作树通常会在以后重新调整用途,而且由于包含Sage安装的目录不能在不破坏其中安装的情况下移动,因此选择一个没有太大意义的容易记住的名称可能是一个好主意:

[alice@localhost sage]$ git worktree add worktree-purple FETCH_HEAD
Preparing worktree (detached HEAD 30b3d78fac)
Updating files: 100% (11191/11191), done.
HEAD is now at 30b3d78fac Updated SageMath version to 10.3.beta8

我们现在有一个子目录 worktree-purple 。这是一个“链接工作树”::

[alice@localhost sage]$ git worktree list
/home/alice/sage/sage                     c0ffeefe10 [master]
/home/alice/sage/sage/worktree-purple     30b3d78fac (detached HEAD)
[alice@localhost sage]$ cd worktree-purple
[alice@localhost worktree-purple]$ cat VERSION.txt
SageMath version 10.3.beta8, Release Date: 2024-02-13

以这种方式创建的所有工作树共享同一存储库,因此它们可以访问所有分支:

[alice@localhost worktree-purple]$ git --no-pager branch -v
* (no branch) 30b3d78fac Updated SageMath version to 10.3.beta8
+ master      2a9a4267f9 Updated SageMath version to 10.2

事实上, .git 这里不是一个目录,而是一个隐藏文件::

[alice@localhost worktree-purple]$ ls -l .git
-rw-r--r--  1 alice  staff  59 Feb 20 18:16 .git

在新的工作树中,我们现在从头开始构建Sage。这完全独立于主工作树中的现有工作安装,并且不会中断。

我们将再次参考文件中的分步说明 README.md 。我们的工作树 worktree-purpleSAGE_ROOT 为了这个目的。

我们可以在工作树之间毫无顾虑地共享的一件事是目录 upstream ,Sage在那里缓存下载的包存档。要使新工作树与主工作树共享,让我们创建一个符号链接。这是一个可选步骤,可避免重新下载您已有的文件:

[alice@localhost worktree-purple]$ ln -s ../upstream/ .

现在,让我们从步骤::开始构建Sage

[alice@localhost worktree-purple]$ make configure

请参阅该文件 README.md 用于以下步骤。