How to Install sbt on Ubuntu 22.04


In this article, we will see how to install sbt on Ubuntu Linux. If you are looking to build complex and multi-module scala projects then you should definitely go with sbt command line tool. Although this open source tool has lot of features but it is mostly known for its incremental compilation model. In this model, sbt would only compile the part of project that have changed since last build. This saves lot of compilation time in a large project. SBT (Simple Build Tool) works in an interactive mode which means it will keep the project loaded in memory, ensuring faster results from the command given.

Since sbt uses apache ivy for dependency management, this makes it easy to handle downloading, updating and managing libraries and its dependencies. You can also extend the functionality of sbt by using suitable plugins. It support plugins for tasks like code coverage, static analysis, web deployment, and integration with various frameworks and tools. It can also be used with CI tools like Jenkins, Travis CI and GitHub Actions. Since the build definitions of sbt are written in scala, this allows you to exploit the full power of scala to write custom build logic, conditions and task definitions. More on official website.



How to Install sbt on Ubuntu 22.04 2

How to Install sbt on Ubuntu 22.04

Also Read: How to Install Kong Gateway on Ubuntu Linux

Step 1: Prerequisites

a) You would need a fully functional Ubuntu 22.04 System.


b) You would also need root or root like access to run privileged commands.

c) You would also require a default ubuntu apt or apt-get package manager to be installed in your system.



Step 2: Update Your Server

Run below command to check and install latest package upgrades, security fixes and feature updates in your system.

cyberithub@ubuntu:~$ sudo apt update && sudo apt upgrade


Step 3: Install required packages

Run below command to install few mandatory packages which are required for sbt installation.

cyberithub@ubuntu:~$ sudo apt-get install apt-transport-https curl gnupg -yqq
[sudo] password for cyberithub:


Step 4: Add Repo

Since sbt package is only available through its repo, run below command to add the repo in your repo list.

cyberithub@ubuntu:~$ echo "deb all main" | sudo tee /etc/apt/sources.list.d/sbt.list
deb all main


Step 5: Import GPG Key

To verify the integrity and authenticity of a package, import and add gpg key before downloading and installing the package. This can be done by running below curl command. You can get the latest step to import key from official website.

cyberithub@ubuntu:~$ curl -sL "" | sudo -H gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/scalasbt-release.gpg --import
gpg: keyring '/etc/apt/trusted.gpg.d/scalasbt-release.gpg' created
gpg: directory '/root/.gnupg' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 99E82A75642AC823: public key "sbt build tool <>" imported
gpg: Total number processed: 1
gpg: imported: 1


Step 6: Change Permission

Modify and provide appropriate permission to the gpg file using below chmod command.

cyberithub@ubuntu:~$ sudo chmod 644 /etc/apt/trusted.gpg.d/scalasbt-release.gpg


Step 7: Update Repository Cache

To load information of all the packages from newly added repo, run sudo apt update command. This will update the package cache and prepare the package for installation.

