<?xml version="1.0" encoding="UTF-8"?>
<chapter id="installation">
  <chapterinfo>
    <date>17.1.2015</date>

    <author role="first-last">
      <firstname>Eiichirou</firstname>

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

    <pubdate>2016 年 7 月 26 日（訳）</pubdate>

  </chapterinfo>

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

  <warning>
    <para>Netatalk 3 は他バージョンと共存できないので、以前に Netatalk の古いバージョンを使ったことがあるなら、
    “<link linkend="upgrade">Netatalk 2 からのアップグレード</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、Unix
      ディストリビューションに含まれている。通常の配布元も見たいだろうと思う。</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>Libgcrypt</para>

            <para>OS X 10.7 とそれ以降で必須となった DHX2 のために <ulink url="http://directory.fsf.org/wiki/Libgcrypt">
            Libgcrypt</ulink> が必要である。</para>
          </listitem>

          <listitem>
            <para>libevent</para>

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

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

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

        <itemizedlist>
          <listitem>
            <para>OpenSSL / LibreSSL / WolfSSL</para>

            <para>OpenSSL 1.1 又は LibreSSL は、Classic Mac OS に最も強力なパスワード暗号化を提供する DHCAST128 (別名 DHX) UAM に必要。Random Number UAM もこのライブラリを使用している。</para>

            <para>netatalk 3.2.0 以降は、バンドルされている WolfSSL ライブラリがデフォルトの DHX プロバイダーとして netatalk とともに配布されている。</para>
          </listitem>

          <listitem>
            <para>Spotlight<indexterm>
                <primary>Spotlight</primary>
              </indexterm> サポートのための Tracker</para>

            <para>Netatalk はメタデータのバックエンドとして
            <ulink url="https://tracker.gnome.org">Tracker</ulink>
            を使用する。最近の Linux ディストリビューションには、Tracker のバージョン 0.7 以来使用可能な
            libtracker-sparql が提供されている。</para>

            <para>Samba プロジェクトの talloc ライブラリと、bison の様な Yacc パーサ、
            そして flex の様な字句解析ツールも必要になる。</para>
          </listitem>

          <listitem>
            <para>Bonjour（Zeroconf としても知られる）のための mDNSresponderPOSIX または Avahi</para>

            <para>サービス探索のために Mac OS X 10.2 及び以降のバージョンは
            Bonjour（Zeroconf としても知られる）を使用する。AFP ファイルサーバー又は
            Time Machine サービスをクライアントに通知することができる。</para>

            <para>Avahi は DBUS サポートのもとで (
            <userinput>--enable-dbus</userinput>) ビルドされなければならない。</para>
          </listitem>

          <listitem>
            <para>TCP wrappers</para>

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

            <para>セキュリティオプションは：
            ホストごとドメインごとかつ／ないしはサービスごとのアクセス制御；
            ホスト名のなりすましあるいはホストアドレスのなりすまし検出；
            早期警告システムを実装するブービートラップ；である。</para>
          </listitem>

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

                <secondary>Pluggable Authentication Modules</secondary>
              </indexterm></para>

            <para>PAM はユーザー認証の柔軟な機構を実現する。PAM は SUN<indexterm>
                <primary>SUN</primary>

                <secondary>Sun Microsystems</secondary>
              </indexterm> Microsystems によって作り出された。
            Linux-PAM はアプリケーションがどのようにユーザーを認証するのかを選択できるようなローカルシステム管理を実現する共有ライブラリーのセットである。</para>
          </listitem>

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

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

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

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

          <listitem>
            <para>MySQL</para>

            <para>MySQL 互換のクライアント ライブラリを活用することで、拡張性と信頼性の高い MySQL CNID バックエンドを使用して netatalk を構築できる。
            管理者は、このバックエンドで使用する別のデータベース インスタンスを提供する必要がある。</para>
          </listitem>

          <listitem>
            <para>D-Bus と GLib バインディング</para>

            <para><userinput>afpstats</userinput> ツールに使われ、afpd サーバ状況を参照する子ができる。
            </para>
          </listitem>

          <listitem>
            <para>iconv</para>

            <para>iconv はたくさんの文字エンコーディングの変換ルーチンを提供する。Netatalk
            は iconv を使用して内蔵されていない ISO-8859-1 のようなキャラクターセット変換を実現する。
            glibc システムでは glibc の提供する iconv 実装を使うことができる。さもなくば GNU libiconv
            実装を使うことができる。</para>
          </listitem>

          <listitem>
            <para>CrackLib</para>

            <para>Random Number UAM と netatalk の固有パスワード管理ツール
            <userinput>afppasswd</userinput> を使用する際、CrackLib を使う事によって
            弱いパスワードの設定を防ぐことができる。</para>
          </listitem>

          <listitem>
            <para>Perl</para>

            <para><userinput>afpstats</userinput>、
            <userinput>apple_dump</userinput>、
            <userinput>asip-status</userinput> 又は
            <userinput>macusers</userinput> という管理者向けツールは Perl 5.8 以降の実行環境を
            使用している。下記 Perl モジュールは必須：
            <emphasis>IO::Socket::IP</emphasis> (asip-status) 又は
            <emphasis>Net::DBus</emphasis> (afpstats)。</para>
          </listitem>

          <listitem>
            <para>DocBook XSL と xsltproc</para>

            <para>本マニュアル含めての netatalk ドキュメンテーションは XML 様式に作成され
            DocBook XSL スタイルシートを適用し生成されている。フォーマット変換は xsltproc
            で実施している。</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 の配布物は、
    いくつかのオペレーティングシステム固有のスタートアップ・スクリプト・テンプレートを備えている。
    これらテンプレートは、コンパイル前に指定できる。
    現時点で、systemd、openrc、Linux、BSD、Solaris、そして macOS 向けのテンプレートが用意されている。
    ビルドスクリプトにシステムタイプを指示することで、どのスタートアップスクリプト
      <indexterm>
        <primary>Startscript</primary>

        <secondary>スタートアップスクリプト</secondary>
      </indexterm>を生成してインストールするのか選ぶことができる。
    スタートアップスクリプトを自動でインストールさせるには、
    <option>with-init-style</option> オプションで有効なものを加える。</para>

    <para>Linux ディストリビューションの新しいリリースは頻繁に出てくるし、
    上記で触れたようなほかのシステムのスタートアップの手続きもまた変わりうる。
    それ故、盲目的にスタートアップスクリプトをインストールするのではなく、
    自分のシステムで動作するであろうかということをまず見てみる、というのがおそらくいい考えである。</para>

    <para>Linux ディストリビューションの RPM あるいは BSD のパッケージのような所定のセットアップの一部として使用する場合、
    諸々の事は概ねよしなに取り計らわれるだろう。
    それ故、Netatalk そのものをコンパイルするユーザーには概ね下記のことが当てはまる。</para>

    <para>いかなるスタートアップスクリプト機構を使っていても、下記のデーモンは必要である：</para>

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

    <para>スタートアップスクリプトは無くても、root ユーザとして netatalk デーモンを実行し、
    使い終わったら SIGTERM で終了させることができす。</para>

    <para>加えて、設定ファイル <filename>afp.conf</filename> が正しい場所にあるか確認する。</para>
  </sect1>
</chapter>
