# インストール

Netatalk 2 または 3 から Netatalk 4 にアップグレードする前に、このマニュアルの アップグレード の章を必ずお読みください。

## Netatalk の入手の仕方

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

https://github.com/Netatalk/netatalk

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

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

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

### ソースパッケージ

#### Tarball

tar で固めた Netatalk 安定版ソースコードは 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 ライセンスで提供された最終リリースである。

- libevent

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

- Libgcrypt

  Libgcrypt ライブラリは、標準のユーザー認証モジュール (UAM) の暗号化を提供する。これらは、DHX2、DHCAST128 (別名 DHX)、および RandNum である。

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

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

- ACL と LDAP

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

- Bonjour 用の Avahi または mDNSresponder

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

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

- cmark-gfm

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

- CrackLib

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

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

- D-Bus

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

- DocBook XSL および xsltproc

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

- GLib および GIO

  D-Bus とのインターフェースとして、`afpstats` ツールに使われる。

- iconv

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

- Kerberos V

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

- MySQL または MariaDB

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

- PAM

  PAM は、ユーザーを認証するための柔軟なメカニズムを提供する。 PAM は SUN
  Microsystems によって発明された。Linux-PAM は、ローカル システム管理者がアプリケーションによるユーザー認証方法を選択できるようにする共有ライブラリ スイートである。

- Perl

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

- TCP ラッパー

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

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

- Tracker もしくは TinySPARQL / LocalSearch

  Netatalk は、Spotlight
  検索インデックスのメタデータ バックエンドとして Tracker またはそれ以降のバージョンである TinySPARQL/LocalSearch を使用します。必要な最小限のバージョンは 0.7 です。これは SPARQL をサポートする最初のバージョンだからです。

- talloc / bison / flex

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

- UnicodeData.txt

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

### Netatalk のコンパイル

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

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

## Netatalk の起動と停止

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

ソースからビルドする場合、Netatalk ビルド システムは、どの init スタイルがプラットフォームに適しているかを検出しようとする。また、`with-init-style` オプションを指定して、必要な特定のタイプの起動スクリプト
をインストールするようにビルド システムを構成することもできる。構文については、ビルド システムのヘルプ テキストを参照してください。

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

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

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

- netatalk

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

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

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