OSCAR is currently under heavy development, so all parts change continuously. If you encounter any trouble while following the steps outlined below, feel free to contact us via GitHub discussion, our issue tracker, or by sending an email to oscar@mathematik.uni-kl.de.
The following instructions assume that you are at least somewhat familiar with using a terminal interface.
xcode-select --install
, then press enter.The xcode-select command requires the command line developer tools. Would you like to install the tools now?. Confirm this by clicking
Install.
/Library/Developer/CommandLineTools/usr/bin/
exists and
contains executables such as clang
and clang++
,
the C and C++ compiler.sudo apt-get update
sudo apt-get install build-essential
sudo dnf install gcc-c++ make
OSCAR requires at least Julia 1.6.0, but we recommend running it with the latest stable Julia release, which is 1.9.3 at the time this is written.
We recommend installing Julia via juliaup which makes it easy to install and update Julia. For advanced users it can also manage multiple Julia versions in parallel. Just enter
curl -fsSL https://install.julialang.org | sh
Alternatively you can also download it from the Julia homepage, and follow their platform specific instructions.
To then install OSCAR, just start julia and run
using Pkg
Pkg.add("Oscar")
This will run for a few minutes. From then on, you can start Julia, then type using Oscar
and press enter to use OSCAR. The result should look something like this:
julia> using Oscar
----- ----- ----- - -----
| | | | | | | | | |
| | | | | | | |
| | ----- | | | |-----
| | | | |-----| | |
| | | | | | | | | |
----- ----- ----- - - - -
...combining (and extending) ANTIC, GAP, Polymake and Singular
Version 0.14.0 ...
... which comes with absolutely no warranty whatsoever
Type: '?Oscar' for more information
(c) 2019-2024 by The OSCAR Development Team
julia>
Please have a look at
for some examples (as Jupyter notebooks).
If you are a GAP user and have installed loaded OSCAR in a Julia session as
described above, you can at any time switch back and forth between the Julia prompt
and a GAP prompt, by using the command GAP.prompt()
:
julia> x = 1 1 julia> GAP.prompt() gap> Julia.x; 1 gap> G := SymmetricGroup(3); Sym( [ 1 .. 3 ] ) gap> quit; # or press Ctrl-D julia> GAP.Globals.G GAP: Sym( [ 1 .. 3 ] )
IJulia can be installed by following its installation page. Note that in some cases, IJulia must be “built” explicitly, see the trouble shooting page. If you try to open an existing notebook (stored in a “.ipynb” file), it might refer to an older Julia version, resulting in a “Kernel error”; the solution is then to select a different kernel from the menu.
If you are using OSCAR in the Windows Subsystem for Linux, you will require a browser in your subsystem. This can be a probem as the default subsystem is Ubuntu and Ubuntu installs browsers via snap which is disabled for subsystems. To circumvent this problem, please see how to install browsers via deb.
It is possible to install Oscar and its cornerstones only once on your system,
and to let several people use this installation.
For that, the following bash
scripts can be used.
(Users of such a system-wide installation may run into Julia errors
if they have already installed some dependencies of Oscar in their
~/.julia/packages
, or if they
oscar_systemwide_install
),
adjust the paths for the variables julia_for_oscar
and central_depot
,
and then run the script in a terminal (with administrator rights).
#!/bin/bash
# Specify the intended version of Julia.
julia_for_oscar=/users/oscar/julia-1.8.5/bin/julia
# Specify the intended location of the central Oscar installation.
central_depot=/users/oscar/JULIA_DEPOT
# We will store the necessary artifacts in the
# "architecture dependent location" in Julia's default DEPOT_PATH.
# First determine this path and create the directory if necessary.
# (Here we asume that `DEPOT_PATH[2]` is the architecture-specific
# shared system directory, as documented for the default value of
# `DEPOT_PATH`.)
system_depot=$(${julia_for_oscar} --startup-file=no -e 'println(DEPOT_PATH[2])')
mkdir -p "${system_depot}/artifacts"
# Set the Julia variables that control the location of packages.
# (Do not admit the current user's own depot path.)
export JULIA_DEPOT_PATH=${central_depot}:${system_depot}
# Clean the environment, such that the already centrally installed packages
# get replaced by newer versions if necessary.
# (This is safer than calling `Pkg.update()` in Julia.)
# Then let Julia install and precompile the packages.
${julia_for_oscar} --project=@v#.#-oscar -e 'using Pkg, Artifacts; \
rm("'${central_depot}'/environments/v" * join(split(string(VERSION), ".")[1:2], ".") * "/Project.toml", force=true)
Artifacts.with_artifacts_directory("'${system_depot}'/artifacts") do; \
Pkg.add("Oscar"); \
Pkg.add("GAP"); \
Pkg.add("Nemo"); \
Pkg.add("Hecke"); \
Pkg.add("Singular"); \
Pkg.add("Polymake"); \
Pkg.add("AbstractAlgebra"); \
Pkg.instantiate(); \
end; \
exit();'
using Oscar
in the Julia session.
julia_with_oscar
),
adjust the paths for the variables julia_for_oscar
and central_depot
,
and then run the script in a terminal (not with administrator rights).
#!/bin/bash
# Specify the intended version of Julia.
julia_for_oscar=/users/oscar/julia-1.8.5/bin/julia
# Specify the intended location of the central Oscar installation.
central_depot=/users/oscar/JULIA_DEPOT
# Admit the path with the central installation.
export JULIA_DEPOT_PATH=:${central_depot}
export JULIA_LOAD_PATH=":@v#.#-oscar"
# Call Julia.
${julia_for_oscar} $*