Ubuntu 10.04にnetatalk 3.0alpha3インストール[追記あり]
netatalk 3.0alpha1がリリースされたと思っていたら、あっという間にalpha3まで行っていました。早いです!
ブログの移転も一区切りついてきたので、netatalkに戻ってきました。
netatalk 3.0alpha3をUbuntu 10.04 Lucid Lynxにインストールしましたので報告します。
詳しいインストール方法は、HATさんのウェブサイトを見れば、一発です。
基本的に、この方法に則ってインストールしています。
私が取った手順は、次の通りです。
- インストール済みのNetatalkを削除
- 関連ツールインストール
- Netatalk本体インストール
- パッケージダウンロード&展開
- configure
- make
- sudo make install
- Netatalk設定
- 起動
- 動作確認
なお、テスト環境は次の通りです。
- サーバ
- PowerMac G4/MDD
- Ubuntu 10.04 (EA, ACL, LDAP設定済み)
- クライアント1
- Macbook Pro (early 2011)
- OS X 10.7.4 Lion
- クライアント2
- iMac (mid 2007)
- Mac OS X 10.6.8 Snow Leopard (LDAP設定済み)
それでは、順を追って説明していきたいと思います。
1. インストール済みのNetatalkを削除
前のnetatalkをどうやってインストールしていたかによって違います。
Ubuntu標準のnetatalkでインストールした場合は、Synapticパッケージ・マネージャや、apt-getでアンインストールしてください。
次の様な手順で、自分でdpkgを作った場合は、dpkgでアンインストールしてください。
$ sudo dpkg --purge netatalk (設定ファイルも消す)
自分で、netatalkのtarファイルからインストールした場合は、その作業ディレクトリで次のコマンドを実行します。
$ sudo make uninstall
必要に応じて、設定ファイルはバックアップしておいてください。
- /etc/init.d/netatalk
- /etc/default/netatalk
- /etc/netatalk/afpd.conf
- /etc/netatalk/AppleVolumes.default
2. 関連ツールインストール
次のツールがインストールされている必要があります。
$ sudo apt-get install libdb4.8-dev (CNIDの管理のために必要。4.6以上ならOK) $ sudo apt-get install libgcrypt11-dev (uams_dhx2.soを使う時に必要) $ sudo apt-get install libavahi-client-dev (Zeroconfのために必要)
LDAP/ACLサポートのために、追加で必要になるパッケージもインストールします。ACLに対応させないなら不要です。
$ sudo apt-get install libldap2-dev (LDAPのために必要) $ sudo apt-get install libacl1-dev (ACLのために必要)
ACLに対応させるには、Ubuntu側/Mac OS X側もLDAPに対応させなければならないので、非常に困難です。次の記事をご覧下さい。
記事を書いていませんが、Mac OS XでもLDAPを利用してログインできるようにしておく必要があります。かなり面倒です。私が参考にしたウェブサイトがどこだったか、調べられません…。ブックマークしてあったはずなのに。
これだけの設定をしているのですが、まだ不完全なようです。私の環境では、Mac OS XでACLを使えません。原因調査中です。
以上のツールは、今までnetatalkを使っていたなら、既にインストールされているかもしれませんが、確認しておいてください。
(追記 2012-05-14 22:00 iconv()関数が必要なのですが、Ubuntuは大丈夫との事です。)
3. Netatalk本体インストール
インストールは、次の手順となります。
- パッケージダウンロード&展開
- configure
- make
- sudo make install
順を追って説明します。
3.1 パッケージダウンロード&展開
パッケージは、次のページからダウンロードしてきます。
お好みに応じて、.bz2(ファイルサイズ小さい)、か.gz(一般的)を選んでください。私は、.bz2をダウンロードしてきました。
作業ディレクトリの作成〜パッケージの展開は、次の通りです。
$ cd $ mkdir work $ cd work $ mkdir netatalk $ cd netatalk $ tar xvjf netatalk-3.0alpha3.tar.bz2
3.2 configure
パッケージの展開が終わったら、configureします。configureとは、インストールされるOSの環境を調べて、makeに必要なファイルを自動生成する事です。
configureの際にオプションを与えて、インストール状態を変更する事もできます。
“–help"オプションで、使用できるオプションが表示されるので、確認してください。
$ configure --help
最初の場合、何を設定したら良いのかわからないと思います。make終了後、"afpd -V"で表示される内容を確認し、何度かconfigerとmakeをやり直す事になると思います。その場合、"make clean"で、make環境を奇麗にしておく事を忘れないでください。
私の場合、次のように設定しました。
$ cd ~/work/netatalk/netatalk-3.0alpha3/ $ ./configure --with-init-style=debian --prefix=/usr --localstatedir=/var --sysconfdir=/etc
configureの最後に、設定状況のまとめがあるので、確認してください。少なくても、必要なライブラリが定義されている事を確認しなければならないようです。
Using libraries: LIBS = -lpthread CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/sys -D_U_="__attribute__((unused))" -g -O2 SSL: LIBS = -lcrypto CFLAGS = -I/usr/include/openssl LIBGCRYPT: LIBS = -lgcrypt CFLAGS = PAM: LIBS = -lpam CFLAGS = WRAP: LIBS = -lwrap CFLAGS = BDB: LIBS = -ldb-4.8 CFLAGS = ZEROCONF: LIBS = -lavahi-common -lavahi-client CFLAGS = -D_REENTRANT LDAP: LIBS = -lldap CFLAGS = Configure summary: init style: debian AFP: Extended Attributes: ad | sys ACL support: yes CNID: backends: dbd last tdb UAMS: DHX (PAM SHADOW) DHX2 (PAM SHADOW) RANDNUM (afppasswd) clrtxt (PAM SHADOW) guest Options: Zeroconf support: yes tcp wrapper support: yes quota support: yes admin group support: yes valid shell check: yes cracklib support: no Samba sharemode interop: no ACL support: yes Kerberos support: yes LDAP support: yes
3.3 make
configureが正常終了したら、makeします。
$ cd ~/work/netatalk/netatalk-3.0alpha3/ $ make
makeが終わったら、出来上がった状態を次の方法でチェックします。
$ ./etc/afpd/afpd -V afpd 3.0alpha3 - 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: AFP versions: 2.2 3.0 3.1 3.2 3.3 CNID backends: dbd last tdb Zeroconf support: Avahi TCP wrappers support: Yes Quota support: Yes Admin group support: Yes Valid shell checks: Yes cracklib support: No EA support: ad | sys ACL support: Yes LDAP support: Yes afp.conf: /etc/afp.conf state directory: /var/netatalk/ afp_signature.conf: /var/netatalk/afp_signature.conf afp_voluuid.conf: /var/netatalk/afp_voluuid.conf UAM search path: /usr/lib/netatalk// Server messages path: /var/netatalk/msg/
特に、設定ファイルがどこに置かれているかを確認してください。
希望通りになっていなかったら、やり直します。
$ cd ~/work/netatalk/netatalk-3.0alpha3/ $ make clean $ configure ... $ make $ ./etc/afpd/afpd -V
3.4 sudo make install
希望通りにafpdができていたら、インストールします。
$ cd ~/work/netatalk/netatalk-3.0alpha3/ $ sudo make install
4. Netatalk設定
netatalk 3.xになって、設定ファイルが一つになりました。
私のconfigureの設定では、設定ファイルは"/etc/afp.conf”に置かれます。
HATさんのページから、ほぼそのままコピーして使っています。
;
; Netatalk 3.x configuration file
;
[Global]
vol preset = 全ボリュームのデフォルト
log level = default:note
log file = /var/log/netatalk.log
[全ボリュームのデフォルト]
file perm = 0600
directory perm = 0700
[Homes]
basedir regex = /home
[MY_TIMEMACHINE]
path = /afp/time_capsule
time machine = yes
vol size limit = 1024
[みんなの共有はここ]
path = /afp/shared
file perm = 0666
directory perm = 0777
TimeMachine用ボリューム名は変更しました。全角文字だと、使えないようでした。後述します。
5. 起動
設定が終わったら、起動します。
$ sudo service netatalk start Starting Netatalk services: netatalk.
6. 動作確認
Mac OS X 10.6.8 Snow Leopard、およびOS X 10.7.4 Lionで、動作確認しました。
- Finderから、サーバが見えるか? … OK
- フォルダを作れるか? … OK
- ファイルをコピーできるか? (Mac→Ubuntu、Ubuntu→Mac) … OK
- ファイルのパーミッションとタイムスタンプはどうか? … OK
- 拡張属性はついているか? … OK
- ファイル名の確認(日本語、禁止文字、長いファイル名) … OK
- TimeMachineのディスクに表示されるか? … OK
Avahi-daemonがきちんと動作していれば、Finderから見えるはずです。
サイドバーからUbuntuのホストが見えていれば正常です。ここを開いて、「別名で接続…」をします。
UbuntuのログインIDとパスワードを入力します。
接続したら、ボリュームが見えるようになります。
ボリューム名に全角文字が使えるなんて、何だか新鮮です!
ファイル名の確認をしました。
- Ubuntu側で":"の部分は、Mac側では"/"に置き換わっています。
- Mac側で"/"の部分は、Ubuntu側で":"に置き換わっています。
すばらしい!
最後に、TimeMachineのテストをする時に、TimeMachine用のボリューム名が全角文字だと使えない事がわかりました。
Finderでは全角文字表示されるのですが、「システム環境設定」の「TimeMachine環境設定」だと文字化けします。
Finderでは「私のタイムマシーン」として見えています。
ですが、「TimeMachine環境設定」だと、「???#1」と文字化けしています。
「バックアップディスクとして使用」は選べるのですが、実際にバックアップをしようとすると、次のエラーになります。
TimeMachineのボリューム名を、英数字のみにすると、正しく使えました。
バグでしょうか…。
これ以外は、正常動作しているように思えます。
ディスカッション
非常にややこしいのですが、iconv()の実装で確認すべきなのは、「UTF8」ではなくて「UTF-8」です。
あまりにもややこしくてうまく説明できません。
ちなみに、netatalkのドキュメントをよーく読むと、UTF8とUTF-8を使い分けてます。たぶん誰も気付いてないと思います。
http://netatalk.sourceforge.net/3.0/htmldocs/configuration.html
iconvの実装の問題については、OpenIndianaで発見したものであって、現在も調査中です。私のページの解説も不十分かもしれません。
申し訳ありませんが、iconvの確認の部分は削除していただけないでしょうか。
少なくとも、UbuntuのようなメジャーなLinuxディストリビューションではiconv()は確実に動くので、確認しなくてもいいです。
HATさんへ、いつもコメントありがとうございます。
「UTF8」と「UTF-8」が違う物だったのですか! 初めて知りました。
UTF-8 – Wikipedia
iconvの確認部分は削除しました。
iconv()関数の実装は沢山あります。
Ubuntu等が採用しているのは、glibc (GNU libc)のiconv()です。このiconv()はUTF8とUTF-8を同一に扱います。
他にlibiconv (GNU libiconv)の実装があって、これはUTF-8だけでありUTF8という文字コードはありません。
OpenIndianaに関しては調査中です。
netatalkの設定ファイルでUTF8を指定した場合、iconv()のUTF-8を呼び出し、ラッパーのような動作をしてMac特有のUTF8-MACが使えるようにしています。
したがって、iconv()はUTF-8に対応していなければならず、設定ファイルではUTF8と書く必要があります。
ややこしくて誰にも理解してもらえないと思いますが。
HATさんへ、再びコメントありがとうございます。
Ubuntuでiconv -lを再実行してみました。
$ iconv -l | egrep UTF
ISO-10646/UTF-8/
ISO-10646/UTF8/
UTF-7//
UTF-8//
UTF-16//
UTF-16BE//
UTF-16LE//
UTF-32//
UTF-32BE//
UTF-32LE//
UTF7//
UTF8//
UTF16//
UTF16BE//
UTF16LE//
UTF32//
UTF32BE//
UTF32LE//
確かに、UTF-8とUTF8の両方があります。
OS X Lionで実行すると、次のようになりました。
% iconv -l | egrep UTF
UTF-8 UTF8
UTF-8-MAC UTF8-MAC
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
なるほど、UTF8-MACと言うのがありますね。
文字コードの扱い、変態的ですね…。
Time Machineでnon-ASCIIボリューム名が使えない件については、これから調査します。
たぶんバグです。
ええと、とりあえず、[Global]セクションに
mac charset = MAC_JAPANESE
と書いておくとバグ回避できます。
本来、Time MachineはMAC_JAPANESEと関係ない筈なので、おかしな話です。
たぶん文字コードの扱いにバグがあります。
お願いがあります。
etc/afpd/afp_avahi.cに、以下のテスト用の1行パッチを当てて試してもらえないでしょうか。
http://www003.upp.so-net.ne.jp/hat/files/tm_volname.patch
たぶん直ると思います。
HATさんへ、再びコメントありがとうございます。
パッチをあてて、makeし直しました。
TimeMachine環境設定で文字化けせず、バックアップディスクとしても使えました。
余談ですが、昨日”netatalk-devel”に参加しました。とりあえず、様子を見てみようと思います。
ええと、しつこくてすいません。
mac charset = MAC_JAPANESE
を設定しなくても、文字化けしないですよね。
なお、alpha1とかalpha2には、とんでもないバグがあったのでnetatalk-develに色々ポストされてましたが、alpha3は目立ったバグがなくなり、かなり根の深いバグしか残ってません。
これらの進展がないと、あんまりポストされないでしょう。
HATさんへ、再びコメントありがとうございます。
はい、
mac charset = MAC_JAPANESE
を設定しなくても、文字化けしません。その辺りは、抜かり無く設定しました。
PowerMacの電源を落としちゃったので、今は、設定ファイルを載せられません。今日はもう寝ますので、明日、現在の設定ファイルをお知らせします。
今回、バグを発見できたので、netatalkの開発に寄与できた事になるのですね。良かったです。
committed.
http://netatalk.git.sourceforge.net/git/gitweb.cgi?p=netatalk/netatalk;a=commit;h=aec4478282cf83bbb05812c368e7c94019f3c91d
Thanks!
HATさんへ、再びコメントありがとうございます。
どういたしまして。
HATさんへ、再びコメントありがとうございます。
[Global]セクションに次の設定を追加しました。
mac charset = MAC_JAPANESE
確かに、TimeMachine環境設定の文字化けは無くなりました。
バックアップディスクとしても使えます。