Scientific Linux 5.6 に Netatalk 2.2.0 をインストール

Mac OS X Lion (10.7) でネットワーク・ボリュームを Time Machine として使うには AFP 3.3 が必須なため、先日 Netatalk 2.2-beta4 をインストールしたが、早速、安定版の2.2.0がリリースされたので、Scientific Linux (SL) 5.6 にこれをインストールした。Red Hat Enterprise Linux (RHEL) / CentOS / Oracle Linux でも同様の方法でインストールできるだろう。分かりやすくするため、この記事はアップグレードではなく、新規インストールの方法を書いている。

まず、ビルドに必要なパッケージをインストールしておく。

[root@charlie ~]# yum install gcc make
......
================================================================================
 Package              Arch          Version                Repository      Size
================================================================================
Installing:
 gcc                  x86_64        4.1.2-50.el5           sl-base        5.3 M
 make                 x86_64        1:3.81-3.el5           sl-base        471 k
Installing for dependencies:
 cpp                  x86_64        4.1.2-50.el5           sl-base        2.9 M
 glibc-devel          x86_64        2.5-58.el5_6.3         sl-base        2.4 M
 glibc-headers        x86_64        2.5-58.el5_6.3         sl-base        594 k
 kernel-headers       x86_64        2.6.18-238.12.1.el5    sl-security    1.2 M
 libgomp              x86_64        4.4.4-13.el5           sl-base         69 k
......

ここからは Netatalk 2.2 Manual: Chapter 2. Installation に従ってインストールを進めていく。また、Unofficial Netatalk Info: Netatalk and Samba も参考にした。

Netatalk 2.2.0 には Oracle Berkeley DB 4.6 以上(5でもOK)が必要だが、Scientific Linux 5.6 には4.3.29までしかないので、まずはこれをソースからビルドするため、Oracle Berkeley DB Downloads から Berkeley DB 11gR2 (11.2.5.2.28) (Berkeley DB 5.2.28.tar.gz) をダウンロードして展開する。

[root@charlie tmp]# tar zxf db-5.2.28.tar.gz

Berkeley DB をビルドする。時間は少しかかるが、気にする点はあまりない。--with-uniquenameをつけておくと、インストール済みの異なるバージョンの Berkeley DB のライブラリと名前がかぶらなくなる。

[root@charlie tmp]# cd db-5.2.28/build_unix/
[root@charlie build_unix]# ../dist/configure --with-uniquename
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking if building in the top-level or dist directories... no
......
config.status: creating db.h
config.status: creating db_config.h
config.status: executing libtool commands
[root@charlie build_unix]# make
./libtool --mode=compile cc -c -I. -I../src  -D_GNU_SOURCE -D_REENTRANT -O3  ../src/mutex/mut_tas.c
libtool: compile:  cc -c -I. -I../src -D_GNU_SOURCE -D_REENTRANT -O3 ../src/mutex/mut_tas.c  -fPIC -DPIC -o .libs/mut_tas.o
libtool: compile:  cc -c -I. -I../src -D_GNU_SOURCE -D_REENTRANT -O3 ../src/mutex/mut_tas.c -o mut_tas.o >/dev/null 2>&1
......
./libtool --mode=link cc -O3  -o db_verify  \
      db_verify.lo util_cache.lo util_sig.lo libdb-5.2.la -lpthread
libtool: link: cc -O3 -o .libs/db_verify .libs/db_verify.o .libs/util_cache.o .libs/util_sig.o  ./.libs/libdb-5.2.so -lpthread  -Wl,-rpath -Wl,/usr/local/BerkeleyDB.5.2/lib
./libtool --mode=execute true db_verify
[root@charlie build_unix]# make install
Installing DB include files: /usr/local/BerkeleyDB.5.2/include ...
Installing DB library: /usr/local/BerkeleyDB.5.2/lib ...
libtool: install: cp -p .libs/libdb-5.2.so /usr/local/BerkeleyDB.5.2/lib/libdb-5.2.so
......
libtool: install: cp -p .libs/db_upgrade /usr/local/BerkeleyDB.5.2/bin/db_upgrade
libtool: install: cp -p .libs/db_verify /usr/local/BerkeleyDB.5.2/bin/db_verify
Installing documentation: /usr/local/BerkeleyDB.5.2/docs ...
[root@charlie ~]# echo "/usr/local/BerkeleyDB.5.2/lib" > /etc/ld.so.conf.d/BerkeleyDB.5.2.conf
[root@charlie ~]# ldconfig

