netatalk のビルド

MacOS X 10.5 Leopard はクリアテキストパスワードは駄目なので、Debian で最初から用意されている netatalk だと駄目! その辺りは README.Debian に書いてある。というわけで、OpenSSL をサポートした状態でビルドしてインストールをする。
まずは libssl-dev のインストール。

paraches@debian:~/myTest$ sudo apt-get install libssl-dev
Password:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
以下の特別パッケージがインストールされます:
  libc6-dev linux-kernel-headers zlib1g-dev
提案パッケージ:
  glibc-doc manpages-dev
推奨パッケージ:
  gcc c-compiler
以下のパッケージが新たにインストールされます:
  libc6-dev libssl-dev linux-kernel-headers zlib1g-dev
アップグレード: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。
7085kB のアーカイブを取得する必要があります。
展開後に追加で 28.3MB のディスク容量が消費されます。
続行しますか [Y/n]? 
<長いので省略>
linux-kernel-headers (2.6.18-7) を設定しています ...
libc6-dev (2.3.6.ds1-13etch2) を設定しています ...
zlib1g-dev (1.2.3-13) を設定しています ...
libssl-dev (0.9.8c-4etch1) を設定しています ...
paraches@debian:~/myTest$ 

で、次に netatalk のソースを落としてくる。

paraches@debian:~/myTest$ apt-get source netatalk
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
1947kB のソースアーカイブを取得する必要があります。
取得:1 http://cdn.debian.or.jp etch/main netatalk 2.0.3-4 (dsc) [802B]
取得:2 http://cdn.debian.or.jp etch/main netatalk 2.0.3-4 (tar) [1921kB]
取得:3 http://cdn.debian.or.jp etch/main netatalk 2.0.3-4 (diff) [26.1kB]
1947kB を 1s で取得しました (1614kB/s)
gpg: failed to create temporary file `/home/paraches/.gnupg/.#lk0x81168e8.debian.22632': 許可がありません
gpg: keyblock resource `/home/paraches/.gnupg/pubring.gpg': general error
gpg: Signature made 2006年01月14日 17時30分38秒 JST using DSA key ID 496A1827
gpg: Can't check signature: public key not found
dpkg-source: extracting netatalk in netatalk-2.0.3
dpkg-source: unpacking netatalk_2.0.3.orig.tar.gz
dpkg-source: applying ./netatalk_2.0.3-4.diff.gz
paraches@debian:~/myTest$ ls
netatalk-2.0.3            netatalk_2.0.3-4.dsc
netatalk_2.0.3-4.diff.gz  netatalk_2.0.3.orig.tar.gz
paraches@debian:~/myTest$ 

何か言われてるけど、ま、いっか…。(何やら gpg --keyserver 云々でどうにかするみたい)
次に cracklib2 をインストール。

paraches@debian:~/myTest/netatalk-2.0.3$ sudo apt-get install cracklib2
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
推奨パッケージ:
  cracklib-runtime
以下のパッケージが新たにインストールされます:
  cracklib2
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
28.0kB のアーカイブを取得する必要があります。
展開後に追加で 90.1kB のディスク容量が消費されます。
取得:1 http://cdn.debian.or.jp etch/main cracklib2 2.7-19 [28.0kB]
28.0kB を 0s で取得しました (74.0kB/s)
未選択パッケージ cracklib2 を選択しています。
(データベースを読み込んでいます ... 現在 89998 個のファイルとディレクトリがインストールされています。)
(.../cracklib2_2.7-19_i386.deb から) cracklib2 を展開しています...
cracklib2 (2.7-19) を設定しています ...

paraches@debian:~/myTest/netatalk-2.0.3$ sudo apt-get install cracklib2-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了        
推奨パッケージ:
  cracklib-runtime
以下のパッケージが新たにインストールされます:
  cracklib2-dev
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
30.6kB のアーカイブを取得する必要があります。
展開後に追加で 94.2kB のディスク容量が消費されます。
取得:1 http://cdn.debian.or.jp etch/main cracklib2-dev 2.7-19 [30.6kB]
30.6kB を 0s で取得しました (108kB/s)
未選択パッケージ cracklib2-dev を選択しています。
(データベースを読み込んでいます ... 現在 90008 個のファイルとディレクトリがインストールされています。)
(.../cracklib2-dev_2.7-19_i386.deb から) cracklib2-dev を展開しています...
cracklib2-dev (2.7-19) を設定しています ...
paraches@debian:~/myTest/netatalk-2.0.3$ 

で、ビルドを始めるけど、その前に OpenSSL をサポートする様に設定。

paraches@akarasiel:~/myTest/netatalk-2.0.3/debian$ DEB_BUILD_OPTIONS="ssl debuild"
paraches@akarasiel:~/myTest/netatalk-2.0.3/debian$ export DEB_BUILD_OPTIONS

これで OpenSSL をサポートする様になったのでビルドを開始。途中、ちゃんと --with-ssl-dir となっているのも確認。

