Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding, and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression. It is open-sourced under the MIT License. You can browse its source code on Github. The specification of the Brotli Compressed Data Format is defined in RFC 7932. This tutorial shows how to compile Brotli compression library from source on Fedora 29 system.
Requirements
- Fedora 29 system.
- Non-root user with sudo access.
Initial steps
Check the Fedora version:
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)
Set up the timezone:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Update your operating system packages:
sudo dnf check-update; sudo dnf update -y
Build Brotli
Install build tools and packages necessary to build Brotli:
sudo dnf install -y wget gcc make bc sed autoconf automake libtool git tree
Clone Brotli repository:
git clone https://github.com/google/brotli.git
Navigate to Brotli source tree directory:
cd brotli
Create a manual page for Brotli command:
sudo cp ~/brotli/docs/brotli.1 /usr/share/man/man1 && sudo gzip /usr/share/man/man1/brotli.1
Check the man page:
man brotli
To generate Autotools configure
file run ./bootstrap
command first:
./bootstrap
After the above command, you should have access to the usual C program build steps: configure
, make
and make install
available.
For help, you can run ./configure --help
command. Now we are ready to build Brotli with the following instructions.
The basic commands to build and install brotli are:
./configure --prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib64/brotli \
--libdir=/usr/lib64/brotli \
--datarootdir=/usr/share \
--mandir=/usr/share/man/man1 \
--docdir=/usr/share/doc
make
sudo make install
After the successful build process, you can check Brotli version:
brotli --version
# brotli 1.0.7
To see help about brotli command, you can run:
brotli -h
That's it. You have successfully compiled Brotli from source code.