2024-11-02

# Compile Netatalk from Source

## Overview

This appendix describes how to compile Netatalk from source for specific operating systems. Before starting, please read through the Installation chapter first. You need to have a copy of Netatalk's source code before proceeding.

Please note that these guides are automatically generated, and may not be optimized for your system. Also, the steps for launching Netatalk are incomplete for some OSes, because of technical constraints.

## Operating Systems

### Alpine Linux

Install dependencies

    apk add \
      acl-dev \
      avahi-compat-libdns_sd \
      avahi-dev \
      bison \
      build-base \
      cracklib \
      cracklib-dev \
      cracklib-words \
      cups \
      cups-dev \
      curl \
      db-dev \
      dbus-dev \
      docbook-xsl \
      flex \
      gcc \
      krb5-dev \
      libevent-dev \
      libgcrypt-dev \
      libtirpc-dev \
      libtracker \
      libxslt \
      linux-pam-dev \
      mariadb-dev \
      meson \
      ninja \
      openldap-dev \
      openrc \
      perl \
      pkgconfig \
      rpcsvc-proto-dev \
      talloc-dev \
      tracker \
      tracker-dev \
      tracker-miners \
      unicode-character-database

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-tests=true

Build

    meson compile -C build

Run integration tests

    cd build && meson test && cd ..

Install

    meson install -C build

Check netatalk capabilities

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V

Uninstall

    ninja -C build uninstall

### Arch Linux

Install dependencies

    pacman -Sy --noconfirm \
      avahi \
      bison \
      cmark-gfm \
      cracklib \
      cups \
      db \
      docbook-xsl \
      flex \
      gcc \
      libxslt \
      localsearch \
      mariadb-clients \
      meson \
      ninja \
      perl \
      pkgconfig \
      rpcsvc-proto \
      talloc \
      tinysparql \
      unicode-character-database

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-docbook-path=/usr/share/xml/docbook/xsl-stylesheets-1.79.2 \
      -Dwith-init-hooks=false \
      -Dwith-tests=true

Build

    meson compile -C build

Run integration tests

    cd build && meson test && cd ..

Install

    meson install -C build

Check netatalk capabilities

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V

Uninstall

    ninja -C build uninstall

### Debian Linux

Install dependencies

    apt-get update
    apt-get install --assume-yes --no-install-recommends \
      bison \
      cmark-gfm \
      cracklib-runtime \
      docbook-xsl \
      file \
      flex \
      libacl1-dev \
      libavahi-client-dev \
      libcrack2-dev \
      libcups2-dev \
      libdb-dev \
      libdbus-1-dev \
      libevent-dev \
      libgcrypt-dev \
      libglib2.0-dev \
      libkrb5-dev \
      libldap2-dev \
      libmariadb-dev \
      libpam0g-dev \
      libtalloc-dev \
      libtirpc-dev \
      libtracker-sparql-3.0-dev \
      libwrap0-dev \
      meson \
      ninja-build \
      quota \
      systemtap-sdt-dev \
      tcpd \
      tracker \
      tracker-miner-fs \
      unicode-data \
      xsltproc

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-hooks=false \
      -Dwith-init-style=debian-sysv,systemd \
      -Dwith-pkgconfdir-path=/etc/netatalk \
      -Dwith-tests=true

Build

    meson compile -C build

Run integration tests

    cd build && meson test && cd ..

Install

    meson install -C build

Check netatalk capabilities

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V

Uninstall

    ninja -C build uninstall

### Fedora Linux

Install dependencies

    dnf --setopt=install_weak_deps=False --assumeyes install \
      avahi-devel \
      bison \
      chkconfig \
      cracklib-devel \
      cups-devel \
      dbus-devel \
      docbook-style-xsl \
      flex \
      glib2-devel \
      krb5-devel \
      libacl-devel \
      libdb-devel \
      libgcrypt-devel \
      libtalloc-devel \
      libxslt \
      mariadb-connector-c-devel \
      meson \
      ninja-build \
      openldap-devel \
      pam-devel \
      perl \
      perl-Net-DBus \
      quota-devel \
      systemd \
      systemtap-sdt-devel \
      tracker \
      tracker-devel \
      unicode-ucd

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-hooks=false \
      -Dwith-tests=true

Build

    meson compile -C build

Run integration tests

    cd build && meson test && cd ..

Install

    sudo meson install -C build

Check netatalk capabilities

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V

Uninstall

    sudo ninja -C build uninstall

