Ubuntu 10.04にnetatalk 2.2.2をdpkgでインストール

2012年5月25日netatalk

ブログの移転作業はまだ途中ですが、少し余裕ができましたので、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でも使用できます。

手順としては、以前書いた内容と同じですが、再掲します。

次の手順となります。

  1. ビルドを実行するためのパッケージをインストール
  2. ソースパッケージのダウンロード
  3. ソースパッケージの展開
  4. 依存パッケージのインストール
  5. ソースパッケージの修正
  6. ビルド
  7. インストール
  8. 設定変更
  9. 起動
  10. 確認

それでは、順を追って説明していきます。

なお、テスト環境は次の通りです。

  • サーバ
    • 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とは別に、このブログの問題を発見してしまいました。開けないページがあります。

最後は、すっきりしていませんが、とりあえずここで区切りをつけます。

Posted by お市のかた