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.84.4 (GObject Introspection recommended)

Recommended

Optional

D-Bus Python-1.4.0, libevent-2.1.12, Doxygen-1.14.0, 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-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

The avahi-daemon will conflict with systemd-resolved under the default configuration if both are running simultaneously on a system because both will act as a Multicast DNS resolver and responder. If you must run the Avahi daemon (the BLFS editors don't recommend to do that unless you really need its functionality), disable the Multicast DNS support of systemd-resolved and enable the previously installed systemd unit by running the following command as the root user:

mkdir /etc/systemd/resolved.conf.d &&
cat > /etc/systemd/resolved.conf.d/no-mdns.conf << EOF &&
[Resolve]
MulticastDNS=no
EOF
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 (note that the following command will also implicitly enable avahi-daemon, so if you are running it, you need to make sure you've disabled the systemd-resolved Multicast DNS support as mentioned above):

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