cyberithub@ubuntu:~$ sudo apt update
[sudo] password for cyberithub:
Get:1 jammy InRelease [3,632 B]
Get:2 jammy-security InRelease [110 kB]
Hit:3 jammy InRelease
Get:5 jammy-updates InRelease [119 kB]
Get:6 jammy InRelease [2,975 B]
Get:7 jammy/main amd64 Packages [141 kB]
Ign:8 default InRelease
Get:9 jammy/main arm64 Packages [35.7 kB]
Hit:11 jammy-backports InRelease
Get:4 all InRelease [4,410 B]
Get:12 jammy-security/main i386 Packages [445 kB]
Get:13 jammy-updates/main i386 Packages [611 kB]
Hit:10 default Release
Ign:14 default Release.gpg
Get:15 all/main i386 Packages [2,703 B]
Get:16 jammy-security/main amd64 Packages [1,346 kB]
Get:17 all/main amd64 Packages [2,703 B]
Get:18 jammy-updates/main amd64 Packages [1,562 kB]
Get:19 jammy-security/main Translation-en [237 kB]
Get:20 jammy-security/universe i386 Packages [600 kB]
Get:21 jammy-security/universe amd64 Packages [852 kB]
Get:22 jammy-updates/main Translation-en [298 kB]
Get:23 jammy-updates/restricted amd64 Packages [1,754 kB]
Get:24 jammy-updates/restricted i386 Packages [38.1 kB]
Get:25 jammy-updates/restricted Translation-en [295 kB]
Get:26 jammy-updates/universe amd64 Packages [1,075 kB]
Get:27 jammy-updates/universe i386 Packages [699 kB]
Get:28 jammy-updates/multiverse amd64 Packages [42.7 kB]
Get:29 jammy-updates/multiverse i386 Packages [4,472 B]
Get:30 jammy-updates/multiverse Translation-en [10.4 kB]
Fetched 10.3 MB in 8s (1,313 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done


Step 8: Install sbt

Now that all the packages information are loaded in repository cache, you can easily download and install sbt command line tool by running sudo apt-get install sbt command as shown below. This will resolve and install all the required dependencies along with sbt package.

cyberithub@ubuntu:~$ sudo apt-get install sbt
[sudo] password for cyberithub:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 37 not upgraded.
Need to get 20.0 kB of archives.
After this operation, 50.2 kB of additional disk space will be used.
Get:1 all/main amd64 sbt all 1.9.9 [20.0 kB]
Fetched 20.0 kB in 2s (8,604 B/s)
Selecting previously unselected package sbt.
(Reading database ... 247213 files and directories currently installed.)
Preparing to unpack .../apt/archives/sbt_1.9.9_all.deb ...
Unpacking sbt (1.9.9) ...
Setting up sbt (1.9.9) ...
Creating system group: sbt
Creating system user: sbt in sbt with sbt daemon-user and shell /bin/false
Processing triggers for man-db (2.10.2-1) ...


Step 9: Create an example sbt build

Before launching sbt shell, create an example sbt build under a directory. For example, in our case we are creating a separate directory called example_build using mkdir example_build command. Then switch to it using cd example_build command. Finally create an empty build.sbt file using touch build.sbt command.

cyberithub@ubuntu:~$ mkdir example_build
cyberithub@ubuntu:~$ cd example_build/
cyberithub@ubuntu:~/example_build$ touch build.sbt


Step 10: Launch sbt interactive shell

To launch sbt, run sudo sbt command. This will launch an interactive shell where you can perform various project compilation and management tasks.

cyberithub@ubuntu:~/example_build$ sudo sbt
[sudo] password for cyberithub:
downloading sbt launcher 1.9.9
copying runtime jar...
[info] [launcher] getting org.scala-sbt sbt 1.9.9 (this may take some time)...
[info] [launcher] getting Scala 2.12.18 (for sbt)...
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.jline.terminal.impl.exec.ExecTerminalProvider$ReflectionRedirectPipeCreator (file:/root/.sbt/boot/scala-2.12.18/org.scala-sbt/sbt/1.9.9/jline-terminal-3.24.1.jar) to constructor java.lang.ProcessBuilder$RedirectPipeImpl()
WARNING: Please consider reporting this to the maintainers of org.jline.terminal.impl.exec.ExecTerminalProvider$ReflectionRedirectPipeCreator
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[info] Updated file /home/cyberithub/example_build/project/ set sbt.version to 1.9.9
[info] welcome to sbt 1.9.9 (Ubuntu Java 11.0.22)
[info] loading project definition from /home/cyberithub/example_build/project
[info] Updating
100.0% [##########] 19.4 KiB (21.2 KiB / s)
[info] Resolved dependencies
[info] Fetching artifacts of
100.0% [##########] 262.5 KiB (239.3 KiB / s)
[info] Fetched artifacts of
[info] loading settings for project example_build from build.sbt ...
[info] set current project to example_build (in build file:/home/cyberithub/example_build/)
[info] sbt server started at local:///root/.sbt/1.0/server/a9014407bff42aedcde7/sock
[info] started sbt server


Step 11: Compile a Project

To compile a project, run compile command. This will only compile the incremental changes done after the last build.

sbt:example_build> compile
[success] Total time: 1 s, completed 21-Apr-2024, 1:00:22 PM


Step 12: Exit sbt shell

You can exit sbt shell anytime by running exit command as shown below.

sbt:example_build> exit
[info] shutting down sbt server


Step 13: Check all available options

You can check all the options available with sbt command line utility using sbt --help command as shown below.

cyberithub@ubuntu:~$ sbt --help


Step 14: Uninstall sbt

If you don't need sbt tool anymore, you can remove it from your system by using sudo apt remove sbt command as shown below. To remove all the dependencies of the package along with the package itself, add --auto-remove option with below command.

cyberithub@ubuntu:~$ sudo apt remove sbt
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
0 upgraded, 0 newly installed, 1 to remove and 44 not upgraded.
After this operation, 50.2 kB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 247226 files and directories currently installed.)
Removing sbt (1.9.9) ...
Processing triggers for man-db (2.10.2-1) ...

Leave a Comment