从源代码安装

可能需要更熟悉计算机才能从 source code . 如果你拥有 pre-requisite tools ,这个过程应该是完全无痛的,基本上包括提取源tarball和输入 make . 从源代码构建Sage可能需要一段时间,尽管该过程是完全自动化的,不需要人工干预。

从源代码构建Sage的主要优点是,您的安装将针对您的特定计算机进行优化,因此应该比二进制安装提供更好的性能和兼容性。此外,它还提供了完整的开发功能:您可以完全更改Sage的任何部分或它所依赖的程序,并重新编译修改后的部分。

Download the Sage source code 或者从 git repository . 注意:如果要安装Sage for development,则应该按照中的说明进行操作 The Sage Developer's Guide .

也可以下载 binary distribution 对于某些操作系统,而不是从源代码处编译。

支持的平台

萨奇参加了所有主要比赛 Linux 分配, macOS ,和窗口(通过 Cygwin Linux层API)。

Windows的其他安装选项使用Windows Subsystem for Linux(WSL),或在 virtual machine .

先决条件

一般要求

本节详细介绍了所有平台所需的技术先决条件。另请参见 System-specific requirements 下面。

磁盘空间和内存

您的计算机至少有6 GB的可用磁盘空间。在这种情况下,至少要用2的内存交换空间。

命令行工具

除了标准 POSIX 公用事业和 bash shell,则必须在您的计算机上安装以下标准命令行开发工具:

  • A C/C++ compiler 由于SaGeMaTM在需要时建立了自己的GCC,所以支持各种C/C++编译器。许多GCC版本都可以工作,从4.8版(但我们建议至少5.1版)到最新版本。叮当也有用。另请参见 Using alternative compilers .

  • make :GNU make,3.80版或更高版本。建议使用3.82或更高版本。

  • m4 :GNU m4 1.4.2或更高版本(非GNU或旧版本也可能工作)。

  • perl :版本5.8.0或更高版本。

  • ar兰利布 :可以作为GNU binutils的一部分获得。

  • tar :GNU tar 1.17或更高版本,或BSD tar。

  • Python :Python 3、3.3或更高版本,或Python 2(已弃用)、2.6或更高版本。

其他版本的版本也许可以工作,但还没有经过测试。

类库

一些Sage组件(其中最著名的是Python) “如果操作系统可用,请使用OpenSSL库以提高性能” (引自Python许可证的字面意思)。试验证明:

  • Sage可以针对其他SSL库(至少GnuTLS)成功构建。

  • Sage的 -pip 当针对这些库编译Sage时,将禁用facility(用于安装一些Sage包)。

此外,Sage许可证中提到 hashlib 在ssl库中使用。

因此,建议使用OpenSSL库。然而,Sage的许可证似乎与OpenSSL许可证相冲突,这使得OpenSSL和Sage源代码的分发变得可疑。但是,Sage使用系统范围内安装的OpenSSL库没有问题。

无论如何,您必须在系统范围内安装所选库及其开发文件。

Fortran和编译器套件

Sage安装还需要一个Fortran编译器。它自动决定是Sage的GCC包,还是只包含Fortran编译器的部分 gfortran 需要安装。可以通过运行 ./configure 有选择权 --without-system-gcc .

我们正式支持gfortran GNU Compiler Collection (GCC) . 如果C和C++编译器也来自那里(即GCC和G++),它们的版本应该匹配。或者,可以使用C和C++编译器从 Clang: a C language family frontend for LLVM ,从而匹配了clang、clang++,以及最新的gfortran。(Flang(或其他基于LLVM的Fortran编译器)不受官方支持,但是可以使用Flang构建Sage,需要额外努力来设置各种标志;这项工作目前正在进行中(2019年5月))。

因此,如果您计划使用自己的GCC编译器,请确保它们的版本匹配。

若要强制使用特定编译器,请设置环境变量 CCCXXFC (分别为C、C++和FORTRAN编译器)到期望值,然后运行 ./configure . 例如, ./configure CC=clang CXX=clang++ FC=gfortran 将配置SAGE用Clang C/C++编译器和FORTRAN编译器编译 gfortran .

或者,SAGE包含GCC包,因此当生成系统检测到需要时,将构建C、C++和FORTRAN编译器,例如非GCC编译器,或者已知编译错误的SAGE组件的GCC编译器的版本,或者仅仅是缺少的Fortran编译器。在任何情况下,至少需要一个C/C++编译器来构建GCC包,并且它的先决条件可以在它提供的编译器之前使用。

