Avahi-0.8

Introduction to Avahi

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

[Note]

Note

Development versions of BLFS may not build or run some packages properly if LFS or dependencies have been updated since the most recent stable versions of the books.

Package Information

Additional Downloads

Avahi Dependencies

Required

GLib-2.78.1

Recommended

Optional

D-Bus Python-1.3.2, libevent-2.1.12, PyGTK-2.24.0, Doxygen-1.9.8 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        \
    --enable-core-docs   \
    --with-distro=none   \
    --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-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 start the avahi-daemon daemon at boot, enable the previously installed systemd unit by running the following command as the root user:

systemctl enable avahi-daemon

To start the avahi-dnsconfd daemon at boot, enable the previously installed systemd unit by running the following command as the root user:

systemctl enable avahi-dnsconfd

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-qt5, 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-qt5, 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