#### Beyond Linux® From Scratch (System V Edition) - Version 12.3

### Chapter 16. Networking Utilities

- Prev

  Networking Utilities

- Next

  BIND Utilities-9.20.6

- Up
- Home

# Avahi-0.8

## Introduction to Avahi

The Avahi package is a system which facilitates service discovery on a local network.

This package is known to build and work properly using an LFS 12.3 platform.

### Package Information

- Download (HTTP): https://github.com/lathiat/avahi/releases/download/v0.8/avahi-0.8.tar.gz

- Download MD5 sum: 229c6aa30674fc43c202b22c5f8c2be7

- Download size: 1.5 MB

- Estimated disk space required: 32 MB

- Estimated build time: 0.3 SBU

### Additional Downloads

- Required patch: https://www.linuxfromscratch.org/patches/blfs/12.3/avahi-0.8-ipv6_race_condition_fix-1.patch

### Avahi Dependencies

#### Required

GLib-2.82.5 (GObject Introspection recommended)

#### Recommended

GTK-3.24.48 and libdaemon-0.14

#### Optional

D-Bus Python-1.3.2, libevent-2.1.12, Doxygen-1.13.2, GTK+-2 (deprecated), and xmltoman (for generating documentation)

## Installation of Avahi

There should be a dedicated user and group to take control of the avahi-daemon daemon after it is started. Issue the following commands as the `root` user:

    groupadd -fg 84 avahi &&
    useradd -c "Avahi Daemon Owner" -d /run/avahi-daemon -u 84 \
            -g avahi -s /bin/false avahi

There should also be a dedicated privileged access group for Avahi clients. Issue the following command as the `root` user:

    groupadd -fg 86 netdev

Fix a regression that results in a race condition when IPv6 is in use and multiple network adapters are present on the system:

    patch -Np1 -i ../avahi-0.8-ipv6_race_condition_fix-1.patch

Fix a security vulnerability in avahi-daemon:

    sed -i '426a if (events & AVAHI_WATCH_HUP) { \
    client_free(c); \
    return; \
    }' avahi-daemon/simple-protocol.c

Install Avahi by running the following commands:

    ./configure \
        --prefix=/usr                  \
        --sysconfdir=/etc              \
        --localstatedir=/var           \
        --disable-static               \
        --disable-libevent             \
        --disable-mono                 \
        --disable-monodoc              \
        --disable-python               \
        --disable-qt3                  \
        --disable-qt4                  \
        --disable-qt5                  \
        --enable-core-docs             \
        --with-distro=none             \
        --with-systemdsystemunitdir=no \
        --with-dbus-system-address='unix:path=/run/dbus/system_bus_socket' &&
    make

This package does not come with a test suite.

Now, as the `root` user:

    make install

## Command Explanations

`--disable-static`: This switch prevents installation of static versions of the libraries.

`--disable-libevent`: This parameter disables the use of libevent-2.1.12. Remove if you have it installed.

`--disable-mono`: This parameter disables the Mono bindings.

`--disable-monodoc`: This parameter disables documentation for the Mono bindings.

`--disable-python`: This parameter disables the scripts that depend on Python. It also allows a regular install to complete successfully.

`--disable-qt3`: This parameter disables the attempt to build the obsolete Qt3 portions of the package.

`--disable-qt4`: This parameter disables the attempt to build the obsolete Qt4Core portions of the package.

`--enable-core-docs`: This parameter enables the building of documentation.

`--with-distro=none`: There is an obsolete boot script in the distribution for LFS. This option disables it.

`--with-systemdsystemunitdir=no`: Without it, the daemon fails to start in BLFS, which does not support systemd.

`--with-dbus-system-address=`: This option prevents the package from referring to the deprecated `/var/run` directory.

`--disable-dbus`: This parameter disables the use of D-Bus.

`--disable-gtk`: This parameter disables the use of GTK+2.

`--disable-gtk3`: This parameter disables the use of GTK+3.

`--disable-qt5`: This parameter disables the use of Qt5, and allows building without it.

`--disable-libdaemon`: This parameter disables the use of libdaemon. If you use this option, avahi-daemon won't be built.

`--enable-tests`: This option enables the building of tests and examples.

`--enable-compat-howl`: This option enables the compatibility layer for HOWL.

`--enable-compat-libdns_sd`: This option enables the compatibility layer for libdns_sd.

## Configuring avahi

### Boot Script

To automatically start the avahi-daemon when the system is rebooted, install the `/etc/rc.d/init.d/avahi` bootscript from the blfs-bootscripts-20250225 package.

    make install-avahi

## Contents

Installed Programs: avahi-autoipd, avahi-browse, avahi-browse-domains, avahi-daemon, avahi-discover-standalone, avahi-dnsconfd, avahi-publish, avahi-publish-address, avahi-publish-service, avahi-resolve, avahi-resolve-address, avahi-resolve-host-name, avahi-set-host-name, bshell, bssh, and bvnc
Installed Libraries: libavahi-client.so, libavahi-common.so, libavahi-core.so, libavahi-glib.so, libavahi-gobject.so, libavahi-libevent.so libavahi-ui-gtk3.so, libavahi-ui.so, libdns_sd.so, and libhowl.so
Installed Directories: /etc/avahi/services, /usr/include/{avahi-client,avahi-common, avahi-compat-howl, avahi-compat-libdns_sd, avahi-core, avahi-glib, avahi-gobject, avahi-libevent, avahi-ui}, /usr/lib/avahi, /usr/share/avahi

### Short Descriptions

avahi-autoipd | is a IPv4LL network address configuration daemon
avahi-browse | browses for mDNS/DNS-SD services using the Avahi daemon
avahi-browse-domains | browses for mDNS/DNS-SD services using the Avahi daemon
avahi-daemon | is the Avahi mDNS/DNS-SD daemon
avahi-discover-standalone | browses for mDNS/DNS-SD services using the Avahi daemon
avahi-dnsconfd | is a Unicast DNS server from mDNS/DNS-SD configuration daemon
avahi-publish | registers a mDNS/DNS-SD service or host name or address mapping using the Avahi daemon
avahi-publish-address | registers a mDNS/DNS-SD service or host name or address mapping using the Avahi daemon
avahi-publish-service | registers a mDNS/DNS-SD service or host name or address mapping using the Avahi daemon
avahi-resolve | resolves one or more mDNS/DNS host name(s) to IP address(es) (and vice versa) using the Avahi daemon
avahi-resolve-address | resolves one or more mDNS/DNS host name(s) to IP address(es) (and vice versa) using the Avahi daemon
avahi-resolve-host-name | resolves one or more mDNS/DNS host name(s) to IP address(es) (and vice versa) using the Avahi daemon
avahi-set-host-name | changes the mDNS host name
bssh | browses for SSH servers on the local network
bvnc | browses for VNC servers on the local network

- Prev

  Networking Utilities

- Next

  BIND Utilities-9.20.6

- Up
- Home