Skip to content

Build From Source

Anjeleno edited this page Jun 24, 2026 · 9 revisions

Building Rivolution From Source

This walks through building and standing up Rivolution (the v6 fork) on a fresh Ubuntu box, based on a real first-time build — including the gaps that tripped it up and how they were resolved.

1. Prerequisites

configure_build.sh (see step 2) auto-detects your distro and invokes ./configure with the right flags, including --prefix=/usr — use it instead of running ./configure directly, or you'll end up building against a non-standard prefix with its own gotchas (see Known Issues).

Most build dependencies are declared in configure.ac and checked automatically. One easy thing to miss: the MariaDB/MySQL client library is a build dependency, but the database server is not — if you're running the database on the same box (rather than pointing at a separate DB server), you need to install it yourself:

sudo apt install mariadb-server
sudo mysql_secure_installation

2. Build and install

git clone git@github.com:anjeleno/rivolution.git
cd rivolution
./configure_build.sh
make -j$(nproc)
sudo make install
sudo ldconfig

The 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 library file genuinely exists. make install doesn't refresh the linker's cache itself; see Known Issues for why.

3. 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

4. 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 3), 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 2; 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.

Clone this wiki locally