<?xml version="1.0" encoding="utf-8"?>
<appendix id="compile">
	<appendixinfo>
		<pubdate>2025-01-20</pubdate>
	</appendixinfo>
	<title>ソースコードから Netatalk をコンパイルする</title>
	<sect1 id="compile-overview">
		<title>概要</title>
	</sect1>
	<sect1>
		<para>
  本付録では、以下オペレーティング システムで Netatalk のソースコードをコンパイルする手順が記載されている。
  開始する前に、まずインストールの章をお読みください。
  続行する前に、Netatalk のソース コードのコピーが必要になる。
  </para>
		<para>
  本手順書は自動的に生成されたため、ご使用のシステムに最適化されていない可能性があるのでご了承ください。
  また、技術的な制約により、一部の OS では Netatalk を起動する手順が不完全である。
  </para>
	</sect1>
	<sect1 id="compile-os">
		<title>オペレーティング システム一覧</title>
	</sect1>
	<sect1>
		<sect2 id="build-alpine">
			<title>Alpine Linux</title>
			<para>Install dependencies</para>
			<para>
				<screen>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 localsearch mariadb-dev meson ninja openldap-dev openrc perl pkgconfig rpcsvc-proto-dev talloc-dev tinysparql-dev unicode-character-database
</screen>
			</para>
			<para>Configure</para>
			<para>
				<screen>meson setup build -Dbuildtype=release -Dwith-appletalk=true -Dwith-dbus-sysconf-path=/usr/share/dbus-1/system.d -Dwith-tests=true
</screen>
			</para>
			<para>Build</para>
			<para>
				<screen>meson compile -C build</screen>
			</para>
			<para>Run integration tests</para>
			<para>
				<screen>cd build &amp;&amp; meson test &amp;&amp; cd ..</screen>
			</para>
			<para>Install</para>
			<para>
				<screen>meson install -C build</screen>
			</para>
			<para>Check netatalk capabilities</para>
			<para>
				<screen>netatalk -V
afpd -V
</screen>
			</para>
			<para>Uninstall</para>
			<para>
				<screen>ninja -C build uninstall</screen>
			</para>
		</sect2>
		<sect2 id="build-archlinux">
			<title>Arch Linux</title>
			<para>Install dependencies</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>Configure</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>Build</para>
			<para>
				<screen>meson compile -C build</screen>
			</para>
			<para>Run integration tests</para>
			<para>
				<screen>cd build &amp;&amp; meson test &amp;&amp; cd ..</screen>
			</para>
			<para>Install</para>
			<para>
				<screen>meson install -C build</screen>
			</para>
			<para>Check netatalk capabilities</para>
			<para>
				<screen>netatalk -V
afpd -V
</screen>
			</para>
			<para>Uninstall</para>
			<para>
				<screen>ninja -C build uninstall</screen>
			</para>
		</sect2>
		<sect2 id="build-debian">
			<title>Debian Linux</title>
			<para>Install dependencies</para>
			<para>
				<screen>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 libgcrypt20-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
</screen>
			</para>
			<para>Configure</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>Build</para>
			<para>
				<screen>meson compile -C build</screen>
			</para>
			<para>Run integration tests</para>
			<para>
				<screen>cd build &amp;&amp; meson test &amp;&amp; cd ..</screen>
			</para>
			<para>Install</para>
			<para>
				<screen>meson install -C build</screen>
			</para>
			<para>Check netatalk capabilities</para>
			<para>
				<screen>netatalk -V
afpd -V
</screen>
			</para>
			<para>Uninstall</para>
			<para>
				<screen>ninja -C build uninstall</screen>
			</para>
		</sect2>
		<sect2 id="build-fedora">
			<title>Fedora Linux</title>
			<para>Install dependencies</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>Configure</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>Build</para>
			<para>
				<screen>meson compile -C build</screen>
			</para>
			<para>Run integration tests</para>
			<para>
				<screen>cd build &amp;&amp; meson test &amp;&amp; cd ..</screen>
			</para>
			<para>Install</para>
			<para>
				<screen>sudo meson install -C build</screen>
			</para>
			<para>Check netatalk capabilities</para>
			<para>
				<screen>netatalk -V
afpd -V
</screen>
			</para>
			<para>Uninstall</para>
			<para>
				<screen>sudo ninja -C build uninstall</screen>
			</para>
		</sect2>
		<sect2 id="build-ubuntu">
			<title>Ubuntu Linux</title>
			<para>Install dependencies</para>
			<para>
				<screen>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 libgcrypt20-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 xsltproc
</screen>
			</para>
			<para>Configure</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>Build</para>
			<para>
				<screen>meson compile -C build</screen>
			</para>
			<para>Run distribution tests</para>
			<para>
				<screen>cd build &amp;&amp; meson dist &amp;&amp; cd ..</screen>
			</para>
			<para>Install</para>
			<para>
				<screen>sudo meson install -C build</screen>
			</para>
			<para>Check netatalk capabilities</para>
			<para>
				<screen>netatalk -V
afpd -V
</screen>
			</para>
			<para>Start netatalk</para>
			<para>
				<screen>sudo systemctl start netatalk
sleep 1
asip-status localhost
</screen>
			</para>
			<para>Stop netatalk</para>
			<para>
				<screen>sudo systemctl stop netatalk</screen>
			</para>
			<para>Uninstall</para>
			<para>
				<screen>sudo ninja -C build uninstall</screen>
			</para>
		</sect2>
		<sect2 id="build-macos">
			<title>macOS</title>
			<para>Install dependencies</para>
			<para>
				<screen>brew update
