2024-09-24

# Netatalk をソースコードからコンパイルする

## 概要

本付録では、以下オペレーティング システムで Netatalk のソースコードをコンパイルする手順が記載されている。

本手順書は自動的に生成されたため、ご使用のシステムに最適化されていない可能性があるのでご了承ください。

Autotools か Meson のビルドシステムは選択可能。 テスト手順は任意である。

## オペレーティング システム一覧

### Alpine Linux

Install dependencies

    apk add \
      acl-dev \
      autoconf \
      automake \
      avahi-compat-libdns_sd \
      avahi-dev \
      bison \
      build-base \
      cracklib \
      cracklib-dev \
      cracklib-words \
      curl \
      db-dev \
      dbus-dev \
      dbus-glib-dev \
      flex \
      gcc \
      krb5-dev \
      libevent-dev \
      libgcrypt-dev \
      libtirpc-dev \
      libtool \
      libtracker \
      linux-pam-dev \
      mariadb-dev \
      meson \
      ninja \
      openldap-dev \
      openrc \
      openssl-dev \
      pkgconfig \
      rpcsvc-proto-dev \
      talloc-dev \
      tracker \
      tracker-dev \
      tracker-miners

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --with-cracklib \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=openrc \
      --with-tracker-pkgconfig-version=3.0

Autotools - Build

    make -j $(nproc)

Autotools - Run tests

    make check

Autotools - Install

    make install

Autotools - Start netatalk

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

Autotools - Uninstall

    make uninstall

Meson - Configure

    meson setup build \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-style=openrc \
      -Dwith-tests=true

Meson - Build

    meson compile -C build

Meson - Run tests

    cd build && meson test

Meson - Install

    meson install -C build

Meson - Start netatalk

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

Meson - Uninstall

    ninja -C build uninstall

### Arch Linux

Install dependencies

    pacman -Sy --noconfirm \
      autoconf \
      automake \
      cracklib \
      gcc \
      libtool \
      make \
      mariadb-clients \
      meson \
      ninja \
      pkgconfig \
      rpcsvc-proto

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --disable-init-hooks \
      --with-cracklib \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=systemd

Autotools - Build

    make -j $(nproc)

Autotools - Run tests

    make check

Autotools - Install

    make install

Autotools - Start netatalk

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

Autotools - Uninstall

    make uninstall

Meson - Configure

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

Meson - Build

    meson compile -C build

Meson - Run tests

    cd build && meson test

Meson - Install

    meson install -C build

Meson - Start netatalk

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

Meson - Uninstall

    ninja -C build uninstall

### Debian Linux

Install dependencies

    apt-get update
    apt-get install --assume-yes --no-install-recommends \
      autoconf \
      automake \
      bison \
      default-libmysqlclient-dev \
      file \
      flex \
      gcc \
      libacl1-dev \
      libavahi-client-dev \
      libcrack2-dev \
      libdb-dev \
      libdbus-1-dev \
      libdbus-glib-1-dev \
      libevent-dev \
      libgcrypt-dev \
      libglib2.0-dev \
      libkrb5-dev \
      libldap2-dev \
      libltdl-dev \
      libpam0g-dev \
      libssl-dev \
      libtalloc-dev \
      libtirpc-dev \
      libtool \
      libtool-bin \
      libtracker-sparql-3.0-dev \
      libwolfssl-dev \
      libwrap0-dev \
      make \
      meson \
      ninja-build \
      quota \
      systemtap-sdt-dev \
      tcpd \
      tracker \
      tracker-miner-fs

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --disable-dependency-tracking \
      --disable-init-hooks \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --enable-quota \
      --with-cracklib \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=debian-systemd \
      --with-tracker-pkgconfig-version=3.0

Autotools - Build

    make -j $(nproc) all

Autotools - Run tests

    make check

Autotools - Install

    make install

Autotools - Start netatalk

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

Autotools - Uninstall

    make uninstall

Meson - Configure

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

Meson - Build

    meson compile -C build

Meson - Run tests

    cd build && meson test

Meson - Install

    meson install -C build

Meson - Start netatalk

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

Meson - Uninstall

    ninja -C build uninstall

### Fedora Linux

Install dependencies

    dnf --setopt=install_weak_deps=False --assumeyes install \
      automake \
      avahi-devel \
      bison \
      chkconfig \
      cracklib-devel \
      dbus-devel \
      dbus-glib-devel \
      flex \
      glib2-devel \
      krb5-devel \
      libacl-devel \
      libdb-devel \
      libgcrypt-devel \
      libtalloc-devel \
      libtool \
      mariadb-connector-c-devel \
      meson \
      ninja-build \
      openldap-devel \
      openssl-devel \
      pam-devel \
      perl \
      quota-devel \
      systemd \
      systemtap-sdt-devel \
      tracker \
      tracker-devel

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --disable-init-hooks \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --enable-quota \
      --with-cracklib \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=redhat-systemd \
      --with-tracker-pkgconfig-version=3.0

