# インストール

Netatalk 3 は他バージョンと共存できないので、以前に Netatalk の古いバージョンを使ったことがあるなら、 “Netatalk 2 からのアップグレード”の章をまず読んでいただきたい！！！

## Netatalk の入手の仕方

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

https://github.com/Netatalk/netatalk

### バイナリーパッケージ

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

第三者が提供しているパッケージ リポジトリも参照する手もある。例えば、Red Hat 派生 Linux ディストリビューションの為のrpmfind Solaris 系 OS の為の OpenCSW 又は macOS の為の Homebrew か MacPorts 。

### ソースパッケージ

#### Tarball

Netatalk のソースを tar で固めた .tar.xz および .tar.bz2 形式のものが GitHub の netatalk のページにある。

#### Git

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

1. Git がインストールしてあることを確認する。`which git` は git のパスを示してくれるはずである。

       $ which git
       /usr/bin/git

2. ソースを取得してみよう。

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

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

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

       $ git checkout branch-netatalk-3-1

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

       $ git pull

## Netatalk のコンパイル

### 前提条件

#### 必要なサードパーティソフトウェア

- Berkeley DB
  .

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

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

- Libgcrypt

  OS X 10.7 とそれ以降で必須となった DHX2 のために Libgcrypt が必要である。

- libevent

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

#### 任意のサードパーティソフトウェア

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

- OpenSSL / LibreSSL / WolfSSL

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

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

- Spotlight
  サポートのための Tracker

  Netatalk はメタデータのバックエンドとして Tracker を使用する。最近の Linux ディストリビューションには、Tracker のバージョン 0.7 以来使用可能な libtracker-sparql が提供されている。

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

- Bonjour（Zeroconf としても知られる）のための mDNSresponderPOSIX または Avahi

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

  Avahi は DBUS サポートのもとで ( `--enable-dbus`) ビルドされなければならない。

- TCP wrappers

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

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

- PAM

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

- Kerberos V

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

- ACL と LDAP

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

- MySQL

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

- D-Bus と GLib バインディング

  `afpstats` ツールに使われ、afpd サーバ状況を参照する子ができる。

- iconv

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

- CrackLib

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

- Perl

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

- DocBook XSL と xsltproc

  本マニュアル含めての netatalk ドキュメンテーションは XML 様式に作成され DocBook XSL スタイルシートを適用し生成されている。フォーマット変換は xsltproc で実施している。

### Netatalk のコンパイル

ビルドシステムの使い方、コードのコンフィグ又はビルドの手順書は INSTALL ファイルを参考してください。

特定の OS に対しての具体的なビルド事例は Netatalk をソースコードからコンパイルする 付録を参考してください。

## Netatalk の起動と停止

Netatalk の配布物は、 いくつかのオペレーティングシステム固有のスタートアップ・スクリプト・テンプレートを備えている。 これらテンプレートは、コンパイル前に指定できる。 現時点で、systemd、openrc、Linux、BSD、Solaris、そして macOS 向けのテンプレートが用意されている。 ビルドスクリプトにシステムタイプを指示することで、どのスタートアップスクリプト
を生成してインストールするのか選ぶことができる。 スタートアップスクリプトを自動でインストールさせるには、 `with-init-style` オプションで有効なものを加える。

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

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

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

- netatalk

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

加えて、設定ファイル `afp.conf` が正しい場所にあるか確認する。