« Lion復元機能を使う | トップページ | HDL2-G2.0にnetatalk 2.2.2をインストール »

2012.02.09

HDL2-G2.0にnetatalk 2.2.2をインストールするのに苦戦中

netatalk 2.2.2が出ていたので、HDL2-G2.0にインストールを試みました。

./configure --enable-debian --with-bdb=/usr/local/Berkeley-5.2.28 --with-pkgconfdir=/etc/netatalk --with-uams-path=/usr/lib/netatalk

(1行です。念のため)
環境をいじったせいか最初makeできず戸惑いましたが、再度開発環境を入れ直してやってみたところ、なんとかmake & make installできました。
起動もできたのですが(HAT様、ありがとうございます。)、Macからうまく接続できていません。
ユーザーでもゲストでも失敗します。
以下に、現状を書きます。

configureのオプションは以下のとおり。

$ ./configure --enable-debian --with-bdb=/usr/local/Berkeley-5.2.28 --with-pkgconfdir=/etc/netatalk --with-uams-path=/usr/lib/netatalk

config.log中のオプションは以下のとおり。

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 = -lcrypto
CFLAGS = -I/usr/include/
LIBGCRYPT:
LIBS = -lgcrypt -lgpg-error
CFLAGS =
BDB:
LIBS = -L/usr/local/Berkeley-5.2.28/lib -ldb-5.2
CFLAGS = -I/usr/local/Berkeley-5.2.28/include/
CUPS:
LIBS = -lcups -lgnutls -lz -lpthread -lm -lcrypt
CFLAGS =
Configure summary:
Install style:
debian
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: 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: no

/var/log/netatalk.logの抜粋は以下のとおり。
うーん、MAC_JAPANESE to UCS-2 not supportedとか
認証に失敗してるっぽいとかしてますね〜。