Berkeley DB 以外は必須ではないが、以下のものをインストールした。Lionではデフォルト認証方式がDHX2になっているので、libgcrypt-develは忘れずにインストールしよう。なお、ボクはLinuxのユーザーをLDAP認証にしているので、NetatalkもPAM経由でLDAP認証させるため、pam-develもインストールしている。

[root@charlie ~]# yum install avahi-devel libacl-devel libgcrypt-devel openssl-devel pam-devel quota
......
================================================================================
 Package                  Arch        Version                Repository    Size
================================================================================
Installing:
 avahi-devel              i386        0.6.16-10.el5_6        sl-base       38 k
 avahi-devel              x86_64      0.6.16-10.el5_6        sl-base       38 k
 libacl-devel             i386        2.2.39-6.el5           sl-base       81 k
 libacl-devel             x86_64      2.2.39-6.el5           sl-base       82 k
 libgcrypt-devel          i386        1.4.4-5.el5            sl-base      396 k
 libgcrypt-devel          x86_64      1.4.4-5.el5            sl-base      388 k
 openssl-devel            i386        0.9.8e-12.el5_5.7      sl-base      1.9 M
 openssl-devel            x86_64      0.9.8e-12.el5_5.7      sl-base      1.9 M
 pam-devel                i386        0.99.6.2-6.el5_5.2     sl-base      187 k
 pam-devel                x86_64      0.99.6.2-6.el5_5.2     sl-base      187 k
 quota                    x86_64      1:3.13-5.el5           sl-base      347 k
Installing for dependencies:
 e2fsprogs-devel          x86_64      1.39-23.el5_5.1        sl-base      633 k
 gnutls-devel             x86_64      1.4.1-3.el5_4.8        sl-base      935 k
 keyutils-libs-devel      x86_64      1.2-1.el5              sl-base       27 k
 krb5-devel               x86_64      1.6.1-55.el5_6.1       sl-base      1.9 M
 libattr-devel            x86_64      2.4.32-1.1             sl-base       34 k
 libgpg-error-devel       x86_64      1.4-2                  sl-base       17 k
 libselinux-devel         x86_64      1.33.4-5.7.el5         sl-base      149 k
 libsepol-devel           x86_64      1.15.2-3.el5           sl-base      192 k
 pkgconfig                x86_64      1:0.21-2.el5           sl-base       61 k
 zlib-devel               x86_64      1.2.3-3                sl-base      102 k
......

SourceForge: netatalk: 2.2 からnetatalk-2.2.0.tar.gzをダウンロードして展開する。

[root@charlie tmp]# tar zxf netatalk-2.2.0.tar.gz

Netatalkをビルドする。Scientific Linux にインストールするので--enable-redhat、クオータに対応するために--enable-quota、Bonjourに対応するために--enable-zeroconf、Berkeley DB のインストール先が標準とは違うので--with-bdb、PAMを使用できるように--with-pam、ACLを使用できるように--with-aclsをつけた。

[root@charlie tmp]# tar zxf netatalk-2.2.0.tar.gz
[root@charlie netatalk-2.2.0]# ./configure --enable-redhat --enable-quota --enable-zeroconf --with-bdb=/usr/local/BerkeleyDB.5.2 --with-pam --with-acls
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
......
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing default commands
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 =g
    PAM:
        LIBS   =  -lpam
        CFLAGS =g
    WRAP:
        LIBS   = -lwrap
        CFLAGS =g
    BDB:
        LIBS   =  -L/usr/local/BerkeleyDB.5.2/lib -ldb-5.2
        CFLAGS =  -I/usr/local/BerkeleyDB.5.2/include/
    CUPS:
        LIBS   = -lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lz -lpthread -lm -lcrypt
        CFLAGS =g
Configure summary:
    Install style:
         redhat
    AFP:
         AFP 3.x calls activated:g
         Extended Attributes: ad | sys
    CNID:
         backends:  dbd last tdb
    UAMS:
         DHX     (PAM SHADOW)
         DHX2    (PAM SHADOW)
         RANDNUM (PAM SHADOW)
         passwd  (PAM SHADOW)
         guest
    Options:
         DDP (AppleTalk) support: no
         CUPS support:            yes
         SLP support:             no
         Zeroconf support:        yes
         tcp wrapper support:     yes
         quota support:           yes
         admin group support:     yes
         valid shell check:       yes
         cracklib support:        no
         dropbox kludge:          no
         force volume uid/gid:    no
         Apple 2 boot support:    no
         ACL support:             yes