Autotools - Build

    make -j $(nproc)

Autotools - Run tests

    make check

Autotools - Install

    sudo make install

Autotools - Start netatalk

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

Autotools - Uninstall

    sudo make uninstall

Meson - Configure

    meson setup build \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-hooks=false \
      -Dwith-init-style=redhat-systemd \
      -Dwith-tests=true

Meson - Build

    meson compile -C build

Meson - Run tests

    cd build && meson test

Meson - Install

    sudo meson install -C build

Meson - Start netatalk

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

Meson - Uninstall

    sudo ninja -C build uninstall

### openSUSE Linux

Install dependencies

    zypper in -y \
      automake \
      file \
      gawk \
      gcc \
      libtool \
      make \
      meson \
      ninja \
      pkg-config \
      systemd \
      wget &&
    zypper in -y \
      bison \
      cracklib-devel \
      dbus-1-devel \
      flex \
      libacl-devel \
      libavahi-devel \
      libdb-4_8-devel \
      libevent-devel \
      libgcrypt-devel \
      libmariadb-devel \
      libopenssl-devel \
      libtalloc-devel \
      libtdb-devel \
      libtracker-sparql-3_0-0 \
      openldap2-devel \
      pam-devel \
      systemtap-sdt-devel \
      tcpd-devel \
      tracker

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --disable-init-hooks \
      --disable-krbV-uam \
      --enable-pgp-uam \
      --with-cracklib \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=suse-systemd \
      --with-tracker-pkgconfig-version=3.0

Autotools - Build

    make -j $(nproc)

Autotools - Run tests

    make check

Autotools - Install

    make install

Autotools - Start netatalk

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

Autotools - Uninstall

    make uninstall

Meson - Configure

    meson setup build \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-hooks=false \
      -Dwith-init-style=suse-systemd \
      -Dwith-tests=true

Meson - Build

    meson compile -C build

Meson - Run tests

    cd build && meson test

Meson - Install

    meson install -C build

Meson - Start netatalk

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

Meson - Uninstall

    ninja -C build uninstall

### Ubuntu Linux

Install dependencies

    sudo apt-get update
    sudo apt-get install --assume-yes --no-install-recommends autoconf \
    automake \
    bison \
    cracklib-runtime \
    docbook-xsl \
    flex \
    libacl1-dev \
    libavahi-client-dev \
    libcrack2-dev \
    libdb-dev \
    libdbus-1-dev \
    libdbus-glib-1-dev \
    libevent-dev \
    libgcrypt-dev \
    libglib2.0-dev \
    libkrb5-dev \
    libldap2-dev \
    libmariadb-dev \
    libpam0g-dev \
    libssl-dev \
    libtalloc-dev \
    libtirpc-dev \
    libtool \
    libtool-bin \
    libtracker-sparql-3.0-dev \
    libwolfssl-dev \
    libwrap0-dev \
    meson \
    ninja-build \
    quota \
    systemtap-sdt-dev \
    tcpd \
    tracker \
    tracker-miner-fs \
    xsltproc

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --disable-init-hooks \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --enable-quota \
      --with-cracklib \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-docbook=/usr/share/xml/docbook/stylesheet/docbook-xsl \
      --with-init-style=debian-systemd \
      --with-tracker-pkgconfig-version=3.0

Autotools - Generate manual pages

    make html

Autotools - Build

    make -j $(nproc) all

Autotools - Run tests

    make check

Autotools - Run distribution tests

    make distcheck

Autotools - Install

    sudo make install

Autotools - Start netatalk

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sudo systemctl start netatalk
    sleep 2
    asip-status localhost

Autotools - Stop netatalk

    sudo systemctl stop netatalk

Autotools - Uninstall

    sudo make uninstall

Meson - Configure

    meson setup build \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-manual=true \
      -Dwith-init-hooks=false \
      -Dwith-init-style=debian-systemd \
      -Dwith-tests=true

Meson - Build

    meson compile -C build

Meson - Run distribution tests

    cd build && meson dist

Meson - Install

    sudo meson install -C build

Meson - Start netatalk

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sudo systemctl start netatalk
    sleep 1
    asip-status localhost

Meson - Stop netatalk

    sudo systemctl stop netatalk

Meson - Uninstall

    sudo ninja -C build uninstall