Feb 09 21:41:27.477205 afpd[4493] {logger.c:406} (D5:Logger): Setup file logging: type: Default, level: LOG_DEBUG, file: /var/log/netatalk.log
Feb 09 21:41:27.479956 afpd[4493] {charcnv.c:260} (E:Default): Required conversion from MAC_JAPANESE to UCS-2 not supported
Feb 09 21:41:27.480247 afpd[4493] {charcnv.c:268} (E:Default): Required conversion from UCS-2 to MAC_JAPANESE not supported
(中略)
Feb 09 21:41:31.588971 afpd[4498] {afp_dsi.c:610} (D5:AFPDaemon): <== Start AFP command: AFP_LOGIN_EXT
Feb 09 21:41:31.592837 afpd[4498] {uams_dhx2_passwd.c:270} (I:UAMS): DHX2 login: tonop
Feb 09 21:42:08.110060 afpd[4498] {afp_dsi.c:617} (D5:AFPDaemon): ==> Finished AFP command: AFP_LOGIN_EXT -> AFPERR_AUTHCONT
Feb 09 21:42:08.110488 afpd[4498] {dsi_cmdreply.c:23} (D5:DSI): dsi_cmdreply(DSI ID: 2, len: 264): START
Feb 09 21:42:08.110891 afpd[4498] {dsi_cmdreply.c:32} (D5:DSI): dsi_cmdreply(DSI ID: 2, len: 264): END
Feb 09 21:42:08.111530 afpd[4498] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:42:08.111860 afpd[4498] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 16
Feb 09 21:42:08.112104 afpd[4498] {dsi_stream.c:547} (D5:DSI): dsi_stream_receive: DSI cmdlen: 0
(中略)
Feb 09 21:43:35.880847 afpd[4502] {afp_dsi.c:610} (D5:AFPDaemon): <== Start AFP command: AFP_LOGINCONT
Feb 09 21:43:35.888597 afpd[4502] {auth.c:270} (N:AFPDaemon): AFP3.3 Login by tonop
Feb 09 21:43:35.891350 afpd[4502] {auth.c:339} (D5:AFPDaemon): obj->options.admingid == 0
Feb 09 21:43:35.891733 afpd[4502] {auth.c:395} (D5:AFPDaemon): login: supplementary groups: 1001
Feb 09 21:43:35.892136 afpd[4502] {afp_dsi.c:617} (D5:AFPDaemon): ==> Finished AFP command: AFP_LOGINCONT -> AFP_OK
Feb 09 21:43:35.892402 afpd[4502] {dsi_cmdreply.c:23} (D5:DSI): dsi_cmdreply(DSI ID: 4, len: 0): START
Feb 09 21:43:35.892877 afpd[4502] {dsi_cmdreply.c:32} (D5:DSI): dsi_cmdreply(DSI ID: 4, len: 0): END
Feb 09 21:43:35.893183 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.893463 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.894206 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.894519 afpd[4502] {dsi_stream.c:547} (D5:DSI): dsi_stream_receive: DSI cmdlen: 8
Feb 09 21:43:35.894760 afpd[4502] {afp_dsi.c:595} (D5:DSI): DSI request ID: 5
Feb 09 21:43:35.894985 afpd[4502] {afp_dsi.c:610} (D5:AFPDaemon): <== Start AFP command: AFP_GETUSERINFO
Feb 09 21:43:35.895202 afpd[4502] {auth.c:1020} (D5:AFPDaemon): begin afp_getuserinfo:
Feb 09 21:43:35.895423 afpd[4502] {auth.c:1080} (D5:AFPDaemon): END afp_getuserinfo:
Feb 09 21:43:35.895644 afpd[4502] {afp_dsi.c:617} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETUSERINFO -> AFP_OK
Feb 09 21:43:35.895877 afpd[4502] {dsi_cmdreply.c:23} (D5:DSI): dsi_cmdreply(DSI ID: 5, len: 6): START
Feb 09 21:43:35.896216 afpd[4502] {dsi_cmdreply.c:32} (D5:DSI): dsi_cmdreply(DSI ID: 5, len: 6): END
Feb 09 21:43:35.896511 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.896789 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.897512 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.897828 afpd[4502] {dsi_stream.c:547} (D5:DSI): dsi_stream_receive: DSI cmdlen: 2
Feb 09 21:43:35.898070 afpd[4502] {afp_dsi.c:595} (D5:DSI): DSI request ID: 6
Feb 09 21:43:35.898292 afpd[4502] {afp_dsi.c:610} (D5:AFPDaemon): <== Start AFP command: AFP_GETSRVPARAM
Feb 09 21:43:35.898628 afpd[4502] {volume.c:1960} (D5:AFPDaemon): load_volumes: user: tonop
Feb 09 21:43:35.900043 afpd[4502] {volume.c:1249} (D5:AFPDaemon): readvolfile: "/etc/netatalk/AppleVolumes.system"
Feb 09 21:43:35.933719 afpd[4502] {volume.c:1249} (D5:AFPDaemon): readvolfile: "/etc/netatalk/AppleVolumes.default"
Feb 09 21:43:35.950536 afpd[4502] {volume.c:617} (D5:AFPDaemon): createvol: Volume 'tonop'
Feb 09 21:43:35.952301 afpd[4502] {charcnv.c:1081} (E:Default): Conversion failed (CH_UCS2 to MAC_JAPANESE):Invalid argument
Feb 09 21:43:35.952637 afpd[4502] {charcnv.c:374} (E:Default): Conversion failed ( MAC_JAPANESE to CH_UCS2 )
Feb 09 21:43:35.954150 afpd[4502] {afp_dsi.c:617} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETSRVPARAM -> AFP_OK
Feb 09 21:43:35.954489 afpd[4502] {dsi_cmdreply.c:23} (D5:DSI): dsi_cmdreply(DSI ID: 6, len: 5): START
Feb 09 21:43:35.954866 afpd[4502] {dsi_cmdreply.c:32} (D5:DSI): dsi_cmdreply(DSI ID: 6, len: 5): END
Feb 09 21:43:35.955163 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.955445 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.960263 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:35.960580 afpd[4502] {dsi_stream.c:547} (D5:DSI): dsi_stream_receive: DSI cmdlen: 2
Feb 09 21:43:35.960818 afpd[4502] {afp_dsi.c:595} (D5:DSI): DSI request ID: 7
Feb 09 21:43:35.961040 afpd[4502] {afp_dsi.c:610} (D5:AFPDaemon): <== Start AFP command: AFP_GETSRVPARAM
Feb 09 21:43:35.961262 afpd[4502] {volume.c:1960} (D5:AFPDaemon): load_volumes: user: tonop
Feb 09 21:43:35.962231 afpd[4502] {volume.c:1249} (D5:AFPDaemon): readvolfile: "/etc/netatalk/AppleVolumes.system"
Feb 09 21:43:35.995757 afpd[4502] {volume.c:1249} (D5:AFPDaemon): readvolfile: "/etc/netatalk/AppleVolumes.default"
Feb 09 21:43:36.011683 afpd[4502] {volume.c:617} (D5:AFPDaemon): createvol: Volume 'tonop'
Feb 09 21:43:36.012057 afpd[4502] {charcnv.c:1081} (E:Default): Conversion failed (CH_UCS2 to MAC_JAPANESE):Invalid argument
Feb 09 21:43:36.012321 afpd[4502] {charcnv.c:374} (E:Default): Conversion failed ( MAC_JAPANESE to CH_UCS2 )
Feb 09 21:43:36.013988 afpd[4502] {afp_dsi.c:617} (D5:AFPDaemon): ==> Finished AFP command: AFP_GETSRVPARAM -> AFP_OK
Feb 09 21:43:36.014256 afpd[4502] {dsi_cmdreply.c:23} (D5:DSI): dsi_cmdreply(DSI ID: 7, len: 5): START
Feb 09 21:43:36.014612 afpd[4502] {dsi_cmdreply.c:32} (D5:DSI): dsi_cmdreply(DSI ID: 7, len: 5): END
Feb 09 21:43:36.014906 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:36.015184 afpd[4502] {dsi_stream.c:150} (D5:DSI): from_buf(read: 0, unread:0 , space left: 3646080): returning 0
Feb 09 21:43:37.012568 afpd[4502] {socket.c:120} (D5:AFPDaemon): select timeout 1 s

