<?xml version="1.0" encoding="UTF-8"?>
<chapter id="installation">
  <chapterinfo>
    <author role="first-last">
      <firstname>Eiichirou</firstname>

      <surname>UDA（日本語訳）</surname>
    </author>
  </chapterinfo>

  <title>インストール</title>

  <warning>
    <para>Netatalk 2 または 3 から Netatalk 4 にアップグレードする前に、このマニュアルの <link
    linkend="upgrade">アップグレード</link> の章を必ずお読みください。</para>
  </warning>

  <sect1>
    <title>Netatalk の入手の仕方</title>

    <para>この件の最新の情報は GitHub の netatalk のページを一読いただきたい。</para>

    <para><ulink
    url="https://github.com/Netatalk/netatalk">https://github.com/Netatalk/netatalk</ulink></para>

    <sect2>
      <title>バイナリーパッケージ</title>

      <para>Netatalk のバイナリーパッケージは、いくつかの Linux、BSD、Solaris
      ディストリビューションに含まれている。通常の配布元も見たいだろうと思う。</para>

      <para>第三者が提供しているパッケージ リポジトリも参照する手もある。例えば、Red Hat 派生 Linux ディストリビューションの為の
      <ulink url="https://rpmfind.net/">rpmfind</ulink>、 Solaris 系 OS の為の
      <ulink url="https://www.opencsw.org/">OpenCSW</ulink>、そして macOS の為の
      <ulink url="https://brew.sh/">Homebrew</ulink> か <ulink
      url="https://www.macports.org/">MacPorts</ulink>。</para>
    </sect2>

    <sect2>
      <title>ソースパッケージ</title>

      <sect3>
        <title>Tarball</title>

        <para>tar で固めた Netatalk 安定版ソースコードは <ulink
        url="https://github.com/Netatalk/netatalk/releases">GitHub の Netatalk
        リリースページ</ulink>にある。</para>
      </sect3>

      <sect3>
        <title>Git</title>

        <para>Git レポジトリ のダウンロードは迅速で容易である：</para>

        <orderedlist>
          <listitem>
            <para>Git がインストールしてあることを確認する。<command>which git</command> は git
            のパスを示してくれるはずである。</para>

            <screen><prompt>$</prompt> <userinput>which git</userinput>
<computeroutput>/usr/bin/git</computeroutput></screen>
          </listitem>

          <listitem>
            <para>ソースを取得してみよう。</para>

            <screen><prompt>$</prompt> <userinput>git clone https://github.com/Netatalk/netatalk.git netatalk-code
