Netatalkのインストール

   2014/06/08

スポンサーリンク

Linuxについての記事です。

以前もLinuxOSにNetatalkをインストールしようとしましたがうまくできなくてもう一度リベンジしたいと思います。
目標地点はMac OS X 10.7 Lionにも対応できるAFPサーバの構築です。
以前はDebianにインストールを試みましたが今回挑戦するのはCentOS6.2 64bit版でのインストールです。
参考にさせていただいた先達のサイトです。Netatalk and Samba

1 Netatalkをインストールする前にライブラリ関連のインストール

Netatalkだけインストールをしても動作しないので他に読み込んでおくパッケージをインストールします。
ソースファイルからインストールする事もできそうですがパッケージが用意されていたのでそちらを利用させてもらいます。

Berkeley DB
OpenSSL
Libgcrypt
Avahi
OpenSLP
Libacl
OpenLDAP
これらのソフトが必要で以下のコマンドでインストールを実行

# yum install db4-devel openssl-devel libgcrypt-devel avahi-devel openslp-server openslp-devel libacl-devel openldap

2 Netatalkダウンロードとインストール

安定版の2.2.2のバージョンはソースファイルからのインストールになるのでファイルを公式サイトからダウンロードします。
公式サイトからファイルのダウンロード

# wget http://downloads.sourceforge.net/project/netatalk/netatalk/2.2.2/netatalk-2.2.2.tar.bz2

# tar jxf netatalk-2.2.2.tar.bz2

# cd netatalk-2.2.2

# ./configure --enable-redhat-sysv --enable-srvloc=yes --enable-zeroconf=yes --with-bdb=yes --with-ldap=yes

checking whether configuration files should be overwritten... no
checking for LDAP (necessary for client-side ACL visibility)... yes
checking ldap.h usability... no
checking ldap.h presence... no
checking for ldap.h... no
configure: error: Missing LDAP headers
[root@centos netatalk-2.2.2]# make
make: *** ターゲットが指定されておらず, makefile も見つかりません.  中止.

make: *** ターゲットが指定されておらず, makefile も見つかりません.  中止.

makeが通らないので調べる。
ライブラリ関連で足りなかったopenldap-develをインストール

# yum install openldap-devel

netatalkのconfigureスクリプトを実行
ソースコードのビルドをしてインストール

5/19追記
configureをする前にhelpを参照してライブラリ関連の読み込みや、オプションを確認する
※ configureを実行するときにライブラリ関連がインストールされていれば自動的に読み込む事ができるようです。Berkeley DBをソースファイルからインストールした場合はファイルパスを入力してconfigureをします。HATさんありがとうございました。

# ./configure --enable-redhat-sysv --enable-srvloc=yes --enable-zeroconf=yes --with-bdb=yes --with-ldap=yes

# ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

# ./configure --enable-redhat-sysv

Configure summary:
    Install style:
         redhat-sysv
    AFP:
         Large file support (>2GB) for AFP3: yes
         Extended Attributes: ad | sys
    CNID:
         backends:  dbd last tdb
    UAMS:
         DHX     ( SHADOW)
         DHX2    ( SHADOW)
         RANDNUM (afppasswd)
         clrtxt  ( SHADOW)
         guest
    Options:
         DDP (AppleTalk) support: no
         SLP support:             yes
         Zeroconf support:        yes
         tcp wrapper support:     no
         quota support:           no
         admin group support:     yes
         valid shell check:       yes
         cracklib support:        no
         dropbox kludge:          no
         force volume uid/gid:    no
         ACL support:             yes
         LDAP support:            yes

# make

# make install

ここまでの操作でインストールができたように思う。
# ./configure --enable-redhat-sysv --enable-srvloc=yes --enable-zeroconf=yes --with-bdb=yes --with-ldap=yes  Configure summary:     Install style:          redhat-sysv     AFP:          Large file support (>2GB) for AFP3: yes          Extended Attributes: ad | sys     CNID:          backends:  dbd last tdb     UAMS:          DHX     ( SHADOW)          DHX2    ( SHADOW)          RANDNUM (afppasswd)          clrtxt  ( SHADOW)          guest     Options:          DDP (AppleTalk) support: no          SLP support:             yes          Zeroconf support:        yes          tcp wrapper support:     no          quota support:           no          admin group support:     yes          valid shell check:       yes          cracklib support:        no          dropbox kludge:          no          force volume uid/gid:    no          ACL support:             yes          LDAP support:            yes