请注意,您始终可以通过配置选项覆盖此行为 --without-system-gcc--with-system-gcc使用替代编译器 .

旧的汇编程序有一些已知的问题,尤其是在构建 ecmfflas_ffpack 包装。您应该确保您的汇编程序理解处理器的所有指令。在Linux上,这意味着您需要 binutils ;在macOS上,您需要一个最新版本的Xcode。

其他注记

在提取Sage tarball之后,子目录 upstream 包含Sage所依赖的所有内容的源分布。如果从git存储库克隆,上游tarball将作为Sage安装过程的一部分进行下载、验证和缓存。我们强调所有这些软件都包含在Sage中,因此您不必担心自己下载和安装这些软件包中的任何一个(例如Python)。

当Sage安装程序运行时,它将检查您是否具备以上列出的每个先决条件,并通知您任何丢失的或不合适的版本。

系统特定要求

在macOS上,需要各种开发工具,这些工具可能需要在苹果的开发者网站上注册;请参阅 macOS先决条件安装 .

在Redhat派生的系统上,默认情况下并没有安装所有perl组件,您可能需要安装 perl-ExtUtils-MakeMaker 包裹。

在Cygwin上 lapackliblapack-devel 由于默认情况下不构建ATLAS的Sage包,因此需要包来提供ATLAS支持。

安装先决条件

例如,检查是否安装了上述必备组件 perl 类型:

$ command -v perl

或:

$ which perl

在命令行上。如果它给出错误(或不返回任何内容),则 perl 未安装,或已安装但未在 PATH .

macOS先决条件安装

在macOS系统上,您需要 Command Line Tools . 它提供了上述所有要求。

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

  • 使用OSX Mavericks或Yosemite,运行命令 xcode-select --install 从终端窗口中,单击弹出对话框中的“安装”。

  • 使用OSX Mountain Lion或更早版本,运行Xcode,打开它的“Downloads”首选项窗格,然后从那里安装命令行工具。

  • 在Lion之前的macOS系统上,命令行工具不能单独下载,您必须安装支持您的系统版本的完整Xcode。

如果尚未安装 Xcode 您可以下载这些工具,但需要注册。

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

  • 这样做之后,您应该可以在https://developer.apple.com/downloads/index.action?=命令%20line%20tools

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

Cygwin先决条件安装

Sage只能在Cygwin的64位版本上构建。看到了吗 README.md 获取在Cygwin上构建Sage的最新说明。

虽然可以使用Cygwin图形安装程序安装Sage的依赖项,但建议安装 apt-cyg 命令行程序包安装程序,用于这些指令的其余部分。跑 apt-cyg ,您至少必须已安装(使用图形安装程序)以下软件包:

bzip2 coreutils gawk gzip tar wget

除了 wget 在安装Cygwin时,其中大多数都包含在默认包选择中。然后,安装 apt-cyg 运行::

$ curl -OL https://rawgit.com/transcode-open/apt-cyg/master/apt-cyg
$ install apt-cyg /usr/local/bin
$ rm -f apt-cyg

要安装当前已知可用于构建Sage的系统包集,请运行:

也可通过系统软件包安装的可选软件包包括:

其他平台

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

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

使用水蟒/小型水蟒的注意事项

如果安装了Conda(通过键入进行检查 conda info ),有两种方法可以从源代码处安装SageMath:

  • 确保Conda环境处于活动状态(对于当前shell会话),该环境至少具有生成SageMath所需的以下Conda包:

    c-compiler cxx-compiler fortran-compiler
    
    • 使用以下命令激活包含这些包的Conda环境:

      $ conda activate ENVIRONMENT
      
    • 可以使用以下命令将包安装到当前Conda环境中:

      $ conda install c-compiler cxx-compiler fortran-compiler
      
    • 或者,安装其他Conda软件包。

    然后将使用Conda提供的编译器来构建SageMath。

  • 停用conda(对于当前shell会话)。

    • 类型:

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

      $ conda info
      
      active environment : None
      ...
      

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

具体注意事项 maketar

在macOS上,系统范围的BSD tar 提供的将构建Sage,因此不需要安装GNU tar .

在Solaris或OpenSolaris上,的Sun/Oracle版本 maketar 不适合建造Sage。因此,您必须拥有的GNU版本 maketar 他们必须是第一个 maketar 在你 PATH .

