There is a great deal of documentation available for building Gerbera from source on a variety of Linux flavors. Unfortunately, Fedora isn’t one of those (and the package names don’t exactly match up to let you replace “apt-get” with “yum” and be done). So I am quickly documenting the process we followed to build Gerbera from source.
The Fedora build of Gerbera has the binaries in /usr/bin and the manual build places the gerbera binary in /usr/local/bin — the build updates the unit file to reflect this change, but this means you want to back up any customizations you’ve made to the unit file before running “make install”.
You need the build system — cmake, g++, etc and the devel packages from the following table as required by your build options
Additional packages that we needed to install: automake, autoconf, libtool
Library |
Fedora Package |
Required? |
Note |
Compile-time option |
Default |
libpupnp |
libupnp-devel |
XOR libnpupnp |
pupnp |
|
|
libnpupnp |
Build from source (if needed) |
XOR libupnp |
I was only able to locate this as a source, not available from Fedora repos |
WITH_NPUPNP |
Disabled |
libuuid |
libuuid-devel |
Required |
Not required on *BSD |
|
|
pugixml |
pugixml-devel |
Required |
XML file and data support |
|
|
libiconv |
glibc-headers |
Required |
Charset conversion |
|
|
sqlite3 |
sqlite-devel |
Required |
Database storage |
|
|
zlib |
zlib-devel |
Required |
Data compression |
|
|
fmtlib |
fmt-devel |
Required |
Fast string formatting |
|
|
spdlog |
spdlog-devel |
Required |
Runtime logging |
|
|
duktape |
duktape-devel |
Optional |
Scripting Support |
WITH_JS |
Enabled |
mysql |
mariadb-devel |
Optional |
Alternate database storage |
WITH_MYSQL |
Disabled |
curl |
libcurl-devel |
Optional |
Enables web services |
WITH_CURL |
Enabled |
taglib |
taglib-devel |
Optional |
Audio tag support |
WITH_TAGLIB |
Enabled |
libmagic |
file-devel |
Optional |
File type detection |
WITH_MAGIC |
Enabled |
libmatroska |
libmatroska-devel |
Optional |
MKV metadata required for MKV |
WITH_MATROSKA |
Enabled |
libebml |
libebml-devel |
Optional |
MKV metadata required for MKV |
WITH_MATROSKA |
Enabled |
ffmpeg/libav |
ffmpeg-free-devel |
Optional |
File metadata |
WITH_AVCODEC |
Disabled |
libexif |
libexif-devel |
Optional |
JPEG Exif metadata |
WITH_EXIF |
Enabled |
libexiv2 |
exiv2-devel |
Optional |
Exif, IPTC, XMP metadata |
WITH_EXIV2 |
Disabled |
lastfmlib |
liblastfm-devel |
Optional |
Enables scrobbling |
WITH_LASTFM |
Disabled |
ffmpegthumbnailer |
ffmpegthumbnailer-devel |
Optional |
Generate video thumbnails |
WITH_FFMPEGTHUMBNAILER |
Disabled |
inotify |
glibc-headers |
Optional |
Efficient file monitoring |
WITH_INOTIFY |
|
libavformat |
libavformat-free-devel |
Required for 2.0 |
|
|
|
libavutil |
libavutil-free-devel |
Required for 2.0 |
|
|
|
libavcodec |
libavcodec-free-devel |
Required for 2.0 |
|
|
|
Then follow the generalized instructions — cd into the folder where you want to run the build and run (customizing the cmake line as you wish):
git clone https://github.com/gerbera/gerbera.git
mkdir build
cd build
cmake ../gerbera -DWITH_MAGIC=1 -DWITH_MYSQL=1 -DWITH_CURL=1 -DWITH_INOTIFY=1 -DWITH_JS=1 -DWITH_TAGLIB=1 -DWITH_AVCODEC=1 -DWITH_FFMPEGTHUMBNAILER=0 -DWITH_EXIF=1 -DWITH_EXIV2=1 -DWITH_SYSTEMD=1 -DWITH_LASTFM=0 -DWITH_DEBUG=1
make -j4
sudo make install
As with the Gerbera binary, the Fedora build places the web content in /usr/share/gerbera and the manual build places the web content into /usr/local/share/gerbera — yes, you can change the paths in the build, and I’m sure you can clue Gerbera into the new web file location. I opted for the quick/easy/lazy solution of running
mv /usr/share/gerbera /usr/share/gerbera/old
ln -s /usr/local/share/gerbera /usr/share/
To symlink the location my config thinks the web components should be located to the new files.
On the first start of Gerbera, SQL scripts may be run to update the database — don’t stop or kill the service during this process there’s no checkpoint restart of the upgrade process. We backed up /etc/gerbera/gerbera.db prior to starting our Gerbera installation. We’ve also wiped the database files to start from scratch and test changes that impacted how items are ingested into the database.
Fin.