netatalk のビルド

まずは SSL のライブラリが必要なのね。

paraches@debian:~$ sudo apt-get install libssl-dev
パッケージリストを読みこんでいます... 完了0%
依存関係ツリーを作成しています... 完了%     
以下のパッケージが新たにインストールされます:
  libssl-dev
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
2776kB のアーカイブを取得する必要があります。
展開後に追加で 7586kB のディスク容量が消費されます。
取得:1 http://ftp.jp.debian.org stable/main libssl-dev 0.9.7e-3sarge1 [2776kB]
2776kB を 9s で取得しました (295kB/s)                                                  
未選択パッケージ libssl-dev を選択しています。
(データベースを読み込んでいます... 現在 39698 個のファイルとディレクトリがインストールされています。)
(.../libssl-dev_0.9.7e-3sarge1_powerpc.deb から) libssl-dev を展開しています...
libssl-dev (0.9.7e-3sarge1) を設定しています ...

paraches@debian:~$ 

次は netatalk に必要な物を入れるってコマンド?

paraches@debian:~$ sudo apt-get build-dep netatalk
パッケージリストを読みこんでいます... 完了%
依存関係ツリーを作成しています... 完了%     
以下のパッケージが新たにインストールされます:
  cdbs comerr-dev d-shlibs dh-buildinfo heimdal-dev kerberos4kth-dev
  libcupsys2-dev libdb4.2-dev libedit2 libgcrypt11-dev libgnutls11-dev
  libgpg-error-dev libhdb7-heimdal libkadm1-kerberos4kth libkadm5clnt4-heimdal
  libkadm5srv7-heimdal libkafs0-heimdal libkafs0-kerberos4kth
  libkdb-1-kerberos4kth libkthacl1-kerberos4kth libopencdk8-dev
  libotp0-kerberos4kth libpam0g-dev libsl0-kerberos4kth libslp-dev
  libss0-kerberos4kth libtasn1-2-dev libwrap0-dev
アップグレード: 0 個、新規インストール: 28 個、削除: 0 個、保留: 0 個。
3469kB のアーカイブを取得する必要があります。
展開後に追加で 10.6MB のディスク容量が消費されます。
続行しますか? [Y/n] 
<長いので省略>
heimdal-dev (0.6.3-10sarge2) を設定しています ...
libdb4.2-dev (4.2.52-18) を設定しています ...
libslp-dev (1.0.11a-2) を設定しています ...
paraches@debian:~$ 

うわっ! なんか凄くいっぱい入った! でも、これで何かが足りないって問題は起きないだろうから安心だ。
で、次は netatalk のソースをゲット。そっか、ソースはNetatalk - Networking Apple Macintosh through Open Sourceから直接持ってくるんじゃなくて、Debian のパッケージになってるのと同じものを落として来た方が良いのか。

paraches@debian:~/myTest$ sudo apt-get source netatalk
パッケージリストを読みこんでいます... 完了%
依存関係ツリーを作成しています... 完了%     
1965kB のソースアーカイブを取得する必要があります。
取得:1 http://ftp.jp.debian.org stable/main netatalk 2.0.2-3 (dsc) [789B]
取得:2 http://ftp.jp.debian.org stable/main netatalk 2.0.2-3 (tar) [1919kB]
取得:3 http://ftp.jp.debian.org stable/main netatalk 2.0.2-3 (diff) [45.2kB]     
1965kB を 7s で取得しました (262kB/s)                                                  
dpkg-source: extracting netatalk in netatalk-2.0.2
paraches@debian:~/myTest$ 

ん? Debian のパッケージになってるのはバージョンが 2.0.2 なのか。最新ではないって事かな? ま、これを使ってビルドするのが良いんでしょう。

で、次は4番目の rules ファイルを SSL 対応に変更する部分だけど、これは 1.5pre8ってあるから古いバージョンでの話だよな〜。とりあえず rules ファイルに該当する場所があるかどうか調べてみよう。

paraches@debian:~/myTest/netatalk-2.0.2$ cat debian/rules | grep USE_SSL
paraches@debian:~/myTest/netatalk-2.0.2$ 

あ〜やっぱりない…。というわけで、落として来た方の README.Debian も確認してみる。

paraches@debian:~/myTest/netatalk-2.0.2/debian$ cat README.Debian
This is the pre-packaged Debian version of the Netatalk protocol suite.
To find out more about netatalk, visit http://netatalk.sourceforge.net/

