netatalk 2.2.1 のダウンロードと準備
まずは前に netatalk 2.2.0 をインストールした時のメモを見て準備。
このサーバーには avahi-devel が入っていなかったのでインストールした。
[paraches@raphael myTest]$ yum list installed | grep avahi avahi.i386 0.6.16-10.el5_6 installed avahi.x86_64 0.6.16-10.el5_6 installed avahi-compat-libdns_sd.x86_64 0.6.16-10.el5_6 installed avahi-glib.i386 0.6.16-10.el5_6 installed avahi-glib.x86_64 0.6.16-10.el5_6 installed [paraches@raphael myTest]$ sudo yum install avahi-devel <省略> Installed: avahi-devel.i386 0:0.6.16-10.el5_6 avahi-devel.x86_64 0:0.6.16-10.el5_6 Complete! [paraches@raphael myTest]$
netatalk 2.2.1 はココからダウンロードしてきて展開する。
[paraches@raphael myTest]$ wget http://sourceforge.net/projects/netatalk/files/netatalk/2.2.1/netatalk-2.2.1.tar.gz/download [paraches@raphael myTest]$ tar zxvf netatalk-2.2.1.tar.gz [paraches@raphael myTest]$ cd netatalk-2.2.1
configure して make & make install する
まずは configure
[paraches@raphael netatalk-2.2.1]$ ./configure --enable-redhat --with-bdb=/usr/local/BerkeleyDB.5.1/ <省略> ERROR: --enable-redhat is obsoleted. Use --enable-redhat-sysv or --enable-redhat-systemd. exit 1 [paraches@raphael netatalk-2.2.1]$
あ! エラー!
でも、これはココに書いてあったのをさっき読んだばかりだった…。
というわけで、再度トライ!
[paraches@raphael netatalk-2.2.1]$ ./configure --enable-redhat-sysv --with-bdb=/usr/local/BerkeleyDB.5.1/ <省略> 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.1//lib -ldb-5.1 CFLAGS = -I/usr/local/BerkeleyDB.5.1//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 ( SHADOW) passwd ( SHADOW) guest Options: DDP (AppleTalk) support: no 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 ACL support: no LDAP support: yes [paraches@raphael netatalk-2.2.1]$
無事終了!
で、さっくり make & make install!
[paraches@raphael netatalk-2.2.1]$ make <省略> /bin/sh ../../libtool --tag=CC --mode=compile gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../include -D_U_="__attribute__((unused))" -g -O2 -I../../sys -MT ldap.lo -MD -MP -MF .deps/ldap.Tpo -c -o ldap.lo ldap.c gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../include "-D_U_=__attribute__((unused))" -g -O2 -I../../sys -MT ldap.lo -MD -MP -MF .deps/ldap.Tpo -c ldap.c -fPIC -DPIC -o .libs/ldap.o ldap.c:56: error: 配列の型が不完全要素型を持っています ldap.c:72: error: 配列の型が不完全要素型を持っています make[3]: *** [ldap.lo] エラー 1 make[3]: ディレクトリ `/home/paraches/myTest/netatalk-2.2.0/libatalk/acl' から出ます make[2]: *** [all-recursive] エラー 1 make[2]: ディレクトリ `/home/paraches/myTest/netatalk-2.2.0/libatalk' から出ます make[1]: *** [all-recursive] エラー 1 make[1]: ディレクトリ `/home/paraches/myTest/netatalk-2.2.0' から出ます make: *** [all] エラー 2 [paraches@raphael netatalk-2.2.1]$
はい、エラー!
「配列の型が不完全要素型を持っています」って何?
とりあえず、ソースを見てみる。
struct ldap_pref ldap_prefs[] = { {&ldap_server, "ldap_server", 0, 0, -1}, {&ldap_auth_method,"ldap_auth_method", 1, 1, -1}, {&ldap_auth_dn, "ldap_auth_dn", 0, 0, 0}, {&ldap_auth_pw, "ldap_auth_pw", 0, 0, 0}, {&ldap_userbase, "ldap_userbase", 0, 0, -1}, {&ldap_userscope, "ldap_userscope", 1 ,1, -1}, {&ldap_groupbase, "ldap_groupbase", 0, 0, -1}, {&ldap_groupscope, "ldap_groupscope", 1 ,1, -1}, {&ldap_uuid_attr, "ldap_uuid_attr", 0, 0, -1}, {&ldap_name_attr, "ldap_name_attr", 0, 0, -1}, {&ldap_group_attr, "ldap_group_attr", 0, 0, -1}, {&ldap_uid_attr, "ldap_uid_attr", 0, 0, 0}, {NULL, NULL, 0, 0, -1} }; struct pref_array prefs_array[] = { {"ldap_auth_method", "none", LDAP_AUTH_NONE}, {"ldap_auth_method", "simple", LDAP_AUTH_SIMPLE}, {"ldap_auth_method", "sasl", LDAP_AUTH_SASL}, {"ldap_userscope", "base", LDAP_SCOPE_BASE}, {"ldap_userscope", "one", LDAP_SCOPE_ONELEVEL}, {"ldap_userscope", "sub", LDAP_SCOPE_SUBTREE}, {"ldap_groupscope", "base", LDAP_SCOPE_BASE}, {"ldap_groupscope", "one", LDAP_SCOPE_ONELEVEL}, {"ldap_groupscope", "sub", LDAP_SCOPE_SUBTREE}, {NULL, NULL, 0} };
ダメ! 不完全要素型ってなに???
ググっても「要素の数が決まってないとダメなのかな〜?」程度にしか理解できない…。
もちろん、配列の要素数を 13 と 10 にしてやってみてもダメ!
どうしたもんだろう?と思って色々とググっていたら、こんなページを見つけた!
configure の結果のところで、ACL Support が no だと同じエラーが出るらしい。(英語だと「array type has incomplete element type」みたい。こっちで調べたらサックリ情報が見つかったかも…)
で、ACL Support を yes にするには、libacl1-dev をインストールしろと。
これは Ubuntu の話で、CentOS だと libacl-devel になる。
早速インストール。
[paraches@raphael netatalk-2.2.1]$ sudo yum install libacl-devel <省略> Installed: libacl-devel.i386 0:2.2.39-6.el5 libacl-devel.x86_64 0:2.2.39-6.el5 Dependency Installed: libattr-devel.x86_64 0:2.4.32-1.1 Complete! [paraches@raphael netatalk-2.2.1]$
これでいけるはず。
configure をやり直してみる。
[paraches@raphael netatalk-2.2.1]$ ./configure --enable-redhat-sysv --with-bdb=/usr/local/BerkeleyDB.5.1/ <省略> 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.1//lib -ldb-5.1 CFLAGS = -I/usr/local/BerkeleyDB.5.1//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 ( SHADOW) passwd ( SHADOW) guest Options: DDP (AppleTalk) support: no 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 ACL support: yes LDAP support: yes [paraches@raphael netatalk-2.2.1]$ make clean
ACL support が yes になったので、make clean して再度 make してみる。
[paraches@raphael netatalk-2.2.1]$ make clean [paraches@raphael netatalk-2.2.1]$ make [paraches@raphael netatalk-2.2.1]$
エラー出なかった!
後は make install でインストール。
[paraches@raphael netatalk-2.2.1]$ sudo make install [paraches@raphael netatalk-2.2.1]$
さっくりインストール終了!
設定は前に netatalk 2.2.0 をインストールした時と同じで。