在solaris10上,GNU的一个版本 make 可在 /usr/sfw/bin/gmake ,但您需要将其复制到其他位置并将其重命名为 make . GNU也是如此 tar ;GNU的一个版本 tar 可在 /usr/sfw/bin/gtar ,但需要将其复制到其他位置并重命名为 tar . 建议创建一个目录 $HOME/bins-for-sage 把GNU版本 tarmake 在那个目录里。然后确保 $HOME/bins-for-sage 在你的 PATH . 因为Sage也需要 /usr/ccs/bin 在你 PATH 执行程序 arranlib ,但是 /usr/ccs/bin 有Sun/Oracle版本的 maketar 在里面。

如果您试图在AIX或HP-UX上构建Sage,则需要同时安装这两个GNU make 和GNU tar .

使用替代编译器

Sage开发人员倾向于使用GCC的最新版本。尽管如此,Linux上的SAGE构建过程应该用任何合理的C/C++编译器来成功;(我们不建议GCC比版本5.1更旧)。这是因为Sage将首先构建GCC(如果需要),然后使用新构建的GCC来编译Sage。

如果您不想这样做,并且想尝试用一组不同的编译器构建Sage,则需要通过Sage的 ./configure 编译器名称,通过环境变量 CCCXXFC ,分别用于C、C++和FORTRAN编译器,例如,如果C编译器是 clang ,你的C++编译器是 clang++ ,而您的Fortran编译器是 flang 然后你需要跑:

$ CC=clang CXX=clang++ FC=flang ./configure

赛前 make . 建议您检查 ./configure 为了检查Sage不会尝试构建GCC。也就是说,应该有这样的行:

gcc-7.2.0 will not be installed (configure check)
...
gfortran-7.2.0 will not be installed (configure check)

表明Sage不会试图建造 gcc/g++/gfortran .

如果您有兴趣从 HPIBMIntelSun/Oracle ,等等,请将sage-devel邮件列表发送至https://groups.google.com/group/sage-devel。

附加软件

笔记本附加功能

注意:Sage的笔记本已被弃用,notebook()命令已被删除。用Jupyter笔记本代替

默认情况下,Sage笔记本使用 HTTP 键入命令时的协议 notebook() . 要在安全模式下运行笔记本,请键入 notebook(secure=True) 其中使用 HTTPS 协议,或使用 OpenID 身份验证,您需要遵循中描述的特定安装步骤 构建支持SSL的笔记本 .

尽管所有必需的组件都是通过Sage可选软件包提供的,也就是说,即使您选择不安装OpenSSL的系统范围版本,也可以安装 OpenSSL 用Sage的 开放式SSL 打包运行 sage -i openssl 如中所述 构建支持SSL的笔记本 (这需要Internet连接)。或者,您可能更喜欢在系统上全局安装OpenSSL和OpenSSL开发头文件,如上所述。

最后,如果您打算将笔记本电脑负载分配到几个Sage服务器上,那么您肯定需要设置一个 SSH 服务器并生成SSH密钥。这可以通过使用 OpenSSH .

在Linux系统上,OpenSSH服务器、客户端和实用程序通常由 openssh-serveropenssh-client 软件包,可以使用以下方式安装:

$ sudo apt-get install openssh-server openssh-client

或者类似的命令。

Tcl/Tk公司

如果你想用 Tcl/Tk 在Sage中,您需要在构建Sage之前安装Tcl/Tk及其开发头文件。Sage的Python将自动识别您的系统安装的Tcl/Tk。

在Linux系统上,这些通常由 tktk-dev (或) tk-devel )可以使用以下方式安装的程序包:

$ sudo apt-get install tk tk-dev

或者类似的命令。

如果你先安装了Sage,一切都不会丢失。你只需要重建Sage的Python和Sage依赖它的任何部分:

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

在安装了上述Tcl/Tk开发库之后。

如果

sage: import _tkinter
sage: import Tkinter

不会引发 ImportError ,然后就成功了。

逐步安装程序

一般程序

从源代码安装(可能)非常容易,因为发行版(本质上)包含Sage所依赖的所有内容。

