netatalk 2.2.3をdebian化してUbuntu 10.04にdpkgでインストール
先日、netatalk 2.2.3がリリースされたので、早速インストールしました。
Ubuntu用としてリリースされているDebianパッケージは、Ubuntu 12.10 Quantal Quetzal用のnetatalk 2.2.2までしか対応していません。
リリースされたばかりの、最新の2.2.3用のdpkgはありません。
dpkgでインストールした方が、管理が楽なんですよ。
なんとか、自分でできないかと試していたら、debパッケージを作る事ができちゃいました。
以下の方法は、私が試行錯誤して実現した方法で、正しい方法では無いかもしれません。また、できたパッケージを配布する事はできないと思います。
それでは、インストールの方法を説明します。
- 古いnetatalkの削除
- ビルドを実行するためのパッケージをインストール
- netatalkソースのダウンロードと展開
- 2.2.2のdebianパッケージのダウンロードと展開
- パッケージ化
- 依存パッケージのインストール
- ソースパッケージの修正
- ビルド
- インストール
- 設定変更
- 起動
- 確認
それでは説明していきます。説明のために、プロンプトでディレクトリの場所を明示する事にします。ディレクトリの指定が無い場合は、任意です。
- [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~)」を満たせません。
方法は二つあります。
- Ubuntu非公式のPPAを使って、cdbsをインストールする
- 依存関係を無視して、そのまま実行
後者を選択した場合、([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でも対応できるかもしれません! と言うか、少し手を加えるだけで対応できました。また後で発表したいと思います。
【参考にした記事】
- Netatalk 3.0 and Samba … HATさんのwebページ
- Howto build a trivial Debian package with dh_make « I Might Be Wrong … dh_makeについて一番最初に見つかった
- Chapter 4. Required files under the debian directory … debianディレクトリの説明
- Debian Source Packaging Recipe … 基本的な手順がまとめられています
ありがとうございます。& Thank you very much.
ディスカッション
「debian化」って意味のわからない言葉ですね。
「debパッケージ化」じゃないでしょうか。
HATさんへ、いつもコメントありがとうございます。
英語のページで、”Debianize”と言う表現があったので、真似してみました。
わかりにくいですかね…。
本文を読むまで理解できませんでした。
HATさんへ、再びコメントありがとうございます。
実は、目を引いて、本文を読ませるのが狙いだったりします。
電車の中で、必死にタイトルを考えていました。