Skip to content

Requirements: Ubuntu and similar distros

Kinan Bab edited this page Jul 24, 2024 · 2 revisions

If you do not wish to use the docker container. You can install our requirements yourself using your favorite package manager. We built k9db on ubuntu 20 and 22, but similar systems should also work.

Core requirements:

  1. GCC-11 (e.g. apt-get install gcc-11 g++-11).
  2. openjdk-11 (e.g. apt-get install openjdk-11-jdk).
  3. rustc and cargo 1.56.0.
  4. bazel-4.0.0 https://docs.bazel.build/versions/4.0.0/install.html.
  5. libffi-dev, libssl-dev, zlib1g-dev, libncurses5-dev.
  6. cargo-raze (see below)
  7. A MySQL command line client to connect and interact with k9db after running it. We recommend using mariadb-client-10.6.

cargo-raze is deprecated and no longer maintained, and one of its dependencies got yanked. You'll need to install my fork which has the dependency issue fixed (https://github.com/KinanBab/cargo-raze). Clone the repo, then go to the impl/ directory, and run cargo install --locked --path ..

After installing these requirements, ensure that they are the default binaries on your system.

You will need to run cargo raze once to fetch the rust dependencies from cargo and turn them to bazel dependencies.

mkdir -p /tmp/cargo-raze/doesnt/exist/  # may be needed for some versions of raze.
cd <K9DB_DIR>/k9db/proxy && cargo raze
cd <K9DB_DIR>/experiments/lobsters && cargo raze
cd <K9DB_DIR>/experiments/ownCloud && cargo raze
cd <K9DB_DIR>/experiments/vote && cargo raze

The following are not required to build or run K9DB. But they may be required to run some of our experiments from the paper including the baselines.

  1. MariaDB server with MyRocks (mariadb-server-10.6 mariadb-plugin-rocksdb).
  2. MariaDB C++ connector (libmariadb3 libmariadb-dev).
  3. flex, bison, libevent-dev.

After installing MariaDB server, you will need to configure it once to load the MyRocks extension. You can do so using:

mariadb -u root
> # Now connected to mariadb server.
> CREATE USER 'k9db'@'%' IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON *.* TO 'k9db'@'%' IDENTIFIED BY 'password';
> FLUSH PRIVILEGES;
> INSTALL SONAME 'ha_rocksdb';