Ubuntu 10.04にnetatalk 2.1.3インストール[追記・訂正あり]
(追記 2010-11-13 01:28 この記事では、/etc/netatalk/afp_signature.confの置く位置を変更していますが、/etcがread only mountになっているシステムで使う事を想定してです。普通は、この必要はありません。)
新規に、PowerMac G4/MDDにUbuntu 10.04インストール[追記あり]したので、netatalkも新規インストールになります。タイミング良く、netatalk 2.1.3がリリースされましたので、ちょうど良かったです。
Ubuntu 9.10にnetatalk 2.1.2インストール[追記・訂正あり]していますので、そこで得た反省と知見を取り込んでいます。
今回は、次の方針にしました。
- netatalk 2.1.3を新規インストールする
- 設定はモダンな物にする(SLP対応は残す)
- 設定ファイルの場所は、Ubuntuの流儀になるべく合わせる
- netatalkの動作で気になる所があったので、暫定的に対応する
インストールには、次のページを参考にしています。ありがとうございます。
- Netatalk and Samba
- netatalk 2.1.3 リリース:HAT:So-net blog
- ubuntu 10.04 (lucid)に netatalk 2.1 を入れる:☆ びぼうろぐ ☆:So-netブログ
まずは、必要パッケージのインストールからです。
$ sudo apt-get install libdb4.8-dev (CNIDの管理のために必要) $ sudo apt-get install libssl-dev (uams_dhx.soを使う時に必要) $ sudo apt-get install libgcrypt11-dev (uams_dhx2.soを使う時に必要) $ sudo apt-get install libslp-dev (SLPのために必要)
netatalkのソースをダウンロードして、展開します。
$ cd $ mkdir work $ cd work $ mkdir netatalk $ cd netatalk $ wget http://sourceforge.net/projects/netatalk/files/netatalk/2.1.3/netatalk-2.1.3.tar.gz/download $ tar xvzf netatalk-2.1.3.tar.gz
configureします。
$ cd $ cd work/netatalk/netatalk-2.1.3 $ ./configure --enable-debian \ (UbuntuはDebian系なので) > --enable-srvloc \ (SLPのために必要) > --prefix=/usr \ (できたファイルは/usr以下に置く) > --with-pkgconfdir=/etc/netatalk \ (設定ファイル置き場) > --with-uams-path=/usr/lib/netatalk (ユーザ認証ライブラリ置き場)
–with-message-dirを指定していないので、Server messages pathは[PKGCONF/msg](/etc/netatalk/msg)になります。
Server messages pathが何に使われるか、私はわかっていません。
configureの結果です。
Using libraries: LIBS = -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/openssl LIBGCRYPT: LIBS = -lgcrypt CFLAGS = BDB: LIBS = -ldb-4.8 CFLAGS = SRVLOC: LIBS = -lslp CFLAGS = Configure summary: Install style: debian AFP: AFP 3.x calls activated: yes Large file support (>2GB) for AFP3: yes Extended Attributes: ad | sys DDP enabled: yes CNID: backends: dbd last tdb UAMS: DHX ( SHADOW) DHX2 ( SHADOW) RANDNUM ( SHADOW) passwd ( SHADOW) guest Options: CUPS support: no SLP 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 Apple 2 boot support: no ACL support: no
このままでは、afpd実行中に、/etc/netatalkの下に、afp_signature.confと言うファイルが作られてしまいます。設定ファイルを置くディレクトリの中に、(訂正 2010-07-24 00:25 動的)知らない間にファイルが作られてしまうのは気持ちが悪いので変更します。etc/afpd/Makefileを、直接直してしまいます。
変更前。
-D_PATH_AFPDSIGCONF=\"$(pkgconfdir)/afp_signature.conf\" \
変更後。
-D_PATH_AFPDSIGCONF=\"/var/lib/netatalk/afp_signature.conf\" \
次のページを見ると、動的に作られるファイルは、/var/libに置くのが良さそうなのですが、どうなのでしょうか?
(追記 2010-07-24 00:25 FHSに従うのが良さそうです。Filesystem Hierarchy Standard)
この直し方だと、ファイルが作られるディレクトリが変更になるだけで、manの文章中の記述が直りません。manは、私の環境では、私しか見ないので、良いことにします。
この様な懸念がある事を、開発者の方に連絡を取った方が良いのでしょうか? Netatalk
and Sambaには、バグを見つけたら報告してほしいと書かれていますが、今回の件は、バグとは言えないし…。
根本修正のためには、configureとMakefile.in、およびマニュアルのテンプレートを直す必要があると思います。修正は難しくなさそうですが、オプションや変数の名前を決めるのが、面倒な気がします。単純に、signaturedirとすれば良いでしょうか?
コンパイル&インストールです。
$ make $ sudo make install
afpdのバージョンを確認します。本当は、makeが終わった直後に(インストールする前に)、etc/afpd/afpd -Vで調べておいた方が良いと思います。
$ /usr/sbin/afpd -V afpd 2.1.3 - 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: AFP3.x support: Yes Transport layers: TCP/IP DDP CNID backends: dbd last tdb SLP support: Yes TCP wrappers support: No Quota support: Yes Admin group support: Yes Valid shell checks: Yes cracklib support: No Dropbox kludge: No Force volume uid/gid: No afpd.conf: /etc/netatalk/afpd.conf afp_signature.conf: /var/lib/netatalk/afp_signature.conf AppleVolumes.system: /etc/netatalk/AppleVolumes.system AppleVolumes.default: /etc/netatalk/AppleVolumes.default UAM search path: /usr/lib/netatalk/ Server messages path: /etc/netatalk/msg/
正しくできている様です。
各種設定をします。
$ cd /etc/netatalk $ sudo vi afpd.conf $ sudo mv netatalk.conf /etc/default/netatalk $ sudo vi /etc/default/netatalk $ sudo vi AppleVolumes.default
/etc/netatalk/afpd.confには、次の内容を設定しました。今回は、ログファイルを残すようにしました。
- -tcp -noddp -uamlist uams_guest.so,.so,uams_dhx.so,uams_dhx2.so \ -maccodepage MAC_JAPANESE -unixcodepage UTF8 \ -slp \ -setuplog "Default LOG_INFO /var/log/netatalk/default.log" \ -setuplog "Core LOG_INFO /var/log/netatalk/core.log" \ -setuplog "Logger LOG_INFO /var/log/logger.log" \ -setuplog "CNID LOG_INFO /var/log/netatalk/cnid.log" \ -setuplog "AFPDaemon LOG_INFO /var/log/netatalk/afp.log"
/etc/default/netatalkには、次の内容を設定しました。変更点のみ、列挙します。
ATALK_NAME=`/bin/hostname --short` ATALK_MAC_CHARSET='MAC_JAPANESE' ATALK_UNIX_CHARSET='UTF8' AFPD_UAMLIST="-U uams_guest.so,uams_dhx.so,uams_dhx2.so"
/etc/netatalk/AppleVolumes.defaultには、次の内容を設定しました。
:DEFAULT: options:upriv,usedots cnidscheme:dbd maccharset:MAC_JAPANESE
volcharset:UTF8 dperm:0700 fperm:0600 ea:sys (実際には1行)
/home/username "username" allow:@username deny:admin
/home/u_capsule "Ubuntu Capsule" options:tm volsizelimit:5000
元々設定されていた"~"は、コメントアウトします。
/home/usernameは、ログインディレクトリです。
/home/u_capsuleは、Time Machineのバックアップ用です。volsizelimit:5000は、5GiBと言う事です。実態に合わせて変更してください。
$ sudo mkdir /home/u_capsule $ sudo chown nobody:nogroup /home/u_capsule $ sudo chmod 775 /home/u_capsule
ログファイルを置くディレクトリを作ります。
$ sudo mkdir /var/log/netatalk
afp_signature.confを置くディレクトリを作ります。
$ sudo mkdir /var/lib/netatalk
起動します。
$ sudo service netatalk start
avahi-daemonの設定をします。Ubuntu 10.04には、最初からavahi-daemonが入っていて、起動されています。
$ cd /etc/avahi/services $ sudo vi afpd.service $ sudo vi adisk.service
afpd.serviceの中身は、次の様に設定します。
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_afpovertcp._tcp</type> <port>548</port> </service> </service-group>
adisk.serviceの中身は、次の様に設定します。
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_adisk._tcp</type> <port>9</port> <txt-record>sys=adVF=0x100</txt-record> <txt-record>dk0=adVN=Ubuntu Capsule,adVF=0x81</txt-record> </service> </service-group>
これで、Mac OS Xから見えるはずです。avahi-daemonは、設定ファイルを置くだけで良く、再起動の必要は無さそうです。
Mac OS X 10.5.8 Leopardで試しました。Bonjourホストとして見えます。マウントしてみました。そうしたら、CNID関係のエラーで、リードオンリーでマウントされるというダイアログが出てきました(ダイアログをキャプチャするのを忘れました)。
/var/log/netatalk/default.logを見ると、次のエラーが記録されていました。
Jul 17 19:20:32.548734 afpd[3892] {cnid_dbd.c:314} (E:CNID): dbd_rpc:
Error reading header from fd (db_dir /home/u_capsule): Connection reset by peer
(表示の関係で、折り返しています)
DB関係のエラーの様に見えます。今回、Berkeley DBを4.8に切り替えたからでしょうか? 前回は、Berkeley DB 4.6でした。Ubuntu側で.AppleDBを消して、Mac OS Xから再接続してみたら直りました。
【関連記事】
- PowerMac
G4/MDDにUbuntu 10.04インストール[追記あり] - Ubuntu
9.10にnetatalk 2.1.2インストール[追記・訂正あり] - Ubuntu 9.10にavahiインストール[追記あり]
(訂正 2011-03-06 00:15)afpd.confの書き方を修正しました。
ディスカッション
おかしいですね。netatalk 2.1.xはBDBのバージョンを上げても自動的に修復する筈なんですけどね。前に入れていたnetatalkが2.0だとダメですが。
CNIDデータベースの調子が悪いときはまずbdbコマンドを試してみてください。
netatalk 2.1.3 リリース
netatalk 2.1.3が出てます。 netatalk | Get netatalk at SourceForge.net Snow Leopardのバグにより、netatalk 2.0.xに接続すると問題が発生するので、2.1.3をおすすめします。 インストール手順や設定については、以下のページをご覧ください。 Netatalk and Samba netatalk 2.1.xのインストール実例は結構あります。 Ubuntu 10.04にnetatalk 2.1.3インストール: プラ…
HATさんへ、いつもコメントありがとうございます。
2.1.2/BDB4.6→2.1.3/BDB4.8と言う組み合わせです。
bdbコマンドを探した(/usr, /bin, /sbin)のですが、見つけられませんでした。
まちがえた。
dbdコマンドです。
HATさんへ、再びコメントありがとうございます。
本日、色々試してみました。次の手順で確認しました。
1. .AppleDB削除
2. 2.1.2/BDB4.6に接続 → エラー無し
3. 2.1.3/BDB4.8に接続 → エラー発生
4. dbd -rで、修復
5. 2.1.3/BDB4.8に再接続 → エラー無し
このような結果になりました。
dbd -rで修復できました。
他、調べる事がありましたら、お知らせ下さい。
ありゃ、そうですか。
2.1-beta1の変更点で、
* NEW: support BerkeleyDB upgrade. Starting with the next release after 2.1 in case of BerkeleyDB library updates, Netatalk will be able to upgrade the CNID databases.
というのがあるので、てっきり自動でアップグレードするのかと思ってましたが、
自分でdbdを使えという意味なのかもしれません。
HATさんへ、再びコメントありがとうございます。
変更点を読むと、「アップグレード可能」とは書かれていますが、「自動で」と言う事は書かれていませんね。確かに、自分でと言う事なのかもしれませんね。
dbd -uと言うコマンドも試してみたのですが、うまく行きませんでした。
本文中にも書いたのですが、設定ディレクトリ[PKGCONF]の中に、"afp_signature.conf"が勝手に作られてしまうのは、気持ち悪くありませんか? /var/lib 等に作った方が良いと思います。
MLに参加して、報告するべきなのでしょうか?
よろしくお願いします。
[PKGCONF]に入るように実装したのは、私です。
FHSによる/var/lib/の要件は、アプリケーションやシステムの状態を保存するということであり、ユーザが設定のために修正してはならないとされています。
一方、/etc/は設定ファイルを置く場所であり、静的です。ユーザが設定を行ないます。
afp_signature.confはsignatureを設定するための設定ファイルです。これは初回起動時に自動設定されるだけであり、その後は永久に値がかわりません。netatalkの状態によって値がかわることはありません。すなわち静的です。ユーザが自分で設定することも可能です。
むしろ、atalkd.confの方が疑問です。ネットワーク上に同一のDDPアドレスを持つホストがあった場合、netatalkはatalkd.confを書き換えます。しかしながら、他のパラメータはユーザが書く必要があるので、/var/lib/に置くわけにはいかないでしょう。
疑問がある場合は、こういう場所でなくMLにpostしてください。
HATさんへ、コメントありがとうございます。
色々、お手間を取らせてしまって、申し訳ありません。
大変良くわかりました。
MLがあるのは知っていたのですが、ついついHATさんに甘えてしまいました。ごめんなさい。