Ubuntu 10.04にnetatalk 2.2.2をdpkgでインストール
ブログの移転作業はまだ途中ですが、少し余裕ができましたので、netatalkに戻ってきました。
ブログ移転に伴い、HATさんのブログ内のリンクを書き換えていただいたようです。ありがとうございます。
最新のnetatalkは3.0alpha3で、安定板は2.2.2となります。
2.2beta4で報告したバグがどうなったかを確認したかったので、インストールしてみました。
2.2beta4のdpkgソースでは、ACLとLDAPに必要なライブラリが、設定ファイルに記述されていないと言う問題がありました。
その問題が認識され、2.2.2のdpkgソースで修正されていました。
以下は、debian/controlの抜粋です。
Source: netatalk Source: netatalk Section: net Section: net Priority: extra Priority: extra Maintainer: Jonas Smedegaard Maintainer: Jonas Smedegaard Build-Depends: cdbs (>= 0.4.70~), | Build-Depends: autotools-dev, autotools-dev, | cdbs (>= 0.4.72~), devscripts (>= 2.10.7~), | devscripts, debhelper (>= 6), | debhelper, dh-buildinfo, dh-buildinfo, libdb-dev, libdb-dev, libwrap0-dev, libwrap0-dev, libpam0g-dev, libpam0g-dev, libcups2-dev, libcups2-dev, libkrb5-dev, libkrb5-dev, libltdl3-dev, libltdl3-dev, libgcrypt11-dev, libgcrypt11-dev, libcrack2-dev, libcrack2-dev, libavahi-client-dev, libavahi-client-dev, > libldap2-dev, > libacl1-dev, d-shlibs, d-shlibs, hardening-includes hardening-includes
やったー! debian/netatalkの開発に貢献できました。
netatalk 2.2.2のdpkgは、Ubuntu 12.10 Quantal Quetzal用ですが、わずかな修正で、Ubuntu 10.04 Lucid Lynxでも使用できます。
手順としては、以前書いた内容と同じですが、再掲します。
次の手順となります。
- ビルドを実行するためのパッケージをインストール
- ソースパッケージのダウンロード
- ソースパッケージの展開
- 依存パッケージのインストール
- ソースパッケージの修正
- ビルド
- インストール
- 設定変更
- 起動
- 確認
それでは、順を追って説明していきます。
なお、テスト環境は次の通りです。
- サーバ
- 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
1. ビルドを実行するためのパッケージをインストール
ソースからビルドするためには、次のパッケージが必要です。
- dpkg-dev
- fakeroot
インストールします。
$ sudo apt-get install dpkg-dev fakeroot
もしかすると、build-essentialと言うパッケージも必要かも知れません。もし、エラーが出る様でしたら、インストールしてください。
$ sudo apt-get install build-essential
2. ソースパッケージのダウンロード
netatalkのdebianパッケージは、次のところからダウンロードできます。
必要なのは、次の三つのファイルです。上記ページの「2.2.2-1」の左の三角をクリックすると、リンクが現れます。
- netatalk_2.2.2-1.debian.tar.gz (41.7 KiB)
- netatalk_2.2.2-1.dsc (2.1 KiB)
- netatalk_2.2.2.orig.tar.gz (1.6 MiB)
3. ソースパッケージの展開
作業ディレクトリ内で、ダウンロードしてきたパッケージを展開します。
$ cd $ mkdir work $ cd work $ mkdir netatalk $ cd netatalk $ mkdir netatalk_2.2.2-dpkg $ cd netatalk_2.2.2-dpkg $ mv ~/Downloads/netatalk_2.2.2* . $ dpkg-source -x netatalk_2.2.2-1.dsc gpgv: 2012年03月21日 07時57分37秒 JSTにRSA鍵ID C1A00121で施された署名 gpgv: 署名を検査できません: 公開鍵が見つかりません dpkg-source: warning: failed to verify signature on ./netatalk_2.2.2-1.dsc dpkg-source: info: extracting netatalk in netatalk-2.2.2 dpkg-source: info: unpacking netatalk_2.2.2.orig.tar.gz dpkg-source: info: unpacking netatalk_2.2.2-1.debian.tar.gz dpkg-source: info: applying 101_start_avahi-daemon_before_atalkd.patch dpkg-source: info: applying 114_fix_macusers_ps_parsing.patch dpkg-source: info: applying 201_etc2ps_paths.diff dpkg-source: info: applying 202_psf_8_paths.diff dpkg-source: info: applying 205_applevolumes_default_homedir.diff
4. 依存パッケージのインストール
必要なパッケージは、netatalk-2.2.2/debian/controlの、"Build-Depends"と言う項目に書かれています。ここに書かれているパッケージを、Synapticパッケージ・マネージャや、apt-getなどでインストールしてください。
cdbsのバージョンが、0.4.72以降となっていますが、ここでは無視します。そのための方法は、「5. ソースパッケージの修正」に書きます。
ただ、どうしてもUbuntu 10.04 Lucid Lynxに最新バージョンを入れたい場合、次のウェブサイトに書かれている方法でできると思います。その場合、ソースパッケージの修正は必要ないはずです(私は試していません)。
ただ、Ubuntu公式版ではありませんので、注意が必要です。
5. ソースパッケージの修正
Ubuntu 10.04 Lucid Lynxで使用するため、cdbsのバージョンを無視しています。そのままでは、makeでエラーになります。これを避けるために、"~/work/netatalk/netatalk_2.2.2-dpkg/netatalk-2.2.2/debian/rules"を修正します。
#include /usr/share/cdbs/1/rules/upstream-tarball.mk
多分、個人使用が目的だったら、大丈夫だと思います。
6. ビルド
いよいよ、ビルドに移ります。
$ cd ~/work/netatalk/netatalk_2.2.2-dpkg/netatalk-2.2.2/ $ dpkg-buildpackage -us -uc -rfakeroot -d
これで、ビルドが始まります。時間がかかるので、しばらくお待ち下さい。
“-us -uc”オプションは、署名しないオプションです。そのため、出来上がったdebファイルは、Ubuntuパッケージとしてアップロードすることは禁止となります。
署名付きのパッケージにするには、”-us -uc”オプションの代わりに”-S”オプションを使います。
“-d”オプションは、依存関係を無視するオプションです。
7. インストール
ビルドしていた一つ上のディレクトリに、.debファイル(バイナリパッケージ)ができます。これを使って、インストールします。
$ cd ~/work/netatak/netatalk_2.2.2-dpkg/ $ ls netatalk-2.2.2 netatalk_2.2.2-1.dsc netatalk_2.2.2-1_powerpc.deb netatalk_2.2.2-1.debian.tar.gz netatalk_2.2.2-1_powerpc.changes netatalk_2.2.2.orig.tar.gz $ dpkg -i netatalk_2.2.2-1_powerpc.deb
8. 設定変更
設定の変更が必要なのは、次のファイルです。
- /etc/default/netatalk
- /etc/netatalk/afpd.conf
- /etc/netatalk/AppleVolumes.default
HATさんのウェブサイトに非常に詳しく書かれていますので、そこを読めばわかると思います。
いつも、ありがとうございます。
修正前と修正後の差分を載せます。
/etc/default/netatalk
$ diff /etc/default/.netatalk_2.2.2.dpkg.org /etc/default/netatalk 11,12c11,12 < ATALK_UNIX_CHARSET='LOCALE' < ATALK_MAC_CHARSET='MAC_ROMAN' --- > ATALK_UNIX_CHARSET='UTF8' > ATALK_MAC_CHARSET='MAC_JAPANESE' 33c33 < #AFPD_UAMLIST="-U uams_dhx2.so,uams_clrtxt.so" --- > AFPD_UAMLIST="-U uams_dhx2.so" 39c39 < #CNID_CONFIG="-l log_note" --- > CNID_CONFIG="-l LOG_NOTE -f /var/log/netatalk.log"
/etc/netatalk/afpd.conf
$ diff /etc/netatalk/afpd.conf.org /etc/netatalk/afpd.conf
362c362
< # - -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword
---
> - -maccodepage MAC_JAPANESE -setuplog "default LOG_NOTE /var/log/netatalk.log"
/etc/netatalk/AppleVolumes.default
$ diff /etc/netatalk/AppleVolumes.default.org /etc/netatalk/AppleVolumes.default 174c174 < :DEFAULT: options:upriv,usedots --- > :DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys 177a178 > /home/u_capsule "Ubuntu Capsule" options:tm volsizelimit:1024
9. 起動
まず、afpdのconfigurationがどうなっているか、確認します。
$ /usr/sbin/afpd -V afpd 2.2.2 - 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: 1.1 2.0 2.1 2.2 3.0 3.1 3.2 3.3 DDP(AppleTalk) Support: Yes CNID backends: dbd last tdb SLP support: No Zeroconf support: Yes TCP wrappers support: Yes Quota support: Yes Admin group support: Yes Valid shell checks: Yes cracklib support: Yes Dropbox kludge: No Force volume uid/gid: No EA support: ad | sys ACL support: Yes LDAP support: Yes afpd.conf: /etc/netatalk/afpd.conf AppleVolumes.system: /etc/netatalk/AppleVolumes.system AppleVolumes.default: /etc/netatalk/AppleVolumes.default afp_signature.conf: /etc/netatalk/afp_signature.conf afp_voluuid.conf: /etc/netatalk/afp_voluuid.conf afp_ldap.conf: /etc/netatalk/afp_ldap.conf UAM search path: /usr/lib/netatalk/ Server messages path: /etc/netatalk/msg/ lockfile: /var/run/afpd.pid
ほう! AFPのサポートバージョンが列挙されるようになっているのですね。親切かつ明確です。
サービスを起動します。
$ sudo service netatalk start Starting Netatalk services (this will take a while): cnid_metad afpd.
10. 確認
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
全項目確認して、大丈夫でした。
ただ、気になったのは、Ubuntu側で":"入りのファイル名(例えば"aaa:bbb.txt")だと、Mac側で違うファイル名になり(これは想定内)、次のエラーが出てファイル名の変更ができません。
前も、そうだったかな?
なお、/var/log/netatalk.logには、次のエラーが出ています。
May 12 21:04:39.499285 afpd[19990] {acls.c:559} (E:Default): acl = acl_get_file(path, ACL_TYPE_ACCESS) failed: No such file or directory May 12 21:04:39.499399 afpd[19990] {acls.c:1745} (E:Default): posix_acls_to_uaperms(path, st, ma) failed: No such file or directory
Mac側で、ACLの設定が正しくできていない事が原因のような気がします。
ACLの設定ができていない事は、私が解決しなければならない課題です。
なお、過去のnetatlkに関する私の記事を、netatalkカテゴリーにまとめました。興味のある方はご覧ください。
netatalkとは別に、このブログの問題を発見してしまいました。開けないページがあります。
最後は、すっきりしていませんが、とりあえずここで区切りをつけます。
ディスカッション
ファイル名における”:”はCAP(HEX)エンコーディング用に予約されています。
aaa:bbb.txtの場合”:bb”の部分が16進数の0xBBと解釈されて不整合がおきています。
http://ja.wikipedia.org/wiki/Columbia_AppleTalk_Package
なお、netatalk 3.0では仕様が変更になり、server側での”:”は、Mac側のFinderでは”/”、Terminal.appでは”:”に見えます。
ACLの方はよくわかりません。フィアルシステムでACLは有効になってるでしょうか。
HATさんへ、いつもコメントありがとうございます。
そうですよね、”:bb”だと、そうなりますよね…。
netatalk 3.0alpha3のインストールも終了しており、現在記事を書きつつ、動作チェックをしています。
ファイル名については、”:”と”/”は、ご指摘の通りの扱いとなっていました。Mac OS X内のTerminalで見た時と同じ動作ですね。
ファイルシステムでは、ACLは有効になっています。これは、もう少し調べてみたいと思います。