MOJO Series #1: Install SDK on UBUNTU
Install mojo sdk on Ubuntu
So, THAT 35000-times-faster-than-python language, mojo, released its SDK today. This means you can install Mojo in your own environment and run mojo programs.
And here in this post, I will show you how to do it on Ubuntu.
System Requirements
- Ubuntu 20.04 and later
- x86-64 CPU and minimum 4 GB RAM
- Python 3.8 - 3.10
- g++ or clang++ compiler
My environment
- Kubuntu 22.04.3
- AMD CPU with 16GB RAM
- Python 3.10.12
- g++ 11.4.0
Install steps
1. Install Modular CLI
# switch to root first
sudo -u root -i
# then run the following command
apt-get install -y apt-transport-https &&
keyring_location=/usr/share/keyrings/modular-installer-archive-keyring.gpg &&
curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/gpg.0E4925737A3895AD.key' | gpg --dearmor >> ${keyring_location} &&
curl -1sLf 'https://dl.modular.com/bBNWiLZX5igwHXeu/installer/config.deb.txt?distro=debian&codename=wheezy' > /etc/apt/sources.list.d/modular-installer.list &&
apt-get update &&
apt-get install -y modular
# switch back to normal user
exit
2. Verify modular is installed
which modular
/usr/bin/modular
3. Install Mojo SDK
modular auth <YOUR AUTH KEY> && modular install mojo
# Found release for https://packages.modular.com/mojo @ 0.2.1, installing to /home/******/.modular/pkg/packages.modular.com_mojo
# Downloads complete, setting configs...
# Configs complete, running post-install hooks...
..................<OMITTED>
Successfully installed ansiwrap-0.8.4 attrs-23.1.0 certifi-2023.7.22 charset-normalizer-3.2.0 entrypoints-0.4 fastjsonschema-2.18.0 find_libpython-0.3.0 idna-3.4 jsonschema-4.19.0 jsonschema-specifications-2023.7.1 jupyter-core-5.3.1 jupyter_client-8.3.1 nbclient-0.8.0 nbformat-5.9.2 papermill-2.4.0 platformdirs-3.10.0 python-dateutil-2.8.2 pyzmq-25.1.1 referencing-0.30.2 requests-2.31.0 rpds-py-0.10.2 tenacity-8.2.3 textwrap3-0.9.2 tornado-6.3.3 tqdm-4.66.1 traitlets-5.9.0 urllib3-2.0.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Testing `MODULAR_HOME=/home/******/.modular`
* `/home/******/.modular/pkg/packages.modular.com_mojo/bin/mojo`...
TEST: `mojo --help`... OK
TEST: `mojo run --help`... OK
TEST: `mojo build test_mandelbrot.mojo`... OK
TEST: `mojo build test_python.mojo`... OK
TEST: `mojo demangle`... OK
TEST: `mojo format`... OK
TEST: `mojo package`... OK
TEST: `mojo test_mandelbrot.mojo`... OK
TEST: `mojo test_python.mojo`... OK
TEST: `mojo repl`... OK
๐ฅ Mojo installed! ๐ฅ
Now run the following commands if you are using bash:
echo 'export MODULAR_HOME="/home/******/.modular"' >> ~/.bashrc
echo 'export PATH="/home/******/.modular/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
If you are using ZSH, run the following commands:
echo 'export MODULAR_HOME="/home/******/.modular"' >> ~/.zshrc
echo 'export PATH="/home/******/.modular/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Then enter 'mojo' to start the Mojo REPL.
For tool help, enter 'mojo --help'.
For more docs, see https://docs.modular.com/mojo.
4. Add mojo to PATH
# You must replace two <USERNAME> with your own username
echo 'export MODULAR_HOME="/home/<USERNAME>/.modular"' >> ~/.bashrc
echo 'export PATH="/home/<USERNAME>/.modular/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Now verify mojo command is accesible:
which mojo
/home/******/.modular/pkg/packages.modular.com_mojo/bin/mojo
5. Mojo REPL
mojo
Welcome to Mojo! ๐ฅ Expressions are delimited by a blank line. Type
:mojo helpfor further assistance.
Bonus Round: directory structure
tree $MODULAR_HOME
/home/******/.modular
โโโ crashdb
โ โโโ attachments
โ โโโ completed
โ โโโ new
โ โโโ pending
โ โโโ settings.dat
โโโ modular.cfg
โโโ pkg
โโโ packages.modular.com_mojo
โโโ bin
โ โโโ lldb
โ โโโ lldb-argdumper
โ โโโ lldb-server
โ โโโ lldb-vscode
โ โโโ modular-crashpad-handler
โ โโโ mojo
โ โโโ mojo-lsp-server
โโโ installed.json
โโโ jupyter
โ โโโ kernel
โ โ โโโ logo-64x64.png
โ โ โโโ logo.svg
โ โ โโโ mojokernel.py
โ โโโ manage_kernel.py
โโโ lib
โ โโโ libKGENCompilerRTShared.so -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/libKGENCompilerRTShared.so.18git
โ โโโ libKGENCompilerRTShared.so.18git
โ โโโ libKGENCompilerRT-static.a
โ โโโ libLLCLRuntimeGlobals.so -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/libLLCLRuntimeGlobals.so.18git
โ โโโ libLLCLRuntimeGlobals.so.18git
โ โโโ liblldb.so -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/liblldb.so.18.0.0git
โ โโโ liblldb.so.18.0.0git
โ โโโ liblldb.so.18git -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/liblldb.so.18.0.0git
โ โโโ libMojoJupyter.so -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/libMojoJupyter.so.18git
โ โโโ libMojoJupyter.so.18git
โ โโโ libMojoLLDB.so -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/libMojoLLDB.so.18git
โ โโโ libMojoLLDB.so.18git
โ โโโ libMSupportGlobals.so -> /home/******/.modular/pkg/packages.modular.com_mojo/lib/libMSupportGlobals.so.18git
โ โโโ libMSupportGlobals.so.18git
โ โโโ liborc_rt.a
โ โโโ lldb-visualizers
โ โ โโโ lldbDataFormatters.py
โ โ โโโ mlirDataFormatters.py
โ โโโ mblack
โ โ โโโ base_library.zip
โ โ โโโ importlib_metadata-6.8.0.dist-info
โ โ โ โโโ INSTALLER
โ โ โ โโโ LICENSE
โ โ โ โโโ METADATA
โ โ โ โโโ RECORD
โ โ โ โโโ top_level.txt
โ โ โ โโโ WHEEL
โ โ โโโ libbz2.so.1.0
โ โ โโโ libcrypto.so.1.1
โ โ โโโ lib-dynload
โ โ โ โโโ _asyncio.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _bz2.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _codecs_cn.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _codecs_hk.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _codecs_iso2022.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _codecs_jp.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _codecs_kr.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _codecs_tw.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _contextvars.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _ctypes.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _decimal.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _hashlib.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _json.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _lzma.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ mmap.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _multibytecodec.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _multiprocessing.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _opcode.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _posixshmem.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _queue.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ resource.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _ssl.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ termios.cpython-38-x86_64-linux-gnu.so
โ โ โ โโโ _uuid.cpython-38-x86_64-linux-gnu.so
โ โ โโโ libexpat.so.1
โ โ โโโ libffi.so.7
โ โ โโโ liblzma.so.5
โ โ โโโ libmpdec.so.2
โ โ โโโ libpython3.8.so.1.0
โ โ โโโ libssl.so.1.1
โ โ โโโ libuuid.so.1
โ โ โโโ libz.so.1
โ โ โโโ mblack
โ โ โโโ mblib2to3
โ โ โโโ Grammar.txt
โ โ โโโ __init__.py
โ โ โโโ LICENSE
โ โ โโโ PatternGrammar.txt
โ โ โโโ pgen2
โ โ โ โโโ conv.py
โ โ โ โโโ driver.py
โ โ โ โโโ grammar.py
โ โ โ โโโ __init__.py
โ โ โ โโโ literals.py
โ โ โ โโโ parse.py
โ โ โ โโโ pgen.py
โ โ โ โโโ tokenize.py
โ โ โ โโโ token.py
โ โ โโโ pygram.py
โ โ โโโ pytree.py
โ โ โโโ README
โ โโโ mojo
โ โ โโโ algorithm.mojopkg
โ โ โโโ autotune.mojopkg
โ โ โโโ base64.mojopkg
โ โ โโโ benchmark.mojopkg
โ โ โโโ builtin.mojopkg
โ โ โโโ complex.mojopkg
โ โ โโโ math.mojopkg
โ โ โโโ memory.mojopkg
โ โ โโโ os.mojopkg
โ โ โโโ python.mojopkg
โ โ โโโ random.mojopkg
โ โ โโโ runtime.mojopkg
โ โ โโโ sys.mojopkg
โ โ โโโ tensor.mojopkg
โ โ โโโ testing.mojopkg
โ โ โโโ time.mojopkg
โ โ โโโ utils.mojopkg
โ โโโ mojo-repl-entry-point
โโโ licenses
โ โโโ LICENSE
โ โโโ Third-Party-Notices
โโโ modular.cfg
โโโ root.json
โโโ scripts
โ โโโ post-install
โ โโโ install-dependencies.sh
โ โโโ pick_python.py
โ โโโ requirements.txt
โ โโโ self-test.py
โโโ share
โ โโโ man
โ โโโ man1
โ โโโ mojo.1
โ โโโ mojo-build.1
โ โโโ mojo-demangle.1
โ โโโ mojo-doc.1
โ โโโ mojo-format.1
โ โโโ mojo-package.1
โ โโโ mojo-repl.1
โ โโโ mojo-run.1
โโโ snapshot.json
โโโ targets.json
โโโ test
โ โโโ test_format.mojo
โ โโโ test_jupyter.ipynb
โ โโโ test_mandelbrot.mojo
โ โโโ test_package
โ โ โโโ __init__.mojo
โ โโโ test_package_user.mojo
โ โโโ test_python.mojo
โโโ timestamp.json
โโโ VERSION
26 directories, 133 files