### openSUSE Linux

Install dependencies

    zypper in -y \
      bison \
      cracklib-devel \
      dbus-1-devel \
      docbook-xsl-stylesheets \
      file \
      flex \
      gawk \
      gcc \
      libacl-devel \
      libavahi-devel \
      libdb-4_8-devel \
      libevent-devel \
      libgcrypt-devel \
      libmariadb-devel \
      libtalloc-devel \
      libtdb-devel \
      libtracker-sparql-3_0-0 \
      libxslt-tools \
      meson \
      ninja \
      openldap2-devel \
      pam-devel \
      perl \
      pkg-config \
      systemd \
      systemtap-sdt-devel \
      tcpd-devel \
      tracker \
      unicode-ucd

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-docbook-path=/usr/share/xml/docbook/stylesheet/nwalsh/1.79.2 \
      -Dwith-init-hooks=false \
      -Dwith-tests=true

Build

    meson compile -C build

Run integration tests

    cd build && meson test && cd ..

Install

    meson install -C build

Check netatalk capabilities

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V

Uninstall

    ninja -C build uninstall

### Ubuntu Linux

Install dependencies

    sudo apt-get update
    sudo apt-get install --assume-yes --no-install-recommends \
      bison \
      cmark-gfm \
      cracklib-runtime \
      docbook-xsl \
      file \
      flex \
      libacl1-dev \
      libavahi-client-dev \
      libcrack2-dev \
      libcups2-dev \
      libdb-dev \
      libdbus-1-dev \
      libevent-dev \
      libgcrypt-dev \
      libglib2.0-dev \
      libkrb5-dev \
      libldap2-dev \
      libmariadb-dev \
      libpam0g-dev \
      libtalloc-dev \
      libtirpc-dev \
      libtracker-sparql-3.0-dev \
      libwrap0-dev \
      meson \
      ninja-build \
      quota \
      systemtap-sdt-dev \
      tcpd \
      tracker \
      tracker-miner-fs \
      unicode-data \
      xsltproc

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-hooks=false \
      -Dwith-manual-l10n=ja \
      -Dwith-tests=true

Build

    meson compile -C build

Run distribution tests

    cd build && meson dist && cd ..

Install

    sudo meson install -C build

Check netatalk capabilities

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V

Start netatalk

    sudo systemctl start netatalk
    sleep 1
    asip-status localhost

Stop netatalk

    sudo systemctl stop netatalk

Uninstall

    sudo ninja -C build uninstall

### macOS

Install dependencies

    brew install berkeley-db cmark-gfm docbook-xsl libxslt meson mysql talloc
    curl https://www.unicode.org/Public/UNIDATA/UnicodeData.txt --output UnicodeData.txt

Configure

    meson setup build \
      -Dbuildtype=release \
      -Dwith-tests=true

Build

    meson compile -C build

Run integration tests

    cd build && meson test && cd ..

Install

    sudo meson install -C build

Check netatalk capabilities

    /opt/homebrew/sbin/netatalk -V
    /opt/homebrew/sbin/afpd -V

Start netatalk

    sudo netatalkd start
    sleep 1
    asip-status localhost

Stop netatalk

    sudo netatalkd stop

Uninstall

    sudo ninja -C build uninstall

### DragonflyBSD

Install required packages

    pkg install -y \
      avahi \
      bison \
      db5 \
      docbook-xsl \
      krb5-devel \
      libevent \
      libgcrypt \
      libxslt \
      meson \
      mysql80-client \
      openldap26-client \
      perl5 \
      pkgconf \
      py39-gdbm \
      py39-sqlite3 \
      py39-tkinter \
      talloc \
      tracker3

Configure and build

    set -e
    curl https://www.unicode.org/Public/UNIDATA/UnicodeData.txt --output UnicodeData.txt
    meson setup build \
      -Dbuildtype=release \
      -Dwith-appletalk=true \
      -Dwith-tests=true
    meson compile -C build
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    ninja -C build uninstall

### FreeBSD

Install required packages

    pkg install -y \
      avahi \
      bison \
      db5 \
      docbook-xsl \
      flex \
      libevent \
      libgcrypt \
      libxslt \
      meson \
      mysql84-client \
      openldap26-client-2.6.8 \
      p5-Net-DBus \
      perl5 \
      pkgconf \
      talloc \
      tracker3