This package was originally put together by Klee Dienes <klee@debian.org> and
was later maintained by late Joel 'espy' Klecker and David Huggins-Daines
<dhd@debian.org>. It was repackaged by its current maintainer Sebastian Rittau
<srittau@debian.org>.

Notes about OpenSSL
===================

OpenSSL support currently disabled, because of licensing issues: FSF (Free
Software Foundation) and Debian considers the GPL (under which Netatalk is
licensed) to be incompatible with the OpenSSL license.

Until a final solution is found you can either rebuild the package with the
command 'DEB_BUILD_OPTIONS=ssl debuild' (or similarly with whatever build
command you prefer) or try fetching unofficial(!)  precompiled binary packages
from either http://www.jroger.in-berlin.de/netatalk/ or
http://debian.jones.dk/ . One of the following lines added to
/etc/apt/sources.list may or may not work (please do not use the official
bugtracking system for errors with them):

deb http://www.jroger.in-berlin.de/netatalk/ ./
deb http://debian.jones.dk/ woody misc
deb http://debian.jones.dk/ sarge misc
deb http://debian.jones.dk/ sid misc

<長いので省略>
paraches@debian:~/myTest/netatalk-2.0.2/debian$ 

うわっ!内容が違ってた!apt-get で取ってきた方は内容が増えてる。OpenSSL の設定の方法は command 'DEB_BUILD_OPTIONS=ssl debuild' だって。ん? command? これ、build する時のオプションで指定するの? それとも、リンクするとき? え〜? わかんない! ビルドのオプションが sslってことだよな〜。
とりあえず、念のため rules も見てみるとこれもずいぶん違っているぞ。

##FIXME: Other changes are needed, like enabling DHX plugin
ifneq (,$(findstring ssl,$(DEB_BUILD_OPTIONS)))
DEB_CONFIGURE_EXTRA_FLAGS += --with-ssl-dir ?
        --with-cracklib=/var/cache/cracklib/cracklib_dict
DEB_DH_GENCONTROL_ARGS := -- -Vssl:Recommends=", cracklib-runtime, libpam-cracklib"
else
DEB_CONFIGURE_EXTRA_FLAGS += --without-ssl-dir
endif

関係ありそうな部分はここなんだけど、DEB_BUILD_OPTIONSって変数に ssl が含まれていたら --with-ssl-dir と --with-cracklib とあれやこれやするって感じだけど…。変数か〜。環境変数で指定すれば良いってことかな?

paraches@debian:~/myTest/netatalk-2.0.2/debian$ DEB_BUILD_OPTIONS="ssl debuild"
paraches@debian:~/myTest/netatalk-2.0.2/debian$ echo $DEB_BUILD_OPTIONS
ssl debuild
paraches@debian:~/myTest/netatalk-2.0.2/debian$ 

これで良いのか? とりあえずビルドにチャレンジしてみよう!

