ども。鉄王です。
Macを使ってる事務所のスタッフから
Jeditで作ったテキストファイルをサーバに上げるとアイコンが白くなるヨぶーぶーぶー
という申し入れがあったもので(要は「Sambaサーバにアップするとクリエータ情報・タイプ情報が消えちゃうよ、くそう」ということですな)、面倒くさくて放置していたnetatalkのインストールにかかっています。
が、知らなかったのですが、netatalkってBerkeleyDB必須なんですってね。しかも現行ヴァージョンだと、BerkeleyDBのヴァージョンまで指定されているという……(4.2.52推奨)
Oracleのサイトからソースをダウンロードしてインストールするものの、何度やっても成功せず orz
いや、BerkeleyDBはインストールされているのかもしれないが、netatalkの configure で現状行き詰まっている状況であります。
[2008.12.26追記]
Samba+netatalkの環境構築に関する詳しい情報を提供されているHATさんからご指摘があり加筆しました。
Mac OS Xからsambaにファイル保存した場合、タイプ/クリエータはAppleDouble Header Fileとして「._ 」で始まるファイル名で保存されるので、情報が消えるという事はありえません。Mac OS 9とXの双方から扱った場合はタイプ/クリエータの保存方法が食い違ってうまく運用出来ないということならありますが、元々Mac OS 9からsambaにはアクセス出来ない筈。
Ubuntu 8.04で用意されているnetatalk-2.0.3-9は比較的最近のCVSのパッチが当たっているので、それなりに安定動作する筈です。問題があるとすれば、Mac OS 9からアクセスしたときにファイル名に機種依存文字が使われていると保存出来ないくらいでしょう。
BerkeleyDBをソースから入れた場合は、netatalk 2.0.3のconfigureで
–with-bdb=/usr/local/BerkeleyDB.4.2
といったパスを設定すれば良い筈です。
netatalk 2.0.3でもっと新しいBDBを使いたい場合は、パッチがあります。
netatalk 2.0.4beta2や2.1devの場合は、最近のBerkeleyDB.4.7あたりでも、すんなりbuild出来ます。
何もパッチを当てていないnetatalk 2.0.3は色々とバグが残っているでの、おすすめ出来ません。
HATさん こんにちは!
……というか、HATさんのサイト、めちゃくちゃ参考にさせていただいてます! わざわざコメントいただきありがとうございます。
> タイプ/クリエータはAppleDouble Header Fileとして「._ 」で始まるファイル名で保存されるので、情報が消えるという事はありえません。
ご指摘ありがとうございます。改めてスタッフに確認したところ、該当するファイルというのは
Jeditで作成して、SimpleText形式で保存したテキストファイル
だったそうで、「おみゃーさん、そりゃーダブルクリックしてもJeditじゃ開いてくれませんて」とひっくり返った次第です。たしかに、該当するファイル以外のもの(Macで作成したもの)を仔細に見てみましたら、きちんと「Jedit書類」のアイコンになっていました。
……ということで、結局netatalk導入は見送りになりそうです。
ちなみに、HATさんが提供されているパッチを適用した上でnetatalk-2.0.3をconfigureした結果は
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/include/db4.2… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/include/db42… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/include/db4.1… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/include/db41… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/include/db4… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/include/… yes
checking /usr/local/BerkeleyDB.4.4/include//db.h version >= 4.1.0… 4.4.20, yes
checking for Berkeley DB link (-ldb-4.2)… no
checking for Berkeley DB link (-ldb42)… no
checking for Berkeley DB link (-ldb-42)… no
checking for Berkeley DB link (-ldb-4-2)… no
checking for Berkeley DB link (-ldb-4.1)… no
checking for Berkeley DB link (-ldb41)… no
checking for Berkeley DB link (-ldb-41)… no
checking for Berkeley DB link (-ldb-4-1)… no
checking for Berkeley DB link (-ldb-4)… yes
checking Berkeley DB library version >= 4.1.0… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/db4.2… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/db42… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/db4.1… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/db41… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/db4… no
checking for Berkeley DB headers in /usr/local/BerkeleyDB.4.4/… no
Make sure you have the required Berkeley DB libraries AND headers installed.
You can download the latest version from http://www.sleepycat.com.
If you have installed BDB in a non standard location use the
–with-bdb=/path/to/bdb configure option and make sure
your linker is configured to check for libraries there.
configure: error: Berkeley DB library required but not found!
といったエラーが出て終了、でした。
–with-bdb オプションもつけたのですが、そもそもBerkeleyDB(私の環境では4.4.20)がきちんとインストールされてないのでしょうかね……
Ubuntu 8.04に入っているBerkeleyDBのバージョンは4.6じゃないですか?
HATさん
たびたびのフォローありがとうございます。
8.04に入ってました……BDB4.6。あれこれ苦労する必要なかったですね(汗)
apt-get で libdb4.6-dev をインストールして再度 configure しましたら、すんなりするするとインストールできてしまいました<netatalk-2.0.3
ちなみに configure 時のオプションには
–with-shadow (デフォルト auto だったので指定しなくてもよかったかな)
–with-ssl-dir
–enable-debian
で、くだんの –with-bdb は必要でなかったというオチでした。
起動スクリプトは /etc/init.d/atalk 、設定ファイルは /usr/local/etc/netatalk/netatalk.conf となりました。ご報告まで。
ここまで確認して、肝心の設定をやってないのですが
特にパッチのないnetatalkをconfigureから入れるぐらいなら、sourceのdebパッケージから入れた方がいいんじゃないかと思いますが。
> パッチのないnetatalk
あ、これはちょっと説明不足でした。
ソースにはHATさんのサイトから頂戴した netatalk-2.0.3-cjk-6.patch.gz と netatalk-2.0.3-newer-db.patch.gz を展開→ patch して configure しました。
この場を借りて、改めて感謝いたします。ありがとうございました。