とりあえず、今日はこの辺で…(続くのか…?)

|

« Lion復元機能を使う | トップページ | HDL2-G2.0にnetatalk 2.2.2をインストール »

NAS」カテゴリの記事

コメント

iconv()関数まわりの問題ですね。
そのnetatalkはiconv対応してないのでCJKが使えないんです。

iconv()の実装にはglibcによるものとlibiconvによるものの2種類があります。
最近の環境ではglibcのiconv()がしっかりしてるので、こっちを使うのが普通です。古い環境ではglibcのiconv()の実装がアマいのでconfigureオプションに--with-libiconvをつけてlibiconvを使います。
BSD系ではそのlibiconvもアマいので、sambaでは日本語パッチをあてたlibiconvを使わないといけないとかで、ものすごく面倒です。

で、netatalkの場合ですが、CJK対応はiconv()のラッパーとして実装されています。
たとえば日本語の場合、iconvのSHIFT_JISにラップしてMAC_JAPANESEが有効になります。configure時にiconv()を調べて、使えないと判断したらCJKが無効になり、MAC_JAPANESEが使えません。

具体的にいうと、libatalk/unicode/charsets/generic_cjk.cの最初の方に、
#if HAVE_USABLE_ICONV
という行があり、これが無効だとそこから下全部がコンパイルされません。
つまりCJK未対応になります。


で、いくつかの疑問が残ります。
1) Debian Etchは極めて古いので、iconvの実装がどうだったか全く覚えていない。
2) 2.2.1と2.2.2の間でiconv関連の変更はないので問題がおきるはずがない。
3) --with-libiconvを指定してないのにlibiconv.soを要求するのはなぜか。
4) libiconv.soを読み込んでいるのにCJKが使えないのはなぜか。
5) MAC_JAPANESEが使えないと文字化けするかもしれないが、ログインぐらいはさせてくれてもいいだろう。

試しにMAC_JAPANESEをMAC_ROMANに変更したらどうなりますか。MAC_ROMANはiconvを必要としません。

根本的にライブラリ関係がおかしいと思います。
基本中の基本であるglibcからして疑わしい。
OS自体の再インストールからはじめないとダメではないかと。

投稿: HAT | 2012.02.10 20:08

HAT様

2.2.1から2.2.2で、libiconv周りに変更がないとのコメントで、やはり環境面が原因だと思い、libc6を(無理矢理?)上書きして、netatalkインストールを最初からやり直したらうまく動作しました。(個人的には??の部分もありますが、結果からすれば、これまで色々いじっている中でおかしくしていたのでしょう)
お騒がせしました。ご助言、ありがとうございました。

投稿: tonop | 2012.02.11 09:43

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1024423/43988803

この記事へのトラックバック一覧です: HDL2-G2.0にnetatalk 2.2.2をインストールするのに苦戦中:

« Lion復元機能を使う | トップページ | HDL2-G2.0にnetatalk 2.2.2をインストール »