Sage ist eine Open-Source-Mathematiksoftware, die unter der GNU General Public License GPLv2+ veröffentlicht wird und Pakete mit kompatiblen Softwarelizenzen enthält. Menschen auf der ganzen Welt haben zur Entwicklung von Sage beigetragen. Die vollständige Dokumentation ist online verfügbar.
Wer ungeduldig ist, kann vorgefertigtes Sage verwenden, das online bei jedem von uns erhältlich ist
ohne lokale Installation. Ansonsten lesen Sie weiter.
Das Sage-Installationshandbuch bietet einen Entscheidungsbaum, der Sie zu der für Sie am besten geeigneten Installationsart führt. Dazu gehört das Erstellen aus dem Quellcode, das Abrufen von Sage von einem Paketmanager, die Verwendung eines Container-Images oder die Verwendung von Sage in der Cloud.
Diese README-Datei enthält eigenständige Anweisungen zum Erstellen von Sage aus dem Quellcode. Dazu müssen Sie das Git-Repository klonen (wie in dieser README-Datei beschrieben) oder die Quellen in Form eines Tarballs herunterladen.
Wenn Sie Fragen haben oder auf Probleme stoßen, zögern Sie bitte nicht, eine E-Mail an die Sage-Support-Mailingliste zu senden oder auf der Fragen- und Antwortseite „Ask Sage“ nachzufragen.
Sage versucht, alle wichtigen Linux-Distributionen, aktuelle Versionen von macOS und Windows (unter Verwendung des Windows-Subsystems für Linux oder Virtualisierung) zu unterstützen.
Detaillierte Informationen zu unterstützten Plattformen für eine bestimmte Version von Sage finden Sie im Abschnitt Verfügbarkeit und Installationshilfe der Release-Tour für diese Version.
Wir freuen uns sehr über Beiträge zu Sage, die Portabilitätsfehler beheben und dabei helfen, Sage auf neue Plattformen zu portieren. Lassen Sie es uns auf der Sage-Devel-Mailingliste wissen.
Die bevorzugte Möglichkeit, Sage unter Windows auszuführen, ist die Verwendung des Windows-Subsystems für Linux (WSL). Befolgen Sie die offizielle WSL-Setup-Anleitung, um Ubuntu (oder eine andere Linux-Distribution) zu installieren. Stellen Sie sicher, dass Sie der WSL ausreichend RAM zuweisen. Es ist bekannt, dass 5 GB funktionieren, während 2 GB möglicherweise nicht ausreichen, um Sage aus dem Quellcode zu erstellen. Dann gelten alle Hinweise zur Installation unter Linux.
Alternativ können Sie Linux auch unter Windows mit Docker (siehe unten) oder anderen Virtualisierungslösungen ausführen.
Wenn Ihr Mac die Apple Silicon-Architektur (M1, M2, M3, M4; arm64) verwendet und Sie Ihren Mac durch Übertragen von Dateien von einem älteren Mac einrichten, stellen Sie sicher, dass das Verzeichnis /usr/local
keine alte Kopie von Homebrew enthält (oder andere Software) für die x86_64-Architektur, die Sie möglicherweise kopiert haben. Beachten Sie, dass Homebrew für den M1 in /opt/homebrew
und nicht in /usr/local
installiert ist.
Wenn Sie Conda verwenden möchten, lesen Sie bitte den Abschnitt über Conda im Sage-Installationshandbuch als Anleitung.
Ansonsten empfehlen wir dringend die Verwendung von Homebrew („der fehlende Paketmanager für macOS“) von https://brew.sh/, das den gfortran
Compiler und viele Bibliotheken bereitstellt.
Andernfalls müssen Sie, wenn Sie Homebrew nicht installieren möchten, die neueste Version der Xcode-Befehlszeilentools installieren. Öffnen Sie ein Terminalfenster und führen Sie xcode-select --install
aus; Klicken Sie dann im Popup-Fenster auf „Installieren“. Wenn die Xcode-Befehlszeilentools bereits installiert sind, können Sie prüfen, ob sie aktualisiert werden müssen, indem Sie softwareupdate -l
eingeben.
Wie viele andere Softwarepakete wird Sage mithilfe von ./configure
gefolgt von make
aus dem Quellcode erstellt. Wir empfehlen jedoch dringend, die folgenden Schritt-für-Schritt-Anleitungen zum Erstellen von Sage zu lesen.
Die Anweisungen decken Linux, macOS und WSL vollständig ab.
Weitere Einzelheiten und Hintergrundinformationen zu diesen Anweisungen finden Sie im Abschnitt „Von Quellcode installieren“ im Installationshandbuch.
Entscheiden Sie sich für das Quell-/Build-Verzeichnis ( SAGE_ROOT
):
Auf PCs sollte jedes Unterverzeichnis Ihres :envvar: HOME
-Verzeichnisses ausreichen.
Sie könnten beispielsweise SAGE_ROOT=~/sage/sage
verwenden, das wir unten als laufendes Beispiel verwenden werden.
Sie benötigen mindestens 10 GB freien Speicherplatz.
Der vollständige Pfad zum Quellverzeichnis darf keine Leerzeichen enthalten.
Nach dem Start des Builds können Sie das Quell-/Build-Verzeichnis nicht verschieben, ohne dass etwas kaputt geht.
Möglicherweise möchten Sie langsame Dateisysteme wie Netzwerkdateisysteme (NFS) und dergleichen vermeiden.
[macOS] macOS ermöglicht das Ändern von Verzeichnissen ohne genaue Groß- und Kleinschreibung. Beachten Sie diesen Komfort beim Kompilieren für macOS. Das Ignorieren der genauen Groß- und Kleinschreibung beim Wechsel in :envvar: SAGE_ROOT
kann zu Buildfehlern für Abhängigkeiten führen, die eine genaue Groß- und Kleinschreibung in Pfadnamen erfordern.
Klonen Sie die Quellen mit git
:
Um zu überprüfen, ob git
verfügbar ist, öffnen Sie ein Terminal und geben Sie an der Shell-Eingabeaufforderung ( $
) den folgenden Befehl ein:
$ git --version
git version 2.42.0
Die genaue Version spielt keine Rolle, aber wenn dieser Befehl einen Fehler ausgibt, installieren Sie git
mit Ihrem Paketmanager und verwenden Sie einen dieser Befehle:
$ 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
Erstellen Sie das Verzeichnis, in dem SAGE_ROOT
eingerichtet werden soll:
$ mkdir -p ~/sage
$ cd ~/sage
Klonen Sie das Sage-Git-Repository:
$ git clone -c core.symlinks=true --filter blob:none
--origin upstream --branch develop --tags
https://github.com/sagemath/sage.git
Dieser Befehl ruft die neueste Entwicklungsversion ab. Ersetzen Sie --branch develop
durch --branch master
um stattdessen die neueste stabile Version auszuwählen.
Dadurch wird das Unterverzeichnis ~/sage/sage
erstellt. (Weitere Informationen finden Sie im Abschnitt „Einrichten von Git“ und in den folgenden Abschnitten im Sage-Entwicklerhandbuch.)
Wechseln Sie in das erstellte Unterverzeichnis:
$ cd sage
[Windows] Der Sage-Quellbaum enthält symbolische Links und der Build funktioniert nicht, wenn Windows-Zeilenenden anstelle von UNIX-Zeilenenden verwendet werden.
Daher wird empfohlen (aber nicht notwendig), die WSL-Version von git
zu verwenden.
Systempakete installieren.
Lesen Sie hierzu entweder den Abschnitt zur Installation von der Quelle im Sage-Installationshandbuch für Zusammenstellungen von Systempaketen, die Sie installieren können. Wenn Sie fertig sind, fahren Sie mit Schritt 7 (Bootstrapping) fort.
Alternativ können Sie dem detaillierteren Ansatz unten folgen.
[Linux, WSL] Installieren Sie die erforderlichen minimalen Build-Voraussetzungen:
Compiler: gcc
, gfortran
, g++
(GCC-Versionen von 8.4.0 bis 13.x und neuere Versionen von Clang (LLVM) werden unterstützt). Eine Diskussion geeigneter Compiler finden Sie unter build/pkgs/gcc/SPKG.rst und build/pkgs/gfortran/SPKG.rst.
Build-Tools: GNU make
, GNU m4
, perl
(einschließlich ExtUtils::MakeMaker
), ranlib
, git
, tar
, bc
. Weitere Details finden Sie unter build/pkgs/_prereq/SPKG.rst.
Python 3.4 oder höher oder Python 2.7, eine vollständige Installation einschließlich urllib
; aber idealerweise Version 3.9.x, 3.10.x, 3.11.x, 3.12.x, wodurch vermieden wird, Sages eigene Kopie von Python 3 erstellen zu müssen. Weitere Details finden Sie unter build/pkgs/python3/SPKG.rst.
Wir haben Listen von Systempaketen zusammengestellt, die diese Build-Voraussetzungen bereitstellen. Siehe im Ordner build/pkgs/_prereq/distros die Dateien arch.txt, debian.txt (auch für Ubuntu, Linux Mint usw.), fedora.txt (auch für Red Hat, CentOS), opensuse.txt, slackware.txt und void.txt, oder besuchen Sie https://doc.sagemath.org/html/en/reference/spkg/_prereq.html#spkg-prereq
Optional: Es wird empfohlen, dass Sie sowohl LaTeX als auch die ImageMagick-Tools (z. B. den Befehl „convert“) installiert haben, da einige Plotfunktionen davon profitieren.
[Entwicklung] Wenn Sie planen, Sage zu entwickeln oder anderweitig mit Ticket-Branches und nicht nur Releases zu arbeiten, installieren Sie die Bootstrapping-Voraussetzungen. Sehen Sie sich die Dateien im Ordner build/pkgs/_bootstrap/distros an oder besuchen Sie https://doc.sagemath.org/html/en/reference/spkg/_bootstrap.html#spkg-bootstrap
Bootstrapping des Quellbaums mit dem folgenden Befehl:
$ make configure
(Wenn die Bootstrapping-Voraussetzungen nicht installiert sind, lädt dieser Befehl stattdessen ein Paket herunter, das eine vorgefertigte Bootstrap-Ausgabe bereitstellt.)
Desinfizieren Sie die Build-Umgebung. Verwenden Sie den Befehl
$ env
um die aktuellen Umgebungsvariablen zu überprüfen, insbesondere PATH
, PKG_CONFIG_PATH
, LD_LIBRARY_PATH
, CFLAGS
, CPPFLAGS
, CXXFLAGS
und LDFLAGS
(falls festgelegt).
Entfernen Sie Elemente aus diesen (durch Doppelpunkte getrennten) Umgebungsvariablen, die Sage nicht für seinen eigenen Build verwenden sollte. Entfernen Sie insbesondere Elemente, wenn sie auf eine frühere Sage-Installation verweisen.
[WSL] Insbesondere importiert WSL viele Elemente aus der Windows PATH
Variablen in die Linux-Umgebung, was zu verwirrenden Buildfehlern führen kann. Diese Elemente beginnen normalerweise mit /mnt/c
. Am besten entfernen Sie sie alle aus den Umgebungsvariablen. Sie können PATH
beispielsweise mit dem folgenden Befehl festlegen:
$ export PATH=/usr/sbin/:/sbin/:/bin/:/usr/lib/wsl/lib/
[macOS mit Homebrew] Legen Sie die erforderlichen Umgebungsvariablen für den Build fest:
$ source ./.homebrew-build-env
Damit sollen einige Pakete von Homebrew (sog. Keg-Only-Pakete) für den Build verfügbar gemacht werden. Führen Sie es einmal aus, um die Vorschläge für die aktuelle Terminalsitzung anzuwenden. Möglicherweise müssen Sie diesen Befehl wiederholen, bevor Sie Sage aus einer neuen Terminalsitzung neu erstellen oder nachdem Sie zusätzliche Homebrew-Pakete installiert haben. (Sie können es auch zu Ihrem Shell-Profil hinzufügen, damit es in allen zukünftigen Sitzungen automatisch ausgeführt wird.)
Entscheiden Sie sich optional für das Installationspräfix ( SAGE_LOCAL
):
Traditionell und standardmäßig wird Sage in der Unterverzeichnishierarchie mit dem Stammverzeichnis SAGE_ROOT/local/
installiert.
Dies kann mit ./configure --prefix=SAGE_LOCAL
geändert werden, wobei SAGE_LOCAL
das gewünschte Installationspräfix ist, das vom Benutzer beschreibbar sein muss.
Wenn Sie diese Option in Kombination mit --disable-editable
verwenden, können Sie den gesamten Sage-Quellbaum nach Abschluss des Erstellungsprozesses löschen. Was in SAGE_LOCAL
installiert wird, ist eine eigenständige Installation von Sage.
Beachten Sie, dass im Build-Prozess von Sage Builds make
und installiert werden ( make install
ist ein No-Op). Daher muss die Installationshierarchie vom Benutzer beschreibbar sein.
Optionen für die Installation an freigegebenen Speicherorten wie /usr/local/
finden Sie im Sage-Installationshandbuch. Versuchen Sie nicht, Sage als root
zu erstellen.
Sehen Sie sich optional die Konfigurationsoptionen an, die viele optionale Pakete umfassen:
$ ./configure --help
Bemerkenswerte Optionen für Sage-Entwickler sind die folgenden:
Verwenden Sie die Option --config-cache
damit configure
einen Festplatten-Cache mit Konfigurationswerten behält. Dies sorgt für eine schöne Beschleunigung beim Ausprobieren von Ticketzweigen, die Paketaktualisierungen durchführen, was automatische Wiederholungen des Konfigurationsschritts beinhaltet.
Verwenden Sie die Option --enable-ccache
um Sage zu installieren und das optionale Paket ccache
zu verwenden, das vorkonfiguriert ist, um einen Festplatten-Cache für aus Quelldateien erstellte Objektdateien zu behalten. Dies kann zu einer erheblichen Beschleunigung beim Wechseln zwischen verschiedenen Zweigen führen, allerdings auf Kosten des Speicherplatzverbrauchs.
Optional, aber dringend empfohlen: Legen Sie einige Umgebungsvariablen fest, um den Build anzupassen.
Beispielsweise steuert die Umgebungsvariable MAKE
, ob mehrere Jobs parallel ausgeführt werden sollen. Wenn Sie beispielsweise auf einem Computer mit 4 Prozessoren export MAKE="make -j4"
eingeben, wird das Build-Skript so konfiguriert, dass eine parallele Kompilierung von Sage mit 4 Jobs durchgeführt wird. Auf einigen leistungsstarken Maschinen könnten Sie sogar -j16
in Betracht ziehen, da das Erstellen mit mehr Jobs als CPU-Kernen die Dinge noch weiter beschleunigen kann.
Um die Terminalausgabe während des Builds zu reduzieren, geben Sie export V=0
ein. ( V
steht für „Ausführlichkeit“.)
Einige Umgebungsvariablen verdienen eine besondere Erwähnung: CC
, CXX
und FC
. Diese Variablen, die Ihre Compiler definieren, können zur Konfigurationszeit festgelegt werden und ihre Werte werden zur weiteren Verwendung zur Build- und Laufzeit aufgezeichnet.
Eine ausführliche Diskussion weiterer Umgebungsvariablen zum Erstellen von Sage finden Sie im Installationshandbuch.
Geben Sie ./configure
ein, gefolgt von den Optionen, die Sie verwenden möchten. Um beispielsweise Sage mit dem von Sage bereitgestellten gf2x
Paket zu erstellen, verwenden Sie ./configure --with-system-gf2x=no
.
Am Ende einer erfolgreichen ./configure
werden möglicherweise Meldungen angezeigt, die die Installation zusätzlicher Systempakete mit Ihrem Paketmanager empfehlen.
Bei einer großen Liste von Sage-Paketen kann Sage erkennen, ob ein installiertes Systempaket für die Verwendung mit Sage geeignet ist; In diesem Fall erstellt Sage keine weitere Kopie aus der Quelle.
Manchmal empfehlen die Meldungen die Installation von Paketen, die bereits auf Ihrem System installiert sind. Erläuterungen finden Sie in den früheren Konfigurationsmeldungen oder in der Datei config.log
. Außerdem empfehlen die Meldungen möglicherweise die Installation von Paketen, die tatsächlich nicht verfügbar sind. Nur die neuesten Versionen Ihrer Distribution verfügen über alle empfohlenen Pakete.
Optional: Wenn Sie sich für die Installation der zusätzlichen Systempakete entscheiden, wird bei einer erneuten Ausführung von ./configure
getestet, ob die installierten Versionen für Sage verwendbar sind. Wenn dies der Fall ist, verringert sich dadurch die Kompilierungszeit und der von Sage benötigte Speicherplatz. Die Verwendung von Paketen kann durch ./configure
angepasst werden (überprüfen Sie erneut die Ausgabe von ./configure --help
).
Geben Sie make
. Das ist es! Alles geschieht automatisch und nicht interaktiv.
Wenn Sie die obigen Anweisungen befolgt haben, insbesondere hinsichtlich der Installation von Systempaketen, die durch die Ausgabe von ./configure
empfohlen werden (Schritt 11), und hinsichtlich des parallelen Builds (Schritt 10), dauert die Erstellung von Sage auf einem modernen Computer weniger als eine Stunde. (Andernfalls kann es viel länger dauern.)
Der Build sollte auf allen vollständig unterstützten Plattformen einwandfrei funktionieren. Wenn nicht, wollen wir es wissen!
Geben Sie ./sage
ein, um es auszuprobieren. Versuchen Sie in Sage zum Beispiel 2 + 2
, plot(x^2)
, plot3d(lambda x, y: x*y, (-1, 1), (-1, 1))
um eine einfache Berechnung und Darstellung zu testen 2D und 3D. Geben Sie Strg + D ein oder quit
, um Sage zu beenden.
Optional: Geben Sie make ptestlong
ein, um alle Beispiele in der Dokumentation zu testen (über 200.000 Eingabezeilen!) – dies dauert zwischen 10 Minuten und mehreren Stunden. Lassen Sie sich nicht zu sehr beunruhigen, wenn es zwei bis drei Fehler gibt, aber senden Sie jederzeit den Abschnitt von logs/ptestlong.log
, der Fehler enthält, per E-Mail an die Mailingliste sage-support. Wenn es zahlreiche Fehler gibt, liegt ein ernstes Problem mit Ihrem Build vor.
Die HTML-Version der Dokumentation wird während des Kompilierungsprozesses von Sage erstellt und befindet sich im Verzeichnis local/share/doc/sage/html/
. Möglicherweise möchten Sie es in Ihrem Browser als Lesezeichen speichern.
Optional: Wenn Sie die PDF-Version der Dokumentation erstellen möchten, führen Sie make doc-pdf
aus (dazu muss LaTeX installiert sein).
Optional: Installieren Sie optionale Pakete, die für Sie von Interesse sind: Rufen Sie eine Liste auf, indem Sie ./sage --optional
eingeben oder die Dokumentationsseite der Pakete besuchen.
Optional: Erstellen Sie einen Symlink zum installierten sage
-Skript in einem Verzeichnis in Ihrem PATH
, zum Beispiel /usr/local
. Dadurch können Sie Sage von überall aus starten, indem Sie sage
eingeben, anstatt entweder den vollständigen Pfad eingeben oder zum Sage-Verzeichnis navigieren und ./sage
eingeben zu müssen. Dies kann durch Ausführen erfolgen:
$ sudo ln -s $(./sage -sh -c 'ls $SAGE_ROOT/venv/bin/sage') /usr/local/bin
Optional: Richten Sie SageMath als Jupyter-Kernel in einem vorhandenen Jupyter-Notebook oder einer JupyterLab-Installation ein, wie im Abschnitt Starten von SageMath im Sage-Installationshandbuch beschrieben.
Für die Installation von Sage in einer Python-Umgebung von PyPI aus stellt Sage das pip
-installierbare Paket sagemath-standard zur Verfügung.
Sofern Sie Sage nicht in einer bestimmten vorhandenen Umgebung installieren müssen, empfehlen wir, eine neue virtuelle Umgebung zu erstellen und zu aktivieren, zum Beispiel ~/sage-venv/
:
$ python3 -m venv ~/sage-venv
$ source ~/sage-venv/bin/activate
Als ersten Installationsschritt installieren Sie sage_conf, das verschiedene erforderliche Pakete in einem Unterverzeichnis von ~/.sage/
erstellt:
(sage-venv) $ python3 -m pip install -v sage_conf
Nach erfolgreicher Installation stellt ein Wheelhouse verschiedene Python-Pakete zur Verfügung. Sie können die Räder mit dem folgenden Befehl auflisten:
(sage-venv) $ ls $(sage-config SAGE_SPKG_WHEELS)
Wenn die Fehlermeldung erscheint, dass sage-config
nicht gefunden wurde, überprüfen Sie alle Meldungen, die der Befehl pip install
möglicherweise ausgegeben hat. Möglicherweise müssen Sie Ihren PATH
anpassen, beispielsweise durch:
$ export PATH="$(python3 -c 'import sysconfig; print(sysconfig.get_path("scripts", "posix_user"))'):$PATH"
Installieren Sie nun die Pakete aus dem Wheelhouse und das sage_setup-Paket und installieren Sie schließlich die Sage-Bibliothek:
(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
Mit den obigen Anweisungen wird die neueste stabile Version von Sage installiert. Um stattdessen die neueste Entwicklungsversion zu installieren, fügen Sie den Schalter --pre
zu allen Aufrufen von python3 -m pip install
hinzu.
HINWEIS: PyPI verfügt über verschiedene andere pip
-installierbare Pakete, deren Namen das Wort „sage“ enthalten. Einige davon werden vom SageMath-Projekt verwaltet, andere werden von SageMath-Benutzern für verschiedene Zwecke bereitgestellt und andere haben überhaupt nichts mit SageMath zu tun. Verwenden Sie nicht die Pakete sage
und sagemath
. Eine kuratierte Liste der Pakete finden Sie im Kapitel Pakete und Funktionen des Sage-Referenzhandbuchs.
SageMath ist auf Docker Hub verfügbar und kann heruntergeladen werden von:
docker pull sagemath/sagemath
Derzeit werden nur stabile Versionen auf dem neuesten Stand gehalten.
Wenn Sie Probleme beim Erstellen von Sage haben, lesen Sie das Sage-Installationshandbuch sowie die versionspezifische Installationshilfe in der Release-Tour für die Version, die Sie installieren.
Bitte zögern Sie nicht, im SageMath-Forum oder in der Sage-Support-Mailingliste um Hilfe zu bitten. Der Abschnitt „Fehlerbehebung“ im Sage-Installationshandbuch enthält Anweisungen dazu, welche Informationen bereitgestellt werden müssen, damit wir effektiver helfen können.
Wenn Sie zu Sage beitragen möchten, empfehlen wir Ihnen dringend, das Entwicklerhandbuch zu lesen.
Sage verfügt über wesentliche Komponenten, die in den folgenden Sprachen geschrieben sind: C/C++, Python, Cython, Common Lisp, Fortran und ein bisschen Perl.
Vereinfachtes Verzeichnislayout (nur wichtige Dateien/Verzeichnisse):
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
Weitere Einzelheiten finden Sie in unserem Entwicklerhandbuch.
Dies ist eine kurze Zusammenfassung des Build-Systems der Sage-Softwareverteilung. Das vollständige Sage-System besteht aus zwei Komponenten: der Sage-Python-Bibliothek und den zugehörigen Benutzeroberflächen sowie der größeren Softwareverteilung der Hauptabhängigkeiten von Sage (für die Abhängigkeiten, die nicht vom System des Benutzers bereitgestellt werden).
Die Python-Bibliothek von Sage wird mithilfe eines setup.py
-Skripts erstellt und installiert, wie es für Python-Pakete Standard ist ( setup.py
von Sage ist nicht trivial, aber nicht ungewöhnlich).
Der Großteil des restlichen Build-Systems befasst sich mit dem Erstellen aller Sage-Abhängigkeiten in der richtigen Reihenfolge zueinander. Die von Sage enthaltenen Abhängigkeiten werden als SPKGs (d. h. „Sage-Pakete“) bezeichnet und unter build/pkgs
aufgeführt.
Der Haupteinstiegspunkt zum Build-System von Sage ist das Makefile
der obersten Ebene im Stammverzeichnis des Quellbaums. Im Gegensatz zu den meisten normalen Projekten, die Autoconf verwenden (Sage tut dies auch, wie unten beschrieben), wird dieses Makefile
nicht generiert. Stattdessen enthält es einige übergeordnete Ziele und Ziele im Zusammenhang mit dem Bootstrapping des Systems. Nichtsdestotrotz führen wir weiterhin make
von der Wurzel des Quellbaums aus aus – Ziele, die nicht explizit im Makefile
der obersten Ebene definiert sind, werden an ein anderes Makefile unter build/make/Makefile
weitergeleitet.
Letzteres build/make/Makefile
wird von einem von Autoconf generierten configure
unter Verwendung der Vorlage in build/make/Makefile.in
generiert. Dazu gehören Regeln für den Aufbau der Sage-Bibliothek selbst ( make sagelib
) und für den Aufbau und die Installation aller Sage-Abhängigkeiten (z. B. make gf2x
).
Das configure
selbst kann, sofern es noch nicht erstellt wurde, durch Ausführen des bootstrap
-Skripts generiert werden (letzteres erfordert die Installation von GNU Autotools ). Das Makefile
der obersten Ebene kümmert sich auch automatisch darum.
Zusammenfassend sieht das Ausführen eines Befehls wie make python3
auf der obersten Ebene des Quellbaums etwa so aus:
make python3
./bootstrap
aus, wenn configure
aktualisiert werden muss./configure
mit allen zuvor konfigurierten Optionen aus, wenn build/make/Makefile
aktualisiert werden mussbuild/make
und führen Sie das install
aus – dies ist kaum mehr als ein Frontend für die Ausführung von make -f build/make/Makefile python3
, das einige notwendige Umgebungsvariablen festlegt und einige Informationen protokolliertbuild/make/Makefile
enthält die eigentliche Regel zum Erstellen von python3
; Dazu gehört, dass zuerst alle Abhängigkeiten von python3
erstellt werden (und ihre Abhängigkeiten rekursiv). Die eigentliche Paketinstallation erfolgt mit dem Programm sage-spkg
Es wird nicht unterstützt, das Verzeichnis SAGE_ROOT
oder SAGE_LOCAL
nach der Erstellung von Sage zu verschieben. Wenn Sie die Verzeichnisse verschieben, müssen Sie make distclean
ausführen und Sage erneut von Grund auf erstellen.
Für eine systemweite Installation müssen Sie Sage als „normalen“ Benutzer erstellen und können dann als Root die Berechtigungen ändern. Weitere Informationen finden Sie im Installationshandbuch.
Ihre lokale Sage-Installation ist fast identisch mit jeder „Entwickler“-Installation. Sie können Änderungen an der Dokumentation, Quelle usw. vornehmen und die vollständigen Ergebnisse ganz einfach zur Weiterverbreitung verpacken, genau wie wir es tun.
Um eine Binärverteilung mit Ihren aktuell installierten Paketen zu erstellen, besuchen Sie sagemath/binary-pkg.
Geben Sie Folgendes ein, um Ihren eigenen Quell-Tarball von Sage zu erstellen:
$ make dist
Das Ergebnis wird im Verzeichnis dist/
abgelegt.
Die gesamte in Sage enthaltene Software unterliegt dem Urheberrecht der jeweiligen Autoren und wird unter einer Open-Source-Lizenz veröffentlicht, die mit GPL Version 3 oder höher kompatibel ist. Weitere Einzelheiten finden Sie unter COPYING.txt.
Die Quellen befinden sich in (soweit möglich) unveränderten Tarballs im upstream/
-Verzeichnis. Die restlichen Beschreibungen, Versionsinformationen, Patches und Build-Skripte befinden sich im zugehörigen Verzeichnis build/pkgs/
. Dieses Verzeichnis ist Teil des Sage-Git-Repositorys.
Copyright (C) 2005-2024 Das Sage-Entwicklungsteam
https://www.sagemath.org