paraches@debian:~/myTest/netatalk-2.0.2$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: source package is netatalk
dpkg-buildpackage: source version is 2.0.2-3
dpkg-buildpackage: source maintainer is Sebastian Rittau <srittau@debian.org>
dpkg-buildpackage: host architecture is powerpc
<長いので省略>
if test ""; then cd ""; else cd "."; fi && CC="cc" CXX="g++" CFLAGS="-g -Wall -O2" CXXFLAGS="-g -Wall -O2" /home/paraches/myTest/netatalk-2.0.2/./configure  --build=powerpc-linux --prefix=/usr --includedir="?${prefix}/include" --mandir="?${prefix}/share/man" --infodir="?${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var --libexecdir="?${prefix}/lib/netatalk" --srcdir=. --disable-maintainer-mode  --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 --without-ssl-dir 
<長いので省略>
dpkg-deb: ../netatalk_2.0.2-3_powerpc.deb にパッケージ `netatalk' を構築しています
 signfile netatalk_2.0.2-3.dsc
gpg: “Sebastian Rittau <srittau@debian.org>”をとばします: 秘密鍵が得られません
gpg: [stdin]: clearsign failed: 秘密鍵が得られません
paraches@debian:~/myTest/netatalk-2.0.2$ 

あれ? --without-ssl-dir になってる。これじゃ駄目じゃん!
export しないと駄目なの???

paraches@debian:~/myTest/netatalk-2.0.2$ export DEB_BUILD_OPTIONS
paraches@debian:~/myTest/netatalk-2.0.2$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: source package is netatalk
<長いので省略>
if test ""; then cd ""; else cd "."; fi && CC="cc" CXX="g++" CFLAGS="-g -Wall -O2" CXXFLAGS="-g -Wall -O2" /home/paraches/myTest/netatalk-2.0.2/./configure  --build=powerpc-linux --prefix=/usr --includedir="?${prefix}/include" --mandir="?${prefix}/share/man" --infodir="?${prefix}/share/info" --sysconfdir=/etc --localstatedir=/var --libexecdir="?${prefix}/lib/netatalk" --srcdir=. --disable-maintainer-mode  --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 
<長いので省略>
checking for main in -lcrack... no
configure: error: cracklib not found!
make: *** [config.status] エラー 1
paraches@debian:~/myTest/netatalk-2.0.2$ 

今度はちゃんと ssl を使うようにできた! けど、cracklib が無いって怒られた! 最初に netatalk に関係あるパッケージは全部入れたんじゃなかったの? う〜ん、cracklib を入れるしかないよな〜。

paraches@debian:~/myTest/netatalk-2.0.2$ sudo apt-get install cracklib
パッケージリストを読みこんでいます... 完了0%
依存関係ツリーを作成しています... 完了%     
E: パッケージ cracklib が見付かりません
paraches@debian:~/myTest/netatalk-2.0.2$ 

無いじゃん! やばいよ、どうすりゃ良いのよ?
困った時のグーグル。とりあえずググろう。
で、見つかったのは cracklib2ってやつ。これの runtime と dev がある。とりあえず全部入れれば良いのではないかな。

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

cracklib-runtime (2.7-16) を設定しています ...

cracklib2-dev (2.7-16) を設定しています ...
paraches@debian:~/myTest/netatalk-2.0.2$ 

問題なくインストールは終了。
今度こそビルド成功まで行くぞ!

paraches@debian:~/myTest/netatalk-2.0.2$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: source package is netatalk
<長いので省略>
checking for main in -lcrack... yes
setting cracklib dictionary to /var/cache/cracklib/cracklib_dict
checking for cracklib support... yes
<長いので省略>
dpkg-deb: ../netatalk_2.0.2-3_powerpc.deb にパッケージ `netatalk' を構築しています
 signfile netatalk_2.0.2-3.dsc
gpg: “Sebastian Rittau <srittau@debian.org>”をとばします: 秘密鍵が得られません
gpg: [stdin]: clearsign failed: 秘密鍵が得られません
paraches@debian:~/myTest/netatalk-2.0.2$ 

cracklib のエラーは消えて最後までいった。けど、秘密鍵が得られませんって怒られる。これ、なんでだろう?
とりあえず、できあがったパッケージの確認。

paraches@debian:~/myTest/netatalk-2.0.2$ ls -al ..
合計 4084
drwxr-sr-x   6 paraches paraches    4096 2006-05-02 04:27 .
drwxr-xr-x  16 paraches paraches    4096 2006-05-01 14:45 ..
drwxr-sr-x   2 paraches paraches    4096 2006-04-03 23:48 .AppleDouble
-rw-r--r--   1 paraches paraches    6148 2006-04-20 21:35 :2eDS_Store
drwxr-xr-x  14 paraches paraches    4096 2006-05-02 04:29 netatalk-2.0.2
-rw-r--r--   1 paraches paraches   85305 2006-05-02 04:27 netatalk_2.0.2-3.diff.gz
-rw-r--r--   1 paraches paraches     552 2006-05-02 04:27 netatalk_2.0.2-3.dsc
-rw-r--r--   1 paraches paraches       0 2006-05-02 04:35 netatalk_2.0.2-3.dsc.asc
-rw-r--r--   1 paraches paraches  963788 2006-05-02 04:35 netatalk_2.0.2-3_powerpc.deb
-rw-r--r--   1 paraches paraches 1918779 2005-03-16 09:32 netatalk_2.0.2.orig.tar.gz
paraches@debian:~/myTest/netatalk-2.0.2$ 

さて、古い netatalk を削除して新しいのをインストールだ!

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

paraches@debian:~/myTest$ 

で、マックからアクセスしてみると…やった! クリアテキストのパスワードのアラートは表示されない! ちゃんと OpenSSL を使ってアクセスできたみたいだ。満足!
/usr/lib/netatalk を見ても uams_dhx_pam.so が入ってるよ!

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
paraches@debian:~/myTest$