3 Netatalkの設定ファイルの場所の確認

設定ファイルは/usr/local/etc/netatalk以下にあるようです。
AFPのバージョン確認

# afpd -V
afpd 2.2.2 - Apple Filing Protocol (AFP) daemon of Netatalk

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.

afpd has been compiled with support for these features:

          AFP versions:	2.2 3.0 3.1 3.2 3.3
DDP(AppleTalk) Support:	No
         CNID backends:	dbd last tdb
           SLP support:	Yes
      Zeroconf support:	Yes
  TCP wrappers support:	No
         Quota support:	No
   Admin group support:	Yes
    Valid shell checks:	Yes
      cracklib support:	No
        Dropbox kludge:	No
  Force volume uid/gid:	No
            EA support:	ad | sys
           ACL support:	Yes
          LDAP support:	Yes

             afpd.conf:	/usr/local/etc/netatalk/afpd.conf
   AppleVolumes.system:	/usr/local/etc/netatalk/AppleVolumes.system
  AppleVolumes.default:	/usr/local/etc/netatalk/AppleVolumes.default
    afp_signature.conf:	/usr/local/etc/netatalk/afp_signature.conf
      afp_voluuid.conf:	/usr/local/etc/netatalk/afp_voluuid.conf
         afp_ldap.conf:	/usr/local/etc/netatalk/afp_ldap.conf
       UAM search path:	/usr/local/etc/netatalk/uams/
  Server messages path:	/usr/local/etc/netatalk/msg/
              lockfile:	/var/lock/afpd

AFPのバージョン確認

4 netatalk.confの設定

設定ファイルの変更を行う。 文字コード関連の設定をします。

場所 /usr/local/etc/netatalk/netatalk.conf

# gedit /usr/local/etc/netatalk/netatalk.conf

ATALK_UNIX_CHARSET='UTF8′
ATALK_MAC_CHARSET='MAC_JAPANESE'   

/usr/local/etc/netatalk/netatalk.conf変更前

/usr/local/etc/netatalk/netatalk.conf変更後

5 afpd.confの設定

ファイル共有サービスの設定する
afpd.confの書式

場所 /usr/local/etc/netatalk/afpd.conf

# gedit /usr/local/etc/netatalk/afpd.conf

- -tcp -uamlist uams_dhx2.so,uams_dhx.so -maccodepage MAC_JAPANESE -setuplog "default LOG_NOTE /var/log/netatalk.log"

afpd.confの設定

6 AppleVolumes.defaultの設定

afpd によって使われる設定ファイルで、 Appletalk を経由してファイルシステムのどの部分を共有するかを決定する。CentOSでマウントしているディスクドライブの中で共有させるディレクトリを指定する事ができ、ユーザごとにディレクトリを割り当てる事ができます。
パーミッション関連の設定をします。

場所 /usr/local/etc/netatalk/AppleVolumes.default

:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys

一番下の行に共有させるディレクトリを指定します。

/home/user/afpd/ :nobody 誰でも共有できるという意味。:userでそのユーザのみ共有可能

TimeMachineでディスクを認識させる為の設定を加えます。

/home/user/timemachine "usertimemachine" options: tm volsizelimit:1 userというユーザに700GBのドライブスペースをusertimemachineという名前で認識させるという意味

7 ブート時に起動する設定

# chkconfig netatalk on
# chkconfig avahi-daemon  on

8 ファイアーウォールの設定

ファイアーウォールのポートを開放
AFPは548番ポートを使用します。

場所 /etc/sysconfig/iptables

# gedit /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 548  -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 548  -j ACCEPT

ファイアーウォールの設定

9 再起動

サービスの停止方法がわからなかったので再起動。

# reboot -h now

再起動後Macから認識できるかを確認
Mac OS X 10.7 LionのFinderでは表示されませんでした。
メニューバーの移動からサーバへ接続してafp://ホスト名.localを入力してもエラーになってしまう状態。
サーバのIPアドレスを入力して接続をするとFinderのサイドバーに表示されました。
この状態だとフォルダの作成も問題なくできました。
Mac OS X 10.7 LionのFinder

