Building MariaDB on FreeBSD
Contents
It is relatively straightforward to build MariaDB from source on FreeBSD. When working with an individual host, you can use Ports to compile particular or multiple versions of MariaDB. When working with multiple hosts, you can use Poudriere to build MariaDB once, then serve it as a package to multiple FreeBSD hosts.
Using Ports
The FreeBSD Ports Collection provides a series of Makefiles that you can use to retrieve source code, configure builds, install dependencies and compile software. This allows you to use more advanced releases than what is normally available through the package managers as well as enable any additional features that interest you.
In the event that you have not used Ports before on your system, you need to first fetch and extract the Ports tree. This downloads the Ports tree from FreeBSD and extracts it onto your system, placing the various Makefiles, patches and so on in the /usr/ports/
directory.
# portsnap fetch extract
In the event that you have used Ports before on this system, run Portsnap again to download and install any updates to the Ports tree.
# portsnap fetch update
This ensures that you are using the most up to date release of the Ports tree that is available on your system.
Building MariaDB from Ports
Once Portsnap has installed or updated your Ports tree, you can change into the relevant directory and install MariaDB. Ports for MariaDB are located in the /usr/ports/databases/
directory.
$ ls /usr/ports/databases | grep mariadb mariadb-connector-c mariadb-connector-odbc mariadb100-client mariadb100-server mariadb101-client mariadb101-server mariadb102-client mariadb102-server mariadb103-client mariadb103-server mariadb55-client mariadb55-server
Note that FreeBSD treats the Server and Client as separate packages. The Client is a dependency of the Server, so you only need to build the Server to get both. It also provides a number of different versions. You can search the available ports from Fresh Ports. Decide what version of MariaDB you want to install, the change into the relevant directory. Once in the directory, run Make to build MariaDB.
# cd /usr/ports/databases/mariadb103-server # make
In addition to downloading and building MariaDB, Ports also downloads and build any libraries on which MariaDB depends. Each port it builds will take you to a GUI window where you can select various build options. In the case of MariaDB, this includes various storage engines and specific features you need in your build.
Once you finish building the ports, install MariaDB on your system and clean the directory to free up disk space.
# make install clean
This installs FreeBSD on your server. You can now enable, configure and start the service as you normally would after installing MariaDB from a package.
Using Poudriere
Poudriere is a utility for building FreeBSD packages. It allows you to build MariaDB from a FreeBSD Jail, then serve it as a binary package to other FreeBSD hosts. You may find this is particularly useful when building to deploy multiple MariaDB servers on FreeBSD, such as with Galera Cluster or similar deployments.
Building MariaDB
Once you've configured your host to use Jails and Poudriere, initialize a jail to use in building packages and a jail for managing ports.
# poudriere jail -c -j package-builder -v 11.2-RELEASE # poudriere ports -c -p local-ports
This creates two jails, package-builder
and local-ports
, which you can then use to build MariaDB. Create a text file to define the packages you want to build. Poudriere will build these packages as well as their dependencies. MariaDB is located at databases/mariadb103-server
. Adjust the path to match the version you want to install.
$ vi maraidb-package-builder.txt databases/mariadb103-server
Use the options
command to initialize the build options for the packages you want Poudriere to compile.
# poudriere options -j package-builder -p local-ports -z mariadb-builder -f mariadb-package-builder.txt
Lastly, use the bulk
command to compile the packages.
# poudriere bulk -j package-builder -p local-ports -z mariadb-builder -f mariadb-package-builder.txt
Using Poudriere Repositories
In order to use Poudriere, you need to set up and configure a web server, such as Nginx or Apache to serve the directory that Poudriere built. For instance, in the case of the above example, you would map to the package-builder
jail: /usr/local/poudriere/data/packages/package-builder/
. You may find it useful to map this directory to a sub-domain, for instance httpspkg.example.com
or something similar.
Lastly, you need to configure the FreeBSD hosts to use the Poudriere repository you just created. On each host, disable the FreeBSD official repositories and enable your Poudriere repository as an alternative.
# vi /usr/local/etc/pkg/repos/FreeBSD.conf FreeBSD: { enabled: no }
Then add the URL for your Poudriere repository to configuration file:
# vi /usr/local/etc/pkg/repos/mariadb.conf custom: { url: "https://pkg.example.com", enabled: yes }
You can then install MariaDB from Poudriere using the package manager.
# pkg install mariadb103-server