### macOS

Install dependencies

    brew install automake berkeley-db libressl libtool meson mysql talloc

Autotools - Bootstrap

    ./bootstrap

Autotools - Configure

    ./configure \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --with-bdb=/opt/homebrew/opt/berkeley-db \
      --with-init-style=macos-launchd \
      --with-ssl-dir=/opt/homebrew/opt/libressl

Autotools - Build

    make -j $(nproc) all

Autotools - Run tests

    make check

Autotools - Install

    sudo make install

Autotools - Start netatalk

    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sudo /usr/local/bin/netatalkd start && sleep 2 && asip-status localhost

Autotools - Stop netatalk

    sudo netatalkd stop

Autotools - Uninstall

    sudo make uninstall

Meson - Configure

    meson setup build \
      -Dwith-init-style=macos-launchd \
      -Dwith-tests=true

Meson - Build

    meson compile -C build

Meson - Run tests

    cd build && meson test

Meson - Install

    sudo meson install -C build

Meson - Start netatalk

    /opt/homebrew/sbin/netatalk -V
    /opt/homebrew/sbin/afpd -V
    sudo netatalkd start && sleep 2 && asip-status localhost

Meson - Stop netatalk

    sudo netatalkd stop

Meson - Uninstall

    sudo ninja -C build uninstall

### DragonflyBSD

必要なパッケージをインストールする

    pkg install -y \
      autoconf \
      automake \
      avahi \
      bison \
      db5 \
      gmake \
      krb5-devel \
      libevent \
      libgcrypt \
      libtool \
      meson \
      mysql80-client \
      openldap26-client \
      perl5 \
      pkgconf \
      py39-gdbm \
      py39-sqlite3 \
      py39-tkinter \
      talloc \
      tracker3

コンフィグレーションとビルド

    set -e
    echo "Building with Autotools"
    ./bootstrap
    ./configure \
      --with-ssl-dir=/usr/local \
      --with-tracker-pkgconfig-version=3.0 \
      LDFLAGS=-L/usr/local/lib \
      MAKE=gmake
    gmake -j2
    gmake install
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    gmake uninstall
    echo "Building with Meson"
    meson setup build
    meson compile -C build
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    ninja -C build uninstall

### FreeBSD

必要なパッケージをインストールする

    pkg install -y \
      autoconf \
      automake \
      avahi \
      bison \
      db5 \
      flex \
      gmake \
      libevent \
      libgcrypt \
      libressl \
      libtool \
      meson \
      mysql84-client \
      openldap26-client-2.6.8 \
      pkgconf \
      talloc \
      tracker3

コンフィグレーションとビルド

    set -e
    echo "Building with Autotools"
    ./bootstrap
    ./configure \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --with-init-style=freebsd \
      --with-ldap=/usr/local \
      --with-ssl-dir=/usr/local \
      --with-tracker-pkgconfig-version=3.0 \
      MAKE=gmake \
      PKG_CONFIG_PATH=/usr/local/libdata/pkgconfig
    gmake -j $(nproc)
    gmake install
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    /usr/local/etc/rc.d/netatalk start
    sleep 2
    /usr/local/bin/asip-status localhost
    /usr/local/etc/rc.d/netatalk stop
    gmake uninstall
    echo "Building with Meson"
    meson setup build \
      -Dpkg_config_path=/usr/local/libdata/pkgconfig \
      -Dwith-init-style=freebsd
    meson compile -C build
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    /usr/local/etc/rc.d/netatalk start
    sleep 2
    /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

必要なパッケージをインストールする

    pkg_add \
      autoconf \
      automake \
      avahi \
      bison \
      db5 \
      dbus-glib \
      flex \
      gcc13 \
      gmake \
      gnome-tracker \
      libevent \
      libgcrypt \
      libressl \
      libtool \
      meson \
      mysql-client \
      p5-Net-DBus \
      perl \
      pkg-config \
      talloc

コンフィグレーションとビルド

    set -e
    echo "Building with Autotools"
    ./bootstrap
    ./configure \
      MAKE=gmake \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --with-init-style=netbsd \
      --with-tracker-pkgconfig-version=3.0
    gmake -j $(nproc)
    gmake install
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    service netatalk onestart
    sleep 2
    asip-status localhost
    service netatalk onestop
    gmake uninstall
    echo "Building with Meson"
    meson setup build \
      -Dpkg_config_path=/usr/pkg/lib/pkgconfig \
      -Dwith-dtrace=false \
      -Dwith-init-style=netbsd \
      -Dwith-tests=false
    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 2
    asip-status localhost
    service netatalk onestop
    ninja -C build uninstall

