netatalk 2.2.3をdebian化してUbuntu 10.04にdpkgでインストール

2012年5月25日netatalk

先日、netatalk 2.2.3がリリースされたので、早速インストールしました。

Ubuntu用としてリリースされているDebianパッケージは、Ubuntu 12.10 Quantal Quetzal用のnetatalk 2.2.2までしか対応していません。

リリースされたばかりの、最新の2.2.3用のdpkgはありません。

dpkgでインストールした方が、管理が楽なんですよ。

なんとか、自分でできないかと試していたら、debパッケージを作る事ができちゃいました。

以下の方法は、私が試行錯誤して実現した方法で、正しい方法では無いかもしれません。また、できたパッケージを配布する事はできないと思います。

それでは、インストールの方法を説明します。

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

それでは説明していきます。説明のために、プロンプトでディレクトリの場所を明示する事にします。ディレクトリの指定が無い場合は、任意です。

  • [work dir]$ … 作業用ディレクトリ。例えば、~/work/netatalk/netatalk_2.2.3-dpkg
  • [pkg dir]$ … ソースパッケージディレクトリ。今回は、~/work/netatalk/netatalk_2.2.3-dpkg/netatalk-2.2.3

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

  • サーバ
    • PowerMac G4/MDD
    • Ubuntu 10.04 (EA, ACL, LDAP設定済み)
  • クライアント
    • Macbook Pro (early 2011)
    • OS X 10.7.4 Lion

1. 古いnetatalkの削除

netatalkをインストールする前に、古いバージョンのnetatalkを削除しておく事が必要です。

まず、古いパッケージを消します。

前のnetatalkをどうやってインストールしていたかによって違います。

Ubuntu標準のnetatalkでインストールした場合は、Synapticパッケージ・マネージャや、apt-getでアンインストールしてください。

次の様な手順で、自分でdpkgを作った場合は、dpkgでアンインストールしてください。

必要に応じて、設定ファイルはバックアップしておいてください。

netatalk 2.xの場合

  • /etc/init.d/netatalk
  • /etc/default/netatalk
  • /etc/netatalk/afpd.conf
  • /etc/netatalk/AppleVolumes.default

netatalk 3.xの場合

  • /etc/afp.conf

2. ビルドを実行するためのパッケージをインストール

ソースからビルドするためには、次のパッケージが必要です。

  • dpkg-dev
  • fakeroot

インストールします。

$ sudo apt-get install dpkg-dev fakeroot

もしかすると、build-essentialと言うパッケージも必要かも知れません。もし、エラーが出る様でしたら、インストールしてください。

$ sudo apt-get install build-essential

それと、debianパッケージ作成のためのパッケージもインストールします。

$ sudo apt-get install dh-make

3. netatalkソースのダウンロードと展開

次のところから、ダウンロードしてきます。

[work dir]$ wget http://sourceforge.net/projects/netatalk/files/netatalk/2.2.3/netatalk-2.2.3.tar.bz2
[work dir]$ tar xvjf netatalk-2.2.3.tar.bz2

4. 2.2.2のdebianパッケージのダウンロードと展開

次のところからダウンロードしてきます。

2.2.2-1の三角印をクリックして、netatalk_2.2.2-1.debian.tar.gzをダウンロードしてください。

[work dir]$ wget https://launchpad.net/ubuntu/+archive/primary/+files/netatalk_2.2.2-1.debian.tar.gz
[work dir]$ tar xvzf netatalk_2.2.2-1.debian.tar.gz

5. パッケージ化

この行程が肝です。

dh_makeで、debianパッケージ化に必要な基本ファイルを作成します。そして、2.2.2-1の設定ファイルで上書きします。

[work dir]$ cd netatalk-2.2.3
[pkg dir]$ dh_make --createorig --single
ldap_sasl_interactive_bind_s: Local error (-2)
	additional info: SASL(0): successful result:
Maintainer name : Foo Bar
Email-Address   : Foo@unknown
Date            : Thu, 24 May 2012 22:28:23 +0900
Package Name    : netatalk
Version         : 2.2.3
License         : blank
Using dpatch    : no
Using quilt     : no
Type of Package : Single
Hit  to confirm: (Returnキーを押す)
Done. Please edit the files in the debian/ subdirectory now. netatalk
uses a configure script, so you probably don't have to edit the Makefiles.
[pkg dir]$ cp -p ../debian/rules debian/rules
[pkg dir]$ cp -p ../debian/control debian/control
[pkg dir]$ cp -rp ../debian/examples debian/