</userinput><computeroutput>Cloning into 'netatalk-code'...
remote: Enumerating objects: 41592, done.
...
Resolving deltas: 100% (32227/32227), done.
</computeroutput></screen>

            <para>上記で Git リポジトリから、Netatalk のソース全体の完全でまっさらのコピーを含む
            <filename>netatalk-code</filename> という名前のローカルディレクトリが作成される。</para>
          </listitem>

          <listitem>
            <para>ブランチやタグを指定しない場合は、最先端の開発コードが取得さる。例えば、最新の安定した Netatalk 3.1
            コードを入手するには、「branch-netatalk-3-1」という名前のブランチをチェックアウトする：</para>

            <screen><prompt>$</prompt> <userinput>git checkout branch-netatalk-3-1</userinput></screen>
          </listitem>

          <listitem>
            <para>レポジトリのコピーを最新の状態にしておきたい場合、適宜以下を実行する。</para>

            <screen><prompt>$</prompt> <userinput>git pull</userinput></screen>
          </listitem>
        </orderedlist>
      </sect3>
    </sect2>
  </sect1>

  <sect1>
    <title>Netatalk のコンパイル</title>

    <sect2>
      <title>前提条件</title>

      <sect3>
        <title>必要なサードパーティソフトウェア</title>

        <itemizedlist>
          <listitem>
            <para>Berkeley DB<indexterm>
                <primary>BDB</primary>

                <secondary>Berkeley DB</secondary>
              </indexterm>.</para>

            <para>書き込みの時に最低でもバージョン 4.6 が必要となる。</para>

            <para>推奨バージョンは 5.3 である Sleepycat ライセンスで提供された最終リリースである。</para>
          </listitem>

          <listitem>
            <para>libevent</para>

            <para>netatalk サービス コントローラー デーモンの内部イベント コールバックは、 libevent バージョン 2
            に基づいて構築されている。</para>
          </listitem>

          <listitem>
            <para>Libgcrypt</para>

            <para><ulink url="https://gnupg.org/software/libgcrypt/">
            Libgcrypt</ulink> ライブラリは、標準のユーザー認証モジュール (UAM)
            の暗号化を提供する。これらは、DHX2、DHCAST128 (別名 DHX)、および RandNum である。</para>
          </listitem>
        </itemizedlist>
      </sect3>

      <sect3>
        <title>任意のサードパーティソフトウェア</title>

        <para>Netatalk はその機能性を拡充するために以下のサードパーティソフトウェアを使用することができる。</para>

        <itemizedlist>
          <listitem>
            <para>ACL と LDAP</para>

            <para>LDAP は、ACL の高度な権限スキームと連携して動作するオープンで業界標準のユーザー ディレクトリ
            プロトコルである。一部のオペレーティング システムでは ACL と LDAP
            ライブラリがシステムに組み込まれているが、他のオペレーティング システムではこの機能を有効にするためにサポート
            パッケージをインストールする必要がある。</para>
          </listitem>

          <listitem>
            <para>Bonjour 用の Avahi または mDNSresponder</para>

            <para>Mac OS X 10.2 以降では、自動サービス検出に Bonjour (別名 Zeroconf) を使用する。
            Netatalk は、Avahi または mDNSResponder を使用して AFP ファイル共有と Time Machine
            ボリュームをアドバタイズできる。</para>

            <para>Avahi を使用する場合は、D-Bus または D-Bus サポートを有効になっている Avahi
            ライブラリは必要になる。</para>
          </listitem>

          <listitem>
            <para>cmark-gfm</para>

            <para>CommonMark は、マークダウンをプレーンテキストに変換するために使用され、Netatalk の README
            をインストールまたはパッケージ化するのに使われる。</para>
          </listitem>

          <listitem>
            <para>CrackLib</para>

            <para>Random Number UAM と netatalk 独自の
            <userinput>afppasswd</userinput> パスワード マネージャを使用する場合、CrackLib は
            netatalk での認証に弱いパスワードを設定するのを防ぐのに役立つ。</para>

            <para>ランタイム パッケージで別途配布されることもある CrackLib 辞書も必須である。</para>
          </listitem>

          <listitem>
            <para>D-Bus</para>

            <para>D-Bus はプロセス間にメッセージを通信するメカニズムを提供し、下記 Netatalk 機能に使われる：
            Spotlight、Avahi を使用した Zeroconf、および <userinput>afpstats</userinput>
            ツール。</para>
          </listitem>

          <listitem>
            <para>DocBook XSL および xsltproc</para>

            <para>このマニュアルを含む Netatalk ドキュメントは、XML 形式で作成されている。DocBook XSL
            スタイルシートと xsltproc を使用して、XML を troff (マニュアル ページ用)、html、pdf
            などの人間が読める形式に変換する。DocBook XSL
            スタイルシートは名前空間化されていない必要があることに注意してください。</para>
          </listitem>

          <listitem>
            <para>GLib および GIO</para>

            <para>D-Bus とのインターフェースとして、<userinput>afpstats</userinput>
            ツールに使われる。</para>
          </listitem>

          <listitem>
            <para>iconv</para>

            <para>iconv は、多くの文字エンコードの変換ルーチンを提供する。Netatalk は、ISO-8859-1
            など、組み込みの変換がない文字セットを提供するためにこれを使用する。glibc システムでは、Netatalk は glibc
            が提供する iconv 実装を使用できる。それ以外の場合は、GNU libiconv 実装を使用できる。</para>
          </listitem>

          <listitem>
            <para>Kerberos V</para>

            <para>Kerberos v5 は、マサチューセッツ工科大学で発明されたクライアント サーバー
            ベースの認証プロトコルである。Kerberos ライブラリを使用すると、netatalk は既存の Kerberos
            インフラストラクチャでの認証用に GSS UAM ライブラリを作成できる。</para>
          </listitem>

          <listitem>
            <para>MySQL または MariaDB</para>

            <para>MySQL 互換のクライアント ライブラリを活用することで、netatalk は、スケーラビリティと信頼性に優れた
            MySQL CNID バックエンドを使用して構築できる。管理者は、このバックエンドで使用するために別のデータベース
            インスタンスを用意する必要がある。</para>
          </listitem>

          <listitem>
            <para>PAM<indexterm>
                <primary>PAM</primary>

                <secondary>プラグ可能な認証モジュール</secondary>
              </indexterm></para>

            <para>PAM は、ユーザーを認証するための柔軟なメカニズムを提供する。 PAM は SUN<indexterm>
                <primary>SUN</primary>

                <secondary>Sun Microsystems</secondary>
              </indexterm> Microsystems によって発明された。Linux-PAM は、ローカル
            システム管理者がアプリケーションによるユーザー認証方法を選択できるようにする共有ライブラリ スイートである。</para>
          </listitem>

          <listitem>
            <para>Perl</para>

            <para>Netatalk の管理ユーティリティ スクリプトは、Perl ランタイム バージョン 5.8 以降に依存する。必須
            Perl モジュールは以下： <emphasis>IO::Socket::IP</emphasis> (asip-status)
            又は <emphasis>Net::DBus</emphasis> (afpstats)。</para>
          </listitem>

          <listitem>
            <para>TCP ラッパー</para>

            <para>Wietse Venema のネットワーク ロガー。TCPD または LOG_TCP とも呼ばれる。</para>

            <para>セキュリティ
            オプションは次のとおり。ホスト、ドメイン、および/またはサービスごとのアクセス制御、ホスト名のスプーフィングまたはホスト
            アドレスのスプーフィングの検出。ブービートラップを使用して早期警告システムを実装する。</para>
          </listitem>

          <listitem>
            <para>Tracker もしくは TinySPARQL / LocalSearch</para>

            <para>Netatalk は、Spotlight<indexterm>
                <primary>Spotlight</primary>
              </indexterm> 検索インデックスのメタデータ バックエンドとして <ulink
            url="https://tracker.gnome.org">Tracker</ulink> またはそれ以降のバージョンである
            TinySPARQL/<ulink
            url="https://gnome.pages.gitlab.gnome.org/localsearch/">LocalSearch
            </ulink> を使用します。必要な最小限のバージョンは 0.7 です。これは <ulink
            url="https://gnome.pages.gitlab.gnome.org/tracker/">SPARQL</ulink>
            をサポートする最初のバージョンだからです。</para>
          </listitem>

          <listitem>
            <para>talloc / bison / flex</para>

            <para>Spotlight には、Samba の talloc ライブラリ、bison などの Yacc パーサー、flex
            などのレキサーも必要。</para>
          </listitem>

          <listitem>
            <para>UnicodeData.txt</para>

            <para>ビルド システムは、Perl と Unicode 文字データベースを使用して、Netatalk の Unicode
            文字変換ソースを生成する。</para>
          </listitem>
        </itemizedlist>
      </sect3>
    </sect2>

    <sect2 id="compiling-netatalk">
      <title>Netatalk のコンパイル<indexterm>
          <primary>コンパイル</primary>

          <secondary>Netatalk のソースからのコンパイル</secondary>
        </indexterm></title>

      <para>ビルドシステムの使い方、コードのコンフィグ又はビルドの手順書は <ulink
      url="https://github.com/Netatalk/netatalk/blob/main/INSTALL">INSTALL</ulink>
      ファイルを参考してください。</para>

      <para>特定の OS に対しての具体的なビルド事例は <link linkend="compile"> Netatalk
      をソースコードからコンパイルする</link> 付録を参考してください。</para>
    </sect2>
  </sect1>

  <sect1>
    <title>Netatalk の起動と停止</title>

    <para>Netatalk ディストリビューションには、コンパイル前にビルド システムに指定されたオプションに応じて調整される、オペレーティング
    システム固有の起動スクリプト テンプレートがいくつか付属している。現在、テンプレートは、一般的な Linux ディストリビューション、BSD
    バリアント、Solaris 派生、および macOS 用のプラットフォーム固有のスクリプトに加えて、systemd、openrc
    用に提供されている。</para>

    <para>ソースからビルドする場合、Netatalk ビルド システムは、どの init
    スタイルがプラットフォームに適しているかを検出しようとする。また、<option>with-init-style</option>
    オプションを指定して、必要な特定のタイプの起動スクリプト <indexterm>
        <primary>Startscript</primary>

        <secondary>startup script</secondary>
      </indexterm> をインストールするようにビルド システムを構成することもできる。構文については、ビルド システムのヘルプ
    テキストを参照してください。</para>

    <para>新しい Linux、*BSD、および Solaris
    のようなディストリビューションが定期的に登場し、上記の他のシステムの起動手順も変更される可能性があるため、起動スクリプトを盲目的にインストールするのではなく、まずシステムで機能することを確認することをお勧めする。</para>

    <para>Linux ディストリビューション、RPM、または BSD パッケージなどの固定セットアップの一部として Netatalk
    を使用する場合は、おそらく適切に準備されているだろう。したがって、前の段落は、Netatalk
    を自分でコンパイルした人にほとんど当てはまる。</para>

    <para>次のデーモンは、使用するスタートアップ スクリプト メカニズムによって起動する必要がある:</para>

    <itemizedlist>
      <listitem>
        <para>netatalk<indexterm>
            <primary>netatalk</primary>
          </indexterm></para>
      </listitem>
    </itemizedlist>

    <para>スタートアップ スクリプトがない場合は、このデーモンを直接 (root として) 起動し、使い終わったら SIGTERM
    で終了することもできる。</para>

    <para>さらに、構成ファイル <filename>afp.conf</filename> が適切な場所にあることを確認してください。
    <userinput>netatalk -V</userinput> コマンドを実行すると、netatalk
    がファイルの場所を予測しているかどうかを問い合わせることができる。</para>

    <para>AppleTalk サービスを実行する場合は、<command>atalkd</command> デーモンに加えて、オプションの
    <command>papd</command>、<command>timelord</command>、<command>a2boot</command>
    デーモンも起動する必要がある。詳細については、このマニュアルの <link linkend="appletalk">AppleTalk</link>
    の章を参照してください。</para>
  </sect1>
</chapter>
