
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




[...] HAT blog: netatalk 近状 によると、AFPはAFPでも、Lionからは AFP 3.3 がどうやら必須になってしまったようなので、3.3に対応した Netatalk 2.2.0 でAFPサーバーをまずは構築する。方法は 複眼中心: Scientific Linux 5.6 に Netatalk 2.2.0 をインストール を参考にしてほしい。 [...]
CUPSは印刷のためのものなので、AppleTalk(DDP)を有効にしてpapdを使わない限り、関係ないですよ。
CUPSはPAPのためだけで、AFPでは使えないのですね。ありがとうございます。記事からCUPSに言及している部分を削除しました。