dh_makeを実行する時に、"–createorig"オプションを付けたので、[work dir]に追加ディレクトリができています。

[work dir]$ ls
debian                  netatalk-2.2.3                  netatalk-2.2.3.orig
netatalk-2.2.3.tar.bz2  netatalk_2.2.2-1.debian.tar.gz

6. 依存パッケージのインストール

debian/controlに指定されているパッケージをインストールします。

必要なパッケージは、[pkg dir]/debian/controlの、”Build-Depends”と言う項目に書かれています。ここに書かれているパッケージを、Synapticパッケージ・マネージャや、apt-getなどでインストールしてください。

7. ソースパッケージの修正

Ubuntu 10.04の場合、通常の方法では、要求されている「cdbs (>= 0.4.72~)」を満たせません。

方法は二つあります。

後者を選択した場合、([pkg dir]/debina/controlではなく)[pkg dir]/debian/rulesを修正する必要があります。次の行を見つけて、先頭に"#"を追加してください(コメントアウトします)。

#include /usr/share/cdbs/1/rules/upstream-tarball.mk

また、パッケージの依存関係は、ビルドする時に無視させます。

この記事では、後者を選択しています。

8. ビルド

いよいよ、ビルドに移ります。

[pkg dir]$ dpkg-buildpackage -us -uc -rfakeroot -d

これで、ビルドが始まります。時間がかかるので、しばらくお待ち下さい。

“-us -uc”オプションは、署名しないオプションです。そのため、出来上がったdebファイルは、Ubuntuパッケージとしてアップロードすることは禁止となります。

“-d”オプションは、依存関係を無視するオプションです。

ビルドが終わったら、バイナリを確認しておきます。

[pkg dir]$ ./debian/netatalk/usr/sbin/afpd -V
afpd 2.2.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:

          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:	Avahi
  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

また、[work dir]に、一連のパッケージファイルができています。

[work dir]$ ls
debian                  netatalk_2.2.2-1.debian.tar.gz  netatalk_2.2.3-1_powerpc.changes
netatalk-2.2.3          netatalk_2.2.3-1.diff.gz
netatalk_2.2.3-1_powerpc.deb
netatalk-2.2.3.tar.bz2  netatalk_2.2.3-1.dsc
netatalk_2.2.3.orig.tar.gz

9. インストール

.debファイルができているはずなので、これを使ってインストールします。

[work dir]$ dpkg -i netatalk_2.2.3-1_powerpc.deb

10. 設定変更

設定の変更が必要なのは、次のファイルです。

  • /etc/default/netatalk
  • /etc/netatalk/afpd.conf
  • /etc/netatalk/AppleVolumes.default

HATさんのウェブサイトに非常に詳しく書かれていますので、そこを読めばわかると思います。

いつも、ありがとうございます。

/etc/default/netatalk

ATALK_UNIX_CHARSET='UTF8'
ATALK_MAC_CHARSET='MAC_JAPANESE'
AFPD_UAMLIST="-U uams_dhx2.so"
CNID_CONFIG="-l LOG_NOTE -f /var/log/netatalk.log"

/etc/netatalk/afpd.conf

- -maccodepage MAC_JAPANESE -setuplog "default LOG_NOTE /var/log/netatalk.log"

/etc/netatalk/AppleVolumes.default

:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys

TimeMachineを使いたいなら、次の行を追加してください。

/home/u_capsule "Ubuntu Capsule" options:tm volsizelimit:1024

11. 起動

サービスを起動します。

$ sudo service netatalk start
Starting Netatalk services (this will take a while):  cnid_metad afpd.

12. 確認

OS X 10.7.4 Lionで、動作確認しました。

  • Finderから、サーバが見えるか? … OK
  • フォルダを作れるか? … OK
  • ファイルをコピーできるか? (Mac→Ubuntu、Ubuntu→Mac) … OK
  • ファイルのパーミッションとタイムスタンプはどうか? … OK
  • 拡張属性はついているか? … OK
  • ファイル名の確認(日本語、禁止文字、長いファイル名) … OK
  • TimeMachineのディスクに表示されるか? … OK

全項目、OKでした。

debianパッケージの作り方、これで良かったのでしょうか? とりあえず、インストールできたみたいなのですけれど。

同じ方法を使えば、netatalk 3.0beta1でも対応できるかもしれません! と言うか、少し手を加えるだけで対応できました。また後で発表したいと思います。

【参考にした記事】

ありがとうございます。& Thank you very much.

Posted by お市のかた