サーバのIPアドレスを入力して接続をするとFinderのサイドバーに表示されました

サーバのIPアドレスを入力して接続をするとFinderのサイドバーに表示されました

Mac OS X 10.6とMac OS X 10.5のFinderのサイドバーにも共有アイコンが表示されないため、afp://IPアドレスで接続できました。
Mac OS X 10.6とMac OS X 10.5のFinder

ちなみにping ホスト名.localとしてもunknownでした。
コンピュータ同士の名前解決でうまく見つけられていない様子でしたが接続ができました。
ここからまた名前解決の部分も確認してみたいと思います。

[5/21追記]
以下はその後に設定を行った内容です。Berkeley DBを新しいのにしました。

# tar zxf db-5.3.15.gz
# cd db-5.3.15
# cd build_unix
# ../dist/configure --help
`configure' configures Berkeley DB 5.3.15 to adapt to many kinds of systems.

Usage: ../dist/configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

# ../dist/configure --with-uniquename
# make
# make install

Installing documentation: /usr/local/BerkeleyDB.5.3/docs ...
# cd netatalk-2.2.2
# ./configure --help
# ./configure --enable-redhat-sysv --with-bdb=/usr/local/BerkeleyDB.5.3

Using libraries:
    LIBS = -lpthread  -L$(top_srcdir)/libatalk
    CFLAGS = -I$(top_srcdir)/include -D_U_="__attribute__((unused))" -g -O2 -I$(top_srcdir)/sys
    SSL:
        LIBS   =  -L/usr/lib64 -lcrypto
        CFLAGS =  -I/usr/include/openssl
    LIBGCRYPT:
        LIBS   = -lgcrypt -ldl -lgpg-error
        CFLAGS =
    BDB:
        LIBS   =  -L/usr/local/BerkeleyDB.5.3/lib -ldb-5.3
        CFLAGS =  -I/usr/local/BerkeleyDB.5.3/include/
Configure summary:
    Install style:
         redhat-sysv
    AFP:
         Large file support (>2GB) for AFP3: yes
         Extended Attributes: ad | sys
    CNID:
         backends:  dbd last tdb
    UAMS:
         DHX     ( SHADOW)
         DHX2    ( SHADOW)
         RANDNUM (afppasswd)
         clrtxt  ( SHADOW)
         guest
    Options:
         DDP (AppleTalk) support: no
         SLP support:             no
         Zeroconf support:        yes
         tcp wrapper support:     no
         quota support:           no
         admin group support:     yes
         valid shell check:       yes
         cracklib support:        no
         dropbox kludge:          no
         force volume uid/gid:    no
         ACL support:             yes
         LDAP support:            yes

# make
# make install

ファイアーウォールのポートを開放
mDNSで名前解決ができるようにそのポートを開放します。mDNSはAvahi-daemonがやってくれます。
Avahiが使用するは5353番ポートのプロトコルはUDPを使用します。
開放するポートを追記

場所 /etc/sysconfig/iptables

# gedit /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m udp -p udp --dport 5353  -j ACCEPT

自分の環境ではAvahi-daemonの使用するポートを開放しないとサーバが見つけられなかったのですが、これでFinderの共有フォルダが常に表示されるようになってくれました。

AFPサーバのステータス確認

# asip-status.pl 192.168.11.2
AFP reply from 192.168.11.2:548
Flags: 1  Cmd: 3  ID: 57005
Reply: DSIGetStatus
Request ID: 57005
Machine type: Netatalk2.2.2
AFP versions: AFP2.2,AFPX03,AFP3.1,AFP3.2,AFP3.3
UAMs: DHCAST128,DHX2
Volume Icon & Mask: exist
Flags: SupportsCopyFile,SupportsServerMessages,SupportsServerSignature,SupportsTCP/IP,SupportsSrvrNotifications,SupportsOpenDirectory,SupportsUTF8Servername,SupportsUUIDs,SupportsSuperClient
Server name: centos
Signature:
0c 9a 7c 1e ea b0 9b 6e 08 23 ae 4a 30 2e 0c 13  ..|....n.#.J0...

Network address: 192.168.11.2 (TCP/IP address)
UTF8 Servername: centos
  • このエントリーをはてなブックマークに追加
  • Pocket
  • follow us in feedly

コメント一覧

  1. HAT より:

    configureのオプションが間違っています。
    ./configure –helpで確認してください。
    –enable-srvloc[=DIR] enable Server Location Protocol (SLP) support
    –enable-zeroconf[=DIR] enable Zeroconf support [auto]
    –with-bdb=PATH specify path to Berkeley DB installation[auto]
    –with-ldap LDAP support (default=auto)
    そもそもこれらは指定しなくても自動認識されます。

    サーバが見えないのはavahiが動いてないか、avahiのポートが開いてないかでしょう。

    • brah より:

      HAT様
      いつもコメントありがとうございます。
      わかりました。もう少しだと思いますのでがんばります。進捗状況などはまたコメントします。よろしくお願いします。

      • HAT より:

        取り消し線を入れたようですが、どちらにしろまだ間違っています。
        ./configure –helpを読んでください。

        –enable-zeroconf[=DIR] enable Zeroconf support [auto]
        –with-bdb=PATH specify path to Berkeley DB installation[auto]

        –enable-zeroconfに付ける引数はディレクトリです。yes/noではありません。
        有効にするなら–enable-zeroconf、無効にするなら–disable-zeroconfです。
        [auto]となっているので、configureがライブラリを発見すれば自動的にenableになります。

        –with-bdbの引数は括弧[]でくくられていないことに注意してくだい。PATHは省略できません。–with-bdbだけ書いても意味をなしません。これも[auto]になっており、configureがライブラリを発見すれば自動的に有効になります。ライブラリを発見できなかった場合にPATHを指定するためのオプションです。

  2. HAT より:

    –enable-srvloc[=DIR] enable Server Location Protocol (SLP) support
    –with-ldap LDAP support (default=auto)

    –enable-srvlocはautoじゃないので、SLPが必要ならこのオプションが必要です。
    しかし、Mac OS X 10.7 LionはSLPに対応してないので、対応させる意味がありません。これは10年以上前のMacに必要な機能です。

    –with-ldapはautoなので、ライブラリが入っていれば自動的に認識されます。ライブラリが入っているのに敢えて無効にしたいときに–without-ldapを使います。

  3. HAT より:

    したがって、–enable-redhat-sysv以外のオプションは全て不要です。

    • brah より:

      HAT様詳細な設定方法の情報をありがとうございます。

      あれから考えてみてBerkeley DBがそういえば入っていないと思いORACLEさんでダウンロードしてインストールしました。
      後からよく考えてみたら、yum db4-develでインストールをしているんでしたね。

      # tar zxf db-5.3.15.gz
      # cd db-5.3.15
      # cd build_unix
      # ../dist/configure --help
      `configure' configures Berkeley DB 5.3.15 to adapt to many kinds of systems.
      
      Usage: ../dist/configure [OPTION]... [VAR=VALUE]...
      
      To assign environment variables (e.g., CC, CFLAGS...), specify them as
      VAR=VALUE.  See below for descriptions of some of the useful variables.
      
      Defaults for the options are specified in brackets.
      
      # ../dist/configure --with-uniquename
      # make
      # make install
      
      Installing documentation: /usr/local/BerkeleyDB.5.3/docs ...
      
      # cd netatalk-2.2.2
      # ./configure --help
      # ./configure --enable-redhat-sysv --with-bdb=/usr/local/BerkeleyDB.5.3
      
      Using libraries:
          LIBS = -lpthread  -L$(top_srcdir)/libatalk
          CFLAGS = -I$(top_srcdir)/include -D_U_="__attribute__((unused))" -g -O2 -I$(top_srcdir)/sys
          SSL:
              LIBS   =  -L/usr/lib64 -lcrypto
              CFLAGS =  -I/usr/include/openssl
          LIBGCRYPT:
              LIBS   = -lgcrypt -ldl -lgpg-error
              CFLAGS =
          BDB:
              LIBS   =  -L/usr/local/BerkeleyDB.5.3/lib -ldb-5.3
              CFLAGS =  -I/usr/local/BerkeleyDB.5.3/include/
      Configure summary:
          Install style:
               redhat-sysv
          AFP:
               Large file support (>2GB) for AFP3: yes
               Extended Attributes: ad | sys
          CNID:
               backends:  dbd last tdb
          UAMS:
               DHX     ( SHADOW)
               DHX2    ( SHADOW)
               RANDNUM (afppasswd)
               clrtxt  ( SHADOW)
               guest
          Options:
               DDP (AppleTalk) support: no
               SLP support:             no
               Zeroconf support:        yes
               tcp wrapper support:     no
               quota support:           no
               admin group support:     yes
               valid shell check:       yes
               cracklib support:        no
               dropbox kludge:          no
               force volume uid/gid:    no
               ACL support:             yes
               LDAP support:            yes
      
      # make
      # make install
      

      configureというのは詳しくないですがソースパッケージのインストールでライブラリを関連づけてくれる作業になるんですね。
      configureする前にhelpを参照してどのようにconfigureするのかを指定したりすることが必要だったんだと何となく感じました。

      ここまでの作業を終えてインストールしましたが、Mac LionでもSnow Leopardでも同じ現象が起きます。CentOS起動して起動したばかりの状態だとFinderの左にある共有のホスト名がでてそこから「別名で接続」ボタンをクリックして接続できるのですが、少し時間が経過してからFinderの左にある共有のホスト名をクリックすると「別名で接続」ボタンが反応しなくなり「サーバが存在しないか、現在利用できません。サーバの名前または IP アドレス、およびネットワーク接続を確認してから、やり直してください。」というダイアログが表示されてしまいます。
      このときはafp://サーバのIPアドレスを入力しないと接続できない状態です。
      Avahiってポート番号は何番を使いますか?海外のサイトでも調べてみましたが、とくにmdnsのポートには触れていませんでした。

      138はWindowsが使うNetBIOSだとわかったんですがAvahiとは関係がなさそうですね。

  4. HAT より:

    udpの5353です。うちのページで一覧を載せてますが。
    http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html

    • brah より:

      HAT様のサイトも拝見していたのですが、そこだけうっかり見落としてしまいました。
      そのポートをすぐに開けてみます。

    • brah より:

      HAT様
      早速変更して試したところ安定して接続できるようになりました。常にFinderの共有にAFPサーバが表示されていてお伝えしていた現象が見られなくなりました。
      本当に助かりました。ありがとうございました。
      またサイトを参考にさせていただき、サーバのアイコンも変えてみたいと思います。
      後まだ設定をしていなかったのですがタイムマシンにも対応できるようにしたいと思います。
      サーバを触るのは初めてだったのですがこうやって自分で設定をしていくのは楽しいと少し感じました。

  5. HAT より:

    「Appletalk を経由して」という記述がありますが、これは誤りです。
    正しくは「AFPを経由して」です。
    DDP(AppleTalk) Support: No
    となっているとおり、そのnetatalkはAppleTalkに対応していません。
    AppleTalkは20年程前のMacに必要な機能であり、現在は必要ありません。

    http://ja.wikipedia.org/wiki/AppleTalk
    http://ja.wikipedia.org/wiki/Apple_Filing_Protocol

  6. HAT より:

    後ろに付いている数字がバージョン番号を表しています。全てインストールするためのソースです。

    CentOSの場合、Avahiが標準で入っています。
    AvahiとmDNSResponderの両方入っていると混乱が生じるので、
    Avahiを消す必要があります。
    しかし、AvahiはCentOS内の他のパッケージも使っているので、それらとの
    依存関係により、Avahiだけを削除することはできません。

    mDNSResponderを使う前に、
    Avahiとそれに依存するパッケージを全て削除し、
    mDNSResponderをインストールしたあと、
    削除したソフトをmDNSResponder対応でビルドしなおすという作業になります。

    • brah より:

      HAT様
      AvahiとmDNSResponderは競合してしまう訳ですね。なかなかその作業も大変そうなのでこのまま使う事にします。
      いろいろありがとうございます。

brah への返信 コメントをキャンセル

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

*

内容に問題なければ、下記の「コメント送信」ボタンを押してください。