[root@charlie netatalk-2.2.0]# make
make  all-recursive
make[1]: ディレクトリ `/tmp/netatalk-2.2.0' に入ります
Making all in libatalk
......
make[2]: `all-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/tmp/netatalk-2.2.0' から出ます
make[1]: ディレクトリ `/tmp/netatalk-2.2.0' から出ます
[root@charlie netatalk-2.2.0]# make install
Making install in libatalk
make[1]: ディレクトリ `/tmp/netatalk-2.2.0/libatalk' に入ります
Making install in acl
......
make[2]: `install-data-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/tmp/netatalk-2.2.0' から出ます
make[1]: ディレクトリ `/tmp/netatalk-2.2.0' から出ます
[root@charlie ~]# echo "/usr/local/etc/netatalk/uams" > /etc/ld.so.conf.d/netatalk.conf
[root@charlie ~]# ldconfig

OS起動時にNetatalkとBonjour対応に必要なavahi-daemonが自動起動するようにし、まずは手動で起動する。

[root@charlie ~]# chkconfig netatalk on
[root@charlie ~]# chkconfig avahi-daemon on
[root@charlie ~]# service netatalk start
Starting Netatalk services:
  Starting cnid_metad:                                     [  OK  ]
  Starting afpd:                                           [  OK  ]
[root@charlie ~]# service avahi-daemon start
Starting Avahi daemon...                                   [  OK  ]

TCP548ポートをafpdプロセスがリスンしているか確認する。

[root@charlie ~]# ps aux | egrep "avahi|afpd|cnid"
avahi     7706  0.0  0.1  22100  1344 ?        Ss   13:13   0:00 avahi-daemon: running [charlie.local]
avahi     7707  0.0  0.0  21076   316 ?        Ss   13:13   0:00 avahi-daemon: chroot helper
root      7743  0.0  0.0   6364   488 ?        S    13:13   0:00 /usr/local/sbin/cnid_metad -l log_note
root      7746  1.5  0.2 108136  2012 ?        Sl   13:13   0:01 /usr/local/sbin/afpd -U uams_dhx.so,uams_dhx2.so -g nobody -c 20 -n charlie
root      7789  0.0  0.1  65448   888 pts/3    S+   13:15   0:00 egrep afpd|cnid|avahi
[root@charlie ~]# lsof -i:548
COMMAND   PID USER   FD   TYPE  DEVICE SIZE NODE NAME
afpd    10169 root    4u  IPv6 3966824       TCP *:afpovertcp (LISTEN)

avahi-daemonが正しく動いていれば、Lionのメニュー「移動 > ネットワーク」に、しばらくすると今回インストールしたLinuxマシンが自動的にLCDディスプレイ・アイコンで表示される。

表示されない場合は、AFPサーバーとしては正しく動作しているか「移動 > サーバへ接続…」から確認してみよう。接続できればNetatalkの設定には問題ないはずだ。

Lionから接続するのであれば、Netatalkの設定はデフォルトでも特に問題なく動作するはずだが、必要あれば Unofficial Netatalk Info: Netatalk and Samba が参考になるだろう。ボクはアイコン「移動 > ネットワーク」で表示されるアイコンを(今は亡き)Xserveのアイコンに変更した。

# default:
# - -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword
- -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword -mimicmodel Xserve

Scientific Linux 5.6 に Netatalk 2.2.0 をインストール への3件のコメント

  1. [...] HAT blog: netatalk 近状 によると、AFPはAFPでも、Lionからは AFP 3.3 がどうやら必須になってしまったようなので、3.3に対応した Netatalk 2.2.0 でAFPサーバーをまずは構築する。方法は 複眼中心: Scientific Linux 5.6 に Netatalk 2.2.0 をインストール を参考にしてほしい。 [...]

  2. CUPSは印刷のためのものなので、AppleTalk(DDP)を有効にしてpapdを使わない限り、関係ないですよ。

    • CUPSはPAPのためだけで、AFPでは使えないのですね。ありがとうございます。記事からCUPSに言及している部分を削除しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

トラックバックをどうぞ

言及リンクがないと(あなたのページにこのページへのリンクがないと)トラックバックできません。