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$