一定要有 没有空格 在您构建的目录的路径名中:如果路径中有空格,Sage的几个组件将无法构建。从名称中带有空格的目录运行Sage也将失败。

  1. 去https://www.sagemath.org/download-source.html,选择镜像并下载文件 sage-x.y.tar.gz .

    这个压缩的存档文件包含Sage的源代码和Sage依赖的所有程序的源代码。

    把它下载到你有写权限的任何目录,最好是在一个快速的文件系统上,避免 NFS 诸如此类。在个人计算机上 HOME 目录应该这样做。Sage(请注意,一旦你建立了 make ,如下所述),您将无法在不破坏Sage的情况下移动或重命名其目录。

  2. 提取档案:

    $ tar xvf sage-x.y.tar.gz
    

    这将创建一个目录 sage-x.y .

  3. 换到那个目录:

    $ cd sage-x.y
    

    这是Sage的主目录。它也被称为 SAGE_ROOT 或顶级Sage目录。

  4. 可选,但强烈建议:阅读 README.md 在那里归档。

  5. 可选:设置影响生成过程的各种其他环境变量;请参阅 环境变量 .

    一些环境变量值得特别提及: CCCXXFC 在macOS上, OBJCOBJCXX . 定义编译器的那些变量可以在配置时设置,它们的值将被记录下来,以便在运行时进一步使用。如果Sage构建自己的编译器,或者在调用Sage之前将它们再次设置为不同的值,那么这些初始值将被覆盖。请注意,有些程序包将忽略编译器设置,并使用在特定操作系统上对该程序包安全的值。

  6. 运行configure脚本以设置一些影响构建过程的选项。

    • 选择安装层次结构 (SAGE_LOCAL ). 默认值是 local 子目录 SAGE_ROOT ::

      $ ./configure --prefix=SAGE_LOCAL
      

      请注意,在Sage的构建过程中, make 生成 and 安装 (make install 是不可操作的)。因此,安装层次结构必须可由用户写入。

    • 其他选项可用;请参见:

      $ ./configure --help
      
  7. 启动生成过程:

    $ make
    

    或者,如果您的系统支持多处理,并且您希望使用多个进程来构建Sage::

    $ MAKE='make -jNUM' make
    

    告诉 make 要运行的程序 NUM 在建造Sage时并行作业。这将编译Sage及其所有依赖项。

    注解

    macOS允许在不使用精确大小写的情况下更改目录。在为macOS编译时要注意这种便利性。在转换为 SAGE_ROOT 可能会导致依赖项的生成错误,这些依赖项需要精确的路径名大写。

    请注意,您不需要以root用户身份登录,因为在 sage-x.y 目录。事实上, 以Sage为根是不可取的 ,因为只有在绝对必要时才应使用root帐户,如果您以root身份登录,则键入错误的命令可能会产生严重后果。报告了一个错误(请参见 :trac:`9551` )在Sage中,如果用户以root用户身份登录,则会覆盖系统文件。

    打字 make 对每个Sage的依赖项执行常规步骤,但将所有生成的文件安装到本地构建树中。根据系统的年龄和体系结构,从源代码构建Sage可能需要几十分钟到几个小时。在非常慢的硬件上,甚至需要几天时间来构建Sage。

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

    制定目标 为一些目标 make 指挥部, 环境变量 有关Sage使用的有用环境变量的更多信息,以及 构建支持SSL的笔记本 有关如何使用SSL支持构建笔记本的其他说明。

  8. 要启动Sage,现在只需从Sage的主目录键入:

    $ ./sage
    

    您应该看到Sage提示符,它看起来像这样:

    $ sage
    ┌────────────────────────────────────────────────────────────────────┐
    │ SageMath version 8.8, Release Date: 2019-06-26                     │
    │ Using Python 3.7.3. 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
    
  9. 可选,但强烈建议:通过键入以下命令测试安装 ./sage --testall . 这将在源代码中运行大多数示例,并确保它们与声明的完全相同。要测试所有示例,请使用 ./sage --testall --optional=all --long ;这将运行耗时较长的示例,以及依赖于可选软件包和软件的示例,例如Mathematica或Magma。因此,一些(可选)示例可能会失败。

    或者,从内部 $SAGE_ROOT ,您可以键入 make test (分别 make ptest )串行(分别并行)运行所有标准测试代码。

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

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

    #!/bin/sh
    
    exec /etc/maple10.2/maple.tty "$@"
    
  11. 可选择使用一些不同的可能性:

    • 从中创建一个符号链接 /usr/local/bin/sage (或您的 PATH$SAGE_ROOT/sage ::

      $ ln -s /path/to/sage-x.y/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 用户,创建一个名为 sage 包含行(注意,您必须更改 <SAGE_ROOT> 下面!):

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

      使其可执行:

      $ chmod a+x sage
      

      把它放在你的 PATH .

      你也可以用这一行作为命令制作一个KDE桌面图标(在图标属性的Application选项卡下,用鼠标右键单击图标)。

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

      alias sage=<SAGE_ROOT>/sage
      

      (注意,你必须改变 <SAGE_ROOT> 以上!)完成后,退出终端仿真器并重新启动它。正在打字 sage 在你的终端模拟器应该启动Sage。

  12. 可选:安装可选的Sage包和数据库。类型 sage --optional 要查看它们的列表(这需要连接到Internet),或访问https://www.sagemath.org/packages/optional/。然后键入 sage -i <package-name> 自动下载并安装给定的软件包。

  13. 可选:运行 install_scripts 从Sage内部命令创建GAP,GP,Maxima,Singular等,脚本 PATH . 类型 install_scripts? 在Sage中查看详细信息。

  14. 玩得高兴!发现一些惊人的猜想!

构建支持SSL的笔记本

如果您打算为多个用户运行Sage笔记本服务器,请阅读本节。

为了安全起见,您可能希望用户使用HTTPS协议访问服务器(即运行 notebook(secure=True) ). 您还可能希望使用OpenID进行用户身份验证。第一个需要安装 pyOpenSSL ,它们都需要OpenSSL。

如果您的系统上安装了OpenSSL和OpenSSL开发头文件,那么可以通过构建Sage并输入以下命令来安装pyOpenSSL:

$ ./sage -i pyopenssl

或者, make ssl 立即构建Sage并安装pyOpenSSL。请注意,这些命令需要访问Internet。

如果缺少OpenSSL或OpenSSL的开发头文件,可以先在Sage安装中安装这两个文件的本地副本。理想情况下,这应该在安装Sage之前完成;否则,您至少应该重建Sage的Python,理想情况下Sage的任何部分都依赖它。程序如下(同样,计算机连接到互联网)。从新鲜的Sage开始:

$ ./sage -i openssl
$ make ssl

如果你已经建立了Sage:

$ ./sage -i openssl
$ ./sage -f python3
$ make ssl

第三行代码将重建Sage依赖Python的所有部分;这可能需要一段时间。

Cygwin的再定位问题

基于Cygwin的构建有时需要“重新调整基” dll 文件夹。Sage提供了一些脚本,位于 $SAGE_LOCAL/bin ,为此:

  • sage-rebaseall.sh ,一个调用Cygwin的shell脚本 rebaseall 程序。它必须在 dashSAGE_ROOT 所有其他Cygwin进程关闭并需要对位于 /etc/rebase.db.i386 ,这通常意味着管理员权限。它更新系统范围的数据库并向其中添加Sage dll,以便后续调用 rebaseall 会考虑到的。

  • sage-rebase.sh ,一个调用Cygwin的shell脚本 rebase-O/--oblivious 选项。它必须在 SAGE_ROOT 目录。与 sage-rebaseall.sh 脚本,它既不更新系统范围的数据库,也不向其中添加Sage dll。因此,后续调用 rebaseall 不会考虑他们。

  • sage-rebaseall.bat (分别 sage-rebase.bat ),一个MS-DOS批处理文件,它调用 sage-rebaseall.sh (分别 sage-rebase.sh )脚本。调整后,必须从Windows命令提示符下运行 SAGE_ROOT 到Sage主目录的Windows位置,如果Cygwin安装在非标准位置,则调整 CYGWIN_ROOT 也。

有些系统可能会频繁遇到此问题,从而使构建或测试变得困难。如果执行上述脚本或直接调用 rebaseall 不能解决重新设置基的问题,删除系统范围的数据库,然后从头开始重新生成,例如通过执行 sage-rebaseall.sh ,可能会有帮助。

最后,在Cygwin上,还应避免以下情况:

  • 建立Windows域用户的主目录;

  • 用大写字母构建路径(请参见 :trac:`13343` ,尽管已经取得了一些成功)。

制定目标

要从头开始构建Sage,通常需要执行 make 在Sage的主目录中构建Sage及其 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-clean, 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 testalllongmake ptestalllong .

  • make doc-clean 删除生成文档时生成的多个目录。

  • make distclean 在进行任何构建之前,将Sage目录恢复到其状态:这几乎相当于删除Sage的整个主目录并重新解包源tarfile,唯一的区别是 .git 目录被保留,所以git分支不会被删除。

环境变量

Sage使用几个环境变量来控制其构建过程。大多数用户不需要设置其中任何一个:构建过程只适用于许多平台。(注意这个设置 MAKE ,如下所述,可以显著加快进程。)构建Sage涉及构建大约100个包,每个包都有自己的编译指令。

Sage源代码tarball已经包含了所有标准包的源代码,也就是说,它允许您在没有互联网连接的情况下构建Sage。但是,git存储库不包含第三方包的源代码。相反,它将根据需要下载(注意:您可以运行 make download 在生成之前强制下载包)。软件包下载使用Sage镜像网络,最近的镜像将自动为您确定。这受以下环境变量的影响:

  • SAGE_SERVER -先试用指定的镜像,然后再返回到官方的Sage mirror列表。请注意,Sage将搜索目录

    • SAGE_SERVER/spkg/upstream

    对于干净的上游tarball,它会搜索目录

    • SAGE_SERVER/spkg/standard/,

    • SAGE_SERVER/spkg/optional/,

    • SAGE_SERVER/spkg/experimental/,

    • SAGE_SERVER/spkg/archive/

    对于老式的Sage包。

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

  • MAKE -在构建Sage时,此变量的一个有用设置是 MAKE='make -jNUM' 告诉 make 要运行的程序 NUM 建造时并行作业。请注意,并非所有Sage包(例如ATLAS)都支持此变量。

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

    警告

    当Sage在macOS上使用单核系统时报告了一些问题 MAKE='make -jNUM' 具有 NUM 大于一。

  • SAGE_NUM_THREADS -如果设置为数字,则在构建文档、并行文档测试或运行 sage -b ,使用这么多线程。如果未设置,则使用 MAKE (见上文)或 MAKEFLAGS 环境变量。如果这些都没有指定作业的数量,那么使用一个线程(并行测试除外:这里我们使用默认的CPU核数,最大8个,最小2个)。

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

    $ make -s V=0
    

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

  • 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 意味着跳过它的测试套件。所以如果设置为 mpir,!python3 ,然后始终运行MPIR的测试套件,但始终跳过python3的测试套件。

    注解

    从sage9.1开始,python2和3spkgs的测试套件在大多数平台上都失败了。因此,当此变量为空或未设置时,Sage使用默认值 !python2,!python3 .

  • SAGE_INSTALL_GCC - 过时,不使用,待删除

  • SAGE_INSTALL_CCACHE -默认情况下Sage不安装ccache,但是通过设置 SAGE_INSTALL_CCACHE=yes Sage将安装ccache。因为Sage分布非常大,所以最大缓存设置为4G sage -sh -c "ccache --max-size=SIZE" 在哪里 SIZE 通过附加“G”、“M”或“K”以GB、MB或KB为单位指定。

    Sage不包括ccache的源代码,因为它是一个可选的包。因此,在为Sage构建ccache时,有必要建立一个Internet连接,以便Sage能够找到必要的资源。

  • SAGE_DEBUG -控件调试支持。有三种不同的可能值:

    • Not set(或设置为除“yes”或“no”之外的任何值):生成带有调试符号的二进制文件,但没有特殊的调试生成。这是默认值。不会影响性能,只会使用额外的磁盘空间。

    • SAGE_DEBUG=nono 表示没有调试符号(也就是说,没有 gcc -g ),这样可以节省一些磁盘空间。

    • SAGE_DEBUG=yes :如果可能,构建调试版本(特别是,Python是在启用附加调试的情况下构建的,Singular是使用不同的内存管理器构建的)。这些操作将明显较慢,但例如,可以更容易地确定内存分配问题。

  • SAGE_PROFILE -控制分析支持。如果设置为 yes ,尽可能启用分析支持。请注意,Python级别的评测始终可用;此选项支持在Cython模块中进行评测。

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

  • SAGE_DOC_MATHJAX -默认情况下,Sage文档中的任何LaTeX代码都由MathJax处理。如果此变量设置为 no ,则不使用MathJax,而是使用LaTeX处理math,并通过dvipng将其转换为图像文件,然后将这些文件包含到文档中。通常,与使用MathJax相比,使用LaTeX和dvipng构建文档需要更长的时间,占用更多的内存和磁盘空间。

  • SAGE_DOCBUILD_OPTS -此变量的值作为参数传递给 sage --docbuild all htmlsage --docbuild all pdf 当你奔跑 makemake docmake doc-pdf . 例如,可以添加 --no-plot 以避免生成来自 .. PLOT 或者您可以添加 --include-tests-blocks 在参考手册中包括所有“测试”块。跑 sage --docbuild help 查看选项的完整列表。

  • SAGE_BUILD_DIR -默认行为是在 $SAGE_ROOT/local/var/tmp/sage/build/ ;例如,构建版本3.8.3.p12 atlas 在目录中 $SAGE_ROOT/local/var/tmp/sage/build/atlas-3.8.3.p12/ . 如果设置了此变量,则内置 $SAGE_BUILD_DIR/atlas-3.8.3.p12/ 相反。如果目录 $SAGE_BUILD_DIR 不存在,它是创建的。在撰写本文(Sage 4.8)时,在构建标准Sage包时,该目录中需要1.5gb的可用空间(如果 SAGE_KEEP_BUILT_SPKGS=yes --具体所需空间因平台而异。例如,文件系统的块大小将影响使用的空间量,因为某些spkg包含许多小文件。

    警告

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

  • 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版开始),这些子目录总共可以占用6gb的存储空间,这取决于平台和文件系统的块大小。如果始终将此变量设置为 yes ,它可能会占用更多的空间:重建每个spkg将占用两倍的空间,而对spkg的任何升级都将创建更多的目录,使用更多的空间。

    注解

    在现有的Sage安装中,运行 sage -i -s <package-name>sage -f -s <package-name> 安装spkg <package-name> 并保留相应的生成目录;因此 SAGE_KEEP_BUILT_SPKGSyes 当从头构建Sage或安装单个spkgs时,会模仿这种行为。所以你可以把这个变量设置为 yes 而不是使用 -ssage -isage -f .

  • SAGE_FAT_BINARY -要构建将在最广泛的目标CPU上运行的二进制文件,请将此变量设置为 yes 在建造Sage之前。这不会使二进制文件重新定位,它只会避免更新的CPU指令集扩展。对于可重定位(=可以移动到其他目录)二进制文件,必须使用https://github.com/sagemath/binary-pkg

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

    并非所有Sage包当前都支持 SAGE_SUDO .

    因此,当系统管理员希望安装支持 SAGE_SUDO ,添加到根拥有的安装层次结构中 (SAGE_LOCAL

处理特定Sage包的环境变量:

  • SAGE_MP_LIBRARY -使用替代库代替 MPIR 对于多精度整数运算。支持的值为

    MPIR (默认选择), GMP .

  • SAGE_ATLAS_ARCH -如果您正在编译ATLAS(特别是,如果 SAGE_ATLAS_LIB ,您可以使用此环境变量来设置特定的体系结构和指令集扩展,控制ATLAS可以使用的最大线程数,并触发静态库的安装(除非构建自定义共享库失败,否则默认情况下禁用静态库)。语法是

    SAGE_ATLAS_ARCH=[threads:n,][static,]arch[,isaext1][,isaext2]...[,isaextN] .

    虽然ATLAS提供了各种cpu的预计算时间,但它只在找到完全匹配的情况下才使用它们。否则,ATLAS将运行一个漫长的自动调优过程,以优化您的特定系统的性能,这可能需要几天的时间来处理缓慢和异常的系统。如果您手动选择一个合适的体系结构,则可以大大减少Sage编译的总时间。建议在笔记本电脑或其他具有CPU调节功能的系统上指定适当的体系结构,或者如果要分发二进制文件。可用的体系结构有

    POWER3POWER4POWER5PPCG4PPCG5POWER6POWER7IBMz9IBMz10IBMz196x86x87x86SSE1x86SSE2x86SSE3P5P5MMXPPROPIIPIIIPMCoreSoloCoreDuoCore2SoloCore2Corei1Corei2AtomP4P4EEfficeonK7HAMMERAMD64K10hAMDDOZERUNKNOWNx86IA64ItanIA64Itan2USIUSIIUSIIIUSIVUST2UnknownUSMIPSR1xKMIPSICE9ARMv7 .

    指令集扩展名是

    VSXAltiVecAVXMACAVXFMA4AVXSSE3SSE2SSE13DNowNEON .

    此外,您还可以设置

    • SAGE_ATLAS_ARCH=fast 它为您的处理器生产线的现代(2-3年的)CPU选择默认值,并且

    • SAGE_ATLAS_ARCH=base 它会选择对一个有10年历史的CPU有效的默认值。

    例如,

    SAGE_ATLAS_ARCH=Corei2,AVX,SSE3,SSE2,SSE1

    对于一个i7核心处理器来说是合适的。

  • SAGE_ATLAS_LIB -如果你想安装你自己的阿特拉斯系统,而不是你自己的阿特拉斯安装版本。它应该包含文件 libatlasliblapacklibcblaslibf77blas (可选 libptcblaslibptf77blas 对于多线程计算) .a.so.dylib . 为了向后兼容,库也可以在子目录中 SAGE_ATLAS_LIB/lib/ .

  • SAGE_MATPLOTLIB_GUI -如果设置为非空除了 no ,则Sage将在构建matplotlib包时尝试构建图形后端。

  • PARI_CONFIGURE -使用此选项可将额外参数传递给PARI Configure 脚本,例如指定图形支持(默认情况下禁用)。查看文件 build/pkgs/pari/spkg-install 更多信息。

  • SAGE_TUNE_PARI: If yes, enable PARI self-tuning. Note that this can be time-consuming. If you set this variable to "yes", you will also see this: 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使用的一些标准环境变量:

  • CC -虽然有些程序允许您使用它来指定C编译器, 并不是每个Sage软件包都认识到这一点 . 如果安装在GCC内, CC 被忽视和Sage的 gcc 而是使用。

  • CPP -类似地,这将为一些Sage包设置C预处理器,同样地,使用它可能相当危险。如果安装在GCC内, CPP 被忽视和Sage的 cpp 而是使用。

  • CXX 类似地,这将为某些SAGE软件包设置C++编译器,同样,使用它可能是相当危险的。如果安装在GCC内, CXX 被忽视和Sage的 g++ 而是使用。

  • FC -同样,这将设置Fortran编译器。所有包含Fortran代码的Sage包都支持这一点。但是,由于历史原因,该值在初始阶段是硬编码的 make 以及随后对 $FC 可能被忽略(在这种情况下,将使用原始值)。如果安装在GCC内, FC 被忽视和Sage的 gfortran 而是使用。

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

  • 类似的注释适用于其他编译器和链接器标志,如 CPPFLAGSLDFLAGSCXXFLAG64LDFLAG64LD .

  • OPENBLAS_CONFIGURE -为添加到make命令的OpenBLAS包添加其他配置标志。(参见 :trac:`23272`

Sage在运行时使用以下环境变量:

  • DOT_SAGE -其中Sage是一个存储文件的目录,其中Sage有读写权限。默认位置是 $HOME/.sage/ .

  • SAGE_STARTUP_FILE -包含每次Sage启动时要执行的命令的文件。默认值为 $DOT_SAGE/init.sage .

  • BROWSER -在大多数平台上,Sage会检测运行web浏览器的命令,但如果这在您的机器上似乎不起作用,请将此变量设置为适当的命令。

处理doctesting的变量:

  • SAGE_TIMEOUT -用于Sage的doctesting:在超时之前允许doctest的秒数。如果未设置,默认值为300秒(5分钟)。

  • SAGE_TIMEOUT_LONG -用于Sage的doctest:如果测试运行时使用 sage -t --long . 如果未设置,默认值为1800秒(30分钟)。

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

Sage设置其他一些环境变量。最准确的方法就是先跑 env 从shell提示符查看您设置了哪些环境变量。那就跑吧 sage --sh -c env 查看Sage设置变量后的列表。(这将运行一个单独的shell,执行shell命令 env 或者,在运行完shell之后,您可以退出shell设置 src/bin/sage-env .

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

多用户环境中的安装

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

系统范围安装

在下面的说明中,我们假设 /path/to/sage-x.y 是要安装Sage的目录。

  1. 首先,提取Sage源tarball /path/to (这将创建目录 /path/to/sage-x.y ). 解压缩后,如果不喜欢,可以更改目录名 sage-x.y .

  2. 更改 /path/to/sage-x.y 目录树到您的普通用户帐户(与 root ). 这是因为Sage将拒绝编译为 root . ::

    $ chown -R user:group /path/to/sage-x.y
    
  3. 使用您的普通用户帐户,构建Sage。见 逐步安装程序 上面。

  4. 将符号链接到 sage 编写脚本 /usr/local/bin ::

    $ ln -s /path/to/sage-x.y/sage /usr/local/bin/sage
    

    或者,复制Sage脚本:

    $ cp /path/to/sage-x.y/sage /usr/local/bin/sage
    

    如果执行此操作,请确保编辑行:

    #SAGE_ROOT=/path/to/sage-version
    

    在复制的开始 sage 根据此处给出的指示编写类似于:

    SAGE_ROOT=<SAGE_ROOT>
    

    (注意,你必须改变 <SAGE_ROOT> 以上!)。建议不要编辑原件 sage 脚本,只有在 /usr/local/bin/sage .

  5. 或者,您可以通过运行以下命令来测试Sage::

    $ make testlong
    

    make ptestlong 它使用多个进程并行测试文件。你也可以省略 long 跳过需要很长时间的测试。

本页最后一次更新是在2020年5月(Sage 9.1)。