paraches@debian:~/myTest/netatalk-2.0.3$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: source package is netatalk
dpkg-buildpackage: source version is 2.0.3-4
dpkg-buildpackage: source changed by Sebastian Rittau <srittau@debian.org>
dpkg-buildpackage: host architecture i386
<長いので省略>
touch debian/stamp-autotools-files
chmod a+x /home/paraches/myTest/netatalk-2.0.3/./configure
cd . && CC="cc" CXX="g++" CFLAGS="-g -Wall -O2" CXXFLAGS="-g -Wall -O2" CPPFLAGS="" LDFLAGS="" /home/paraches/myTest/netatalk-2.0.3/./configure --build=i486-linux-gnu --prefix=/usr --includedir="\${prefix}/include" --mandir="\${prefix}/share/man" --infodir="\${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var --libexecdir="\${prefix}/lib/netatalk" --disable-maintainer-mode --disable-dependency-tracking --srcdir=.  --with-shadow --enable-fhs --with-tcp-wrappers --with-mangling --enable-timelord --enable-overwrite --with-pkgconfdir=/etc/netatalk --with-nls-dir=/usr/share/netatalk/nls --disable-logger --enable-srvloc --enable-pgp-uam --enable-krb4-uam --enable-krbV-uam --with-ssl-dir --with-cracklib=/var/cache/cracklib/cracklib_dict 
<長いので省略>
dpkg-deb: `../netatalk_2.0.3-4_i386.deb' にパッケージ `netatalk' を構築しています。
 signfile netatalk_2.0.3-4.dsc
gpg: failed to create temporary file `/home/paraches/.gnupg/.#lk0x81168e8.debian.25120': 許可がありません
gpg: keyblock resource `/home/paraches/.gnupg/secring.gpg': general error
gpg: failed to create temporary file `/home/paraches/.gnupg/.#lk0x8122868.debian.25120': 許可がありません
gpg: keyblock resource `/home/paraches/.gnupg/pubring.gpg': general error
gpg: skipped "Sebastian Rittau <srittau@debian.org>": secret key not available
gpg: [stdin]: clearsign failed: secret key not available

 dpkg-genchanges
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
(WARNING: Failed to sign .dsc and .changes file)
paraches@debian:~/myTest/netatalk-2.0.3$ cd ..
paraches@debian:~/myTest$ ls -al
合計 2732
drwxr-xr-x  3 paraches paraches    4096 2007-12-26 09:44 .
drwxr-xr-x 18 paraches paraches    4096 2007-12-26 09:22 ..
drwxr-xr-x 14 paraches paraches    4096 2007-12-26 09:41 netatalk-2.0.3
-rw-r--r--  1 paraches paraches   76181 2007-12-26 09:41 netatalk_2.0.3-4.diff.gz
-rw-r--r--  1 paraches paraches     565 2007-12-26 09:41 netatalk_2.0.3-4.dsc
-rw-r--r--  1 paraches paraches     899 2007-12-26 09:44 netatalk_2.0.3-4_i386.changes
-rw-r--r--  1 paraches paraches  763296 2007-12-26 09:44 netatalk_2.0.3-4_i386.deb
-rw-r--r--  1 paraches paraches 1920570 2005-06-26 13:32 netatalk_2.0.3.orig.tar.gz

ビルド終了。
確認をしてみる。

paraches@debian:~/myTest$ ls /usr/lib/netatalk/
etc2ps.sh   ofwmpap     tfwpaprev           uams_gss.so    uams_passwd.la
ifmpap      ofwpap      uams_clrtxt.so      uams_guest.a   uams_passwd.so
ifmpaprev   psa         uams_dhx.so         uams_guest.la  uams_pgp.a
ifpap       psf         uams_dhx_pam.a      uams_guest.so  uams_pgp.la
ifpaprev    tfmpap      uams_dhx_pam.la     uams_krb4.a    uams_pgp.so
ifwmpap     tfmpaprev   uams_dhx_pam.so     uams_krb4.la   uams_randnum.a
ifwmpaprev  tfpap       uams_dhx_passwd.a   uams_krb4.so   uams_randnum.la
ifwpap      tfpaprev    uams_dhx_passwd.la  uams_pam.a     uams_randnum.so
ifwpaprev   tfwmpap     uams_dhx_passwd.so  uams_pam.la
ofmpap      tfwmpaprev  uams_gss.a          uams_pam.so
ofpap       tfwpap      uams_gss.la         uams_passwd.a

ちゃんと uams_dhx があるから OK!
次に今入っている netatalk を削除。

paraches@debian:~/myTest$ sudo dpkg -r netatalk
(データベースを読み込んでいます ... 現在 90022 個のファイルとディレクトリがインストールされています。)
netatalk を削除しています ...
Stopping AppleTalk Daemons: afpd papd timelord atalkd cnid_metad.

で、今ビルドした netatalk をインストール

paraches@debian:~/myTest$ sudo dpkg -i netatalk_2.0.3-4_i386.deb 
未選択パッケージ netatalk を選択しています。
(データベースを読み込んでいます ... 現在 89884 個のファイルとディレクトリがインストールされています。)
(netatalk_2.0.3-4_i386.deb から) netatalk を展開しています...
netatalk (2.0.3-4) を設定しています ...
設定ファイル /etc/default/netatalk を新規にインストールしています ...
設定ファイル /etc/pam.d/netatalk を新規にインストールしています ...
Starting AppleTalk services (this will take a while):  atalkd papd afpd cnid_metad.
paraches@debian:~/myTest$ 

何やらレガシーなものは止めた方が良いらしい。というわけで、/etc/default/netatalk を編集。以下の2つを NO にする。

ATALKD_RUN=no
PAPD_RUN=no

あと、apt-get update/upgrade でせっかく入れた netatalk がアップデートされちゃわないようにする。これをすると保留になる。どこかのサイトで見たんだけど、こうすれば折角入れたのがアップデートされて元に戻っちゃうのを避けられるのね!

paraches@debian:~/myTest/netatalk$ echo "netatalk hold" | sudo dpkg --set-selections

最後に共有するフォルダの設定は /etc/netatalk/AppleVolums.default の最後に共有するフォルダのパスと共有するときの名前を書く。

~/			"Home Directory" options:upriv

options:upriv は Leopard で共有したときにパーミションがおかしくなるのを解決してくれる魔法の呪文。(あんまり状況解ってない…)