Skip to content

Build From Source

Anjeleno edited this page Jun 24, 2026 · 9 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.

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.

Clone this wiki locally