Configure and build

    set -e
    curl https://www.unicode.org/Public/UNIDATA/UnicodeData.txt --output UnicodeData.txt
    meson setup build \
      -Dbuildtype=release \
      -Dpkg_config_path=/usr/local/libdata/pkgconfig \
      -Dwith-tests=true
    meson compile -C build
    cd build
    meson test
    cd ..
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    /usr/local/etc/rc.d/netatalk start
    sleep 1
    /usr/local/bin/asip-status localhost
    /usr/local/etc/rc.d/netatalk stop
    /usr/local/etc/rc.d/netatalk disable
    ninja -C build uninstall

### NetBSD

Install required packages

    pkg_add \
      avahi \
      bison \
      db5 \
      docbook-xsl \
      flex \
      gcc13 \
      gnome-tracker \
      heimdal \
      libcups \
      libevent \
      libgcrypt \
      libxslt \
      meson \
      mysql-client \
      p5-Net-DBus \
      perl \
      pkg-config \
      talloc \
      tex-unicode-data

Configure and build

    set -e
    meson setup build \
      -Dbuildtype=release \
      -Dpkg_config_path=/usr/pkg/lib/pkgconfig \
      -Dwith-appletalk=true \
      -Dwith-dtrace=false \
      -Dwith-krbV-uam=false \
      -Dwith-tests=true
    meson compile -C build
    cd build
    meson test
    cd ..
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    service netatalk onestart
    sleep 1
    asip-status localhost
    service netatalk onestop
    ninja -C build uninstall

### OpenBSD

Install required packages

    pkg_add -I \
      avahi \
      bison \
      db-4.6.21p7v0 \
      dbus \
      docbook-xsl \
      gcc-11.2.0p14 \
      libevent \
      libgcrypt \
      libtalloc \
      libxslt \
      mariadb-client \
      meson \
      openldap-client-2.6.8v0 \
      openpam \
      p5-Net-DBus \
      pkgconf \
      tracker3

Configure and build

    set -e
    curl https://www.unicode.org/Public/UNIDATA/UnicodeData.txt --output UnicodeData.txt
    meson setup build \
      -Dbuildtype=release \
      -Dpkg_config_path=/usr/local/lib/pkgconfig \
      -Dwith-tests=true
    meson compile -C build
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    rcctl -d start netatalk
    sleep 1
    asip-status localhost
    rcctl -d stop netatalk
    rcctl -d disable netatalk
    ninja -C build uninstall

### OmniOS

Install required packages

    pkg install \
      build-essential \
      pkg-config
    curl -O https://pkgsrc.smartos.org/packages/SmartOS/bootstrap/bootstrap-trunk-x86_64-20240116.tar.gz
    tar -zxpf bootstrap-trunk-x86_64-20240116.tar.gz -C /
    export PATH=/opt/local/sbin:/opt/local/bin:/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin:$PATH
    pkgin -y install \
      avahi \
      docbook-xsl \
      gnome-tracker \
      libevent \
      libgcrypt \
      libxslt \
      meson \
      mysql-client \
      talloc

Configure and build

    set -e
    export PATH=/opt/local/sbin:/opt/local/bin:/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin:$PATH
    curl https://www.unicode.org/Public/UNIDATA/UnicodeData.txt --output UnicodeData.txt
    meson setup build \
      -Dbuildtype=release \
      -Dpkg_config_path=/opt/local/lib/pkgconfig \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-ldap-path=/opt/local \
      -Dwith-tests=true
    meson compile -C build
    cd build
    meson test
    cd ..
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sleep 1
    svcadm enable svc:/network/netatalk:default
    sleep 1
    /usr/local/bin/asip-status localhost
    svcadm disable svc:/network/netatalk:default
    ninja -C build uninstall

### Solaris

Install required packages

    pkg install \
      bison \
      flex \
      gcc \
      libevent \
      libgcrypt \
      ninja \
      pkg-config \
      python/pip
    pip install meson

Configure and build

    set -e
    curl https://www.unicode.org/Public/UNIDATA/UnicodeData.txt --output UnicodeData.txt
    meson setup build \
      -Dbuildtype=release \
      -Dpkg_config_path=/usr/lib/amd64/pkgconfig \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-docbook-path=/usr/share/sgml/docbook/xsl-stylesheets \
      -Dwith-tests=true
    meson compile -C build
    cd build
    meson test
    cd ..
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sleep 1
    svcadm enable svc:/network/netatalk:default
    sleep 1
    /usr/local/bin/asip-status localhost
    svcadm disable svc:/network/netatalk:default
    ninja -C build uninstall