Skip to content

Build From Source

Anjeleno edited this page Jun 24, 2026 · 5 revisions

Building Rivolution From Source

A chronological walkthrough of building and standing up Rivolution (the v6 fork) on a fresh Ubuntu 26.04 box, based on a real first-time build — including the gaps that tripped it up and how they were resolved. Each step assumes the previous one finished cleanly.

This walk-through assumes you have already installed virgin Ubuntu 26.04 either on physical hardware or a VM.

Then, you will need to install a desktop. After extensive testing on local UTM and Cloud VPS installs, we reccommmend MATE. SSH into your machine and install as root with:

apt update && apt install -y --no-install-recommends ubuntu-mate-core

If this is a Cloud install, add xRDP for easy remote desktop:

apt install -y xrdp dbus-x11

1. Install build dependencies

Nothing here gets installed for you later — install everything below before touching the source tree:

sudo apt install git g++ automake autoconf autoconf-archive libtool \
  libltdl-dev make debhelper \
  qt6-base-dev qt6-base-dev-tools qt6-l10n-tools qt6-webengine-dev \
  qt6-webengine-dev-tools libqt6sql6-mysql \
  libexpat1-dev libid3-3.8.3-dev libcurl4-gnutls-dev libcoverart-dev \
  libdiscid-dev libmusicbrainz5-dev libcdparanoia-dev libsndfile1-dev \
  libpam0g-dev libvorbis-dev libsamplerate0-dev libsoundtouch-dev \
  libsystemd-dev libjack-jackd2-dev libasound2-dev libflac-dev \
  libflac++-dev libmp3lame-dev libmad0-dev libtwolame-dev libssl-dev \
  libtag1-dev libmagick++-dev \
  docbook5-xml docbook-xsl-ns xsltproc fop libxml2-utils \
  python3 python3-pycurl python3-pymysql python3-serial python3-requests \
  python3-venv python3-virtualenv python3-build twine \
  apache2 mariadb-server mariadb-client

sudo mysql_secure_installation

This list is verified directly against a real working build, not copied from older, Qt5-era notes elsewhere. Pointing this Rivendell host at a database on a different box instead of running one locally? Drop mariadb-server — you only need the client to build and connect.

2. Clone the repository

git clone git@github.com:anjeleno/rivolution.git
cd rivolution

3. Configure, build, and install

./configure_build.sh
make -j$(nproc)
sudo make install
sudo ldconfig

A few things going on in those four lines that aren't obvious from the outside:

  • Use configure_build.sh, not ./configure directly. configure_build.sh auto-detects your distro and calls ./configure with the right flags, including --prefix=/usr. Run ./configure yourself instead and you'll end up building against a non-standard prefix with its own gotchas — see Known Issues.
  • sudo ldconfig at the end is required, not optional. Without it, every Rivendell binary fails immediately with error while loading shared libraries: librd-*.so: cannot open shared object file: No such file or directory, even though the file genuinely exists — make install doesn't refresh the linker's cache itself. See Known Issues for why.

4. Set up the database

Copy the sample config into place:

sudo cp conf/rd.conf-sample /etc/rd.conf

Create a real database user — do not use the sample's default password ("hackme") for anything beyond a true throwaway box. Generate a real one and use it consistently below and in /etc/rd.conf's [mySQL] section:

sudo mysql -u root <<'EOF'
create user if not exists 'rduser'@'localhost' identified by 'REPLACE_WITH_A_REAL_GENERATED_PASSWORD';
create database if not exists Rivendell;
grant select,insert,update,delete,create,drop,index,alter,lock tables on `Rivendell`.* to 'rduser'@'localhost';
flush privileges;
EOF

Make sure /etc/rd.conf's [mySQL] Password= line matches whatever you actually used above.

If you're provisioning via rivendell-golden-ansible instead of by hand, its fix-rivendell-user.sh automates this entire step — including generating a real random password for you — so you can skip the manual SQL above.

Then create the schema:

sudo systemctl restart mariadb
rddbmgr --create --generate-audio

5. First launch

systemctl start rivendell

Launch RDAdmin and RDAirplay from the Rivendell applications menu, or directly from a terminal — doing the latter first is worth it even if the menu works, since a terminal will actually show you a crash's real error message instead of the app just silently failing to open.

Troubleshooting

QSqlDatabase: can not load requested driver (empty or QMYSQL3) — either /etc/rd.conf doesn't exist yet (step 4), or you're on an older checkout that still has the stale QMYSQL3 driver name (fixed in source as of this writing — Qt6's actual driver names are QMYSQL/QMARIADB, not the legacy Qt3-era QMYSQL3). Pull latest and rebuild if you still see this.

cannot open shared object file — see step 3; run sudo ldconfig.

RDAdmin/RDAirplay icons in the applications menu do nothing when clicked — the menu shortcut swallows any crash output. Launch the binary directly from a terminal instead to see the actual error.