brew upgrade
brew install bison cmark-gfm cracklib dbus docbook-xsl mariadb meson openldap talloc tracker
</screen>
			</para>
			<para>Configure</para>
			<para>
				<screen>meson setup build -Dbuildtype=release -Dwith-tests=true
</screen>
			</para>
			<para>Build</para>
			<para>
				<screen>meson compile -C build</screen>
			</para>
			<para>Run integration tests</para>
			<para>
				<screen>cd build &amp;&amp; meson test &amp;&amp; cd ..</screen>
			</para>
			<para>Install</para>
			<para>
				<screen>sudo meson install -C build</screen>
			</para>
			<para>Check netatalk capabilities</para>
			<para>
				<screen>netatalk -V
afpd -V
</screen>
			</para>
			<para>Start netatalk</para>
			<para>
				<screen>sudo netatalkd start
sleep 1
asip-status localhost
</screen>
			</para>
			<para>Stop netatalk</para>
			<para>
				<screen>sudo netatalkd stop</screen>
			</para>
			<para>Uninstall</para>
			<para>
				<screen>sudo ninja -C build uninstall</screen>
			</para>
		</sect2>
		<sect2 id="build-dflybsd">
			<title>DragonflyBSD</title>
			<para>必要なパッケージをインストールする</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>コンフィグレーションとビルド</para>
			<para>
				<screen>set -e
meson setup build -Dbuildtype=release -Dwith-appletalk=true -Dwith-tests=true
meson compile -C build
meson install -C build
netatalk -V
afpd -V
ninja -C build uninstall
</screen>
			</para>
		</sect2>
		<sect2 id="build-freebsd">
			<title>FreeBSD</title>
			<para>必要なパッケージをインストールする</para>
			<para>
				<screen>pkg install -y avahi bison db5 docbook-xsl flex libevent libgcrypt libxslt meson mysql84-client openldap26-client p5-Net-DBus perl5 pkgconf talloc tracker3
</screen>
			</para>
			<para>コンフィグレーションとビルド</para>
			<para>
				<screen>set -e
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
netatalk -V
afpd -V
/usr/local/etc/rc.d/netatalk start
sleep 1
asip-status localhost
/usr/local/etc/rc.d/netatalk stop
/usr/local/etc/rc.d/netatalk disable
ninja -C build uninstall
</screen>
			</para>
		</sect2>
		<sect2 id="build-netbsd">
			<title>NetBSD</title>
			<para>必要なパッケージをインストールする</para>
			<para>
				<screen>export PKG_PATH="https://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/$(uname -p)/$(uname -r|cut -f '1 2' -d.)/All/"
pkg_add 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
</screen>
			</para>
			<para>コンフィグレーションとビルド</para>
			<para>
				<screen>set -e
meson setup build -Dbuildtype=release -Dwith-appletalk=true -Dwith-dtrace=false -Dwith-tests=true
meson compile -C build
cd build
meson test
cd ..
meson install -C build
netatalk -V
afpd -V
service netatalk onestart
sleep 1
asip-status localhost
service netatalk onestop
ninja -C build uninstall
</screen>
			</para>
		</sect2>
		<sect2 id="build-openbsd">
			<title>OpenBSD</title>
			<para>必要なパッケージをインストールする</para>
			<para>
				<screen>pkg_add -I avahi bison db-4.6.21p7v0 dbus docbook-xsl gcc-11.2.0p14 heimdal libevent libgcrypt libtalloc libxslt mariadb-client meson openldap-client-2.6.8v0 openpam p5-Net-DBus pkgconf tracker3
</screen>
			</para>
			<para>コンフィグレーションとビルド</para>
			<para>
				<screen>set -e
meson setup build -Dbuildtype=release -Dpkg_config_path=/usr/local/lib/pkgconfig -Dwith-gssapi-path=/usr/local/heimdal -Dwith-kerberos-path=/usr/local/heimdal -Dwith-tests=true
meson compile -C build
meson install -C build
netatalk -V
afpd -V
rcctl -d start netatalk
sleep 1
asip-status localhost
rcctl -d stop netatalk
rcctl -d disable netatalk
ninja -C build uninstall
</screen>
			</para>
		</sect2>
		<sect2 id="build-omnios">
			<title>OmniOS</title>
			<para>必要なパッケージをインストールする</para>
			<para>
				<screen>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
</screen>
			</para>
			<para>コンフィグレーションとビルド</para>
			<para>
				<screen>set -e
export PATH=/opt/local/sbin:/opt/local/bin:/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin:$PATH
meson setup build --prefix=/opt/local -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
netatalk -V
afpd -V
sleep 1
svcadm enable svc:/network/netatalk:default
sleep 1
asip-status localhost
svcadm disable svc:/network/netatalk:default
ninja -C build uninstall
</screen>
			</para>
		</sect2>
		<sect2 id="build-solaris">
			<title>Solaris</title>
			<para>必要なパッケージをインストールする</para>
			<para>
				<screen>pkg install bison flex gcc libevent libgcrypt ninja pkg-config python/pip
pip install meson
</screen>
			</para>
			<para>コンフィグレーションとビルド</para>
			<para>
				<screen>set -e
export PATH=/opt/local/sbin:/opt/local/bin:$PATH
meson setup build --prefix=/opt/local -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
netatalk -V
afpd -V
sleep 1
svcadm enable svc:/network/netatalk:default
sleep 1
asip-status localhost
svcadm disable svc:/network/netatalk:default
ninja -C build uninstall
</screen>
			</para>
		</sect2>
		<sect2></sect2>
	</sect1>
</appendix>