### OpenBSD

必要なパッケージをインストールする

    pkg_add -I \
      autoconf-2.71 \
      automake-1.16.5 \
      avahi \
      bison \
      dbus-glib \
      db-4.6.21p7v0 \
      gcc-11.2.0p11 \
      gmake \
      libevent \
      libgcrypt \
      libtalloc \
      libtool \
      mariadb-client \
      meson \
      openldap-client-2.6.7v0 \
      openpam \
      pkgconf \
      tracker3

コンフィグレーションとビルド

    set -e
    echo "Building with Autotools"
    export AUTOCONF_VERSION=2.71
    export AUTOMAKE_VERSION=1.16
    export CFLAGS=-I/usr/local/include
    export LDFLAGS=-L/usr/local/lib
    autoreconf -fi
    ./configure \
      --disable-init-hooks \
      --with-init-style=openbsd \
      --with-tracker-pkgconfig-version=3.0 \
      MAKE=gmake \
      PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    gmake -j $(nproc)
    echo "Building with Meson"
    meson setup build \
      -Dpkg_config_path=/usr/local/lib/pkgconfig \
      -Dwith-init-style=openbsd
    meson compile -C build
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    rcctl -d start netatalk
    sleep 2
    asip-status localhost
    rcctl -d stop netatalk
    rcctl -d disable netatalk
    ninja -C build uninstall

### OmniOS

必要なパッケージをインストールする

    pkg install \
      build-essential \
      libtool \
      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 \
      dbus-glib \
      gnome-tracker \
      libevent \
      libgcrypt \
      meson \
      mysql-client \
      talloc

コンフィグレーションとビルド

    set -e
    export PATH=/opt/local/sbin:/opt/local/bin:/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin:$PATH
    echo "Building with Autotools"
    export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
    ./bootstrap
    ./configure \
      --enable-pgp-uam \
      --with-bdb=/opt/local \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=solaris \
      --with-ldap=/opt/local \
      --with-tracker-pkgconfig-version=3.0
    make -j $(nproc)
    make install
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sleep 2
    svcadm enable svc:/network/netatalk:default
    sleep 2
    /usr/local/bin/asip-status localhost
    svcadm disable svc:/network/netatalk:default
    make uninstall
    echo "Building with Meson"
    meson setup build \
      -Dpkg_config_path=/opt/local/lib/pkgconfig \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-style=solaris \
      -Dwith-ldap-path=/opt/local \
      -Dwith-pgp-uam=true
    meson compile -C build
    meson install -C build
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sleep 2
    svcadm enable svc:/network/netatalk:default
    sleep 2
    /usr/local/bin/asip-status localhost
    svcadm disable svc:/network/netatalk:default
    ninja -C build uninstall

### Solaris

必要なパッケージをインストールする

    pkg install \
      autoconf \
      automake \
      bison \
      flex \
      gcc \
      libevent \
      libgcrypt \
      libtool \
      ninja \
      pkg-config \
      python/pip
    pip install meson
    wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz --no-check-certificate
    wget https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz --no-check-certificate
    tar xvf autoconf-2.71.tar.gz
    tar xvf automake-1.16.5.tar.gz
    cd autoconf-2.71
    ./configure --prefix=/usr
    make
    make install
    cd ../automake-1.16.5
    ./configure --prefix=/usr
    make
    make install
    cd ..

コンフィグレーションとビルド

    set -e
    echo "Building with Autotools"
    ./bootstrap
    ./configure \
      --enable-krbV-uam \
      --enable-pgp-uam \
      --with-dbus-sysconf-dir=/usr/share/dbus-1/system.d \
      --with-init-style=solaris \
      --with-tracker-pkgconfig-version=2.0 \
      --without-afpstats \
      MAKE=gmake \
      PKG_CONFIG_PATH=/usr/lib/amd64/pkgconfig
    gmake -j $(nproc)
    gmake install
    /usr/local/sbin/netatalk -V
    /usr/local/sbin/afpd -V
    sleep 2
    svcadm enable svc:/network/netatalk:default
    sleep 2
    /usr/local/bin/asip-status localhost
    svcadm disable -s svc:/network/netatalk:default
    gmake uninstall
    echo "Building with Meson"
    meson setup build \
      -Dpkg_config_path=/usr/lib/amd64/pkgconfig \
      -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d \
      -Dwith-init-style=solaris \
      -Dwith-pgp-uam=true \
      -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 2
    svcadm enable svc:/network/netatalk:default
    sleep 2
    /usr/local/bin/asip-status localhost
    svcadm disable svc:/network/netatalk:default
    ninja -C build uninstall