Wednesday, April 09, 2008

在 debian 上準備給 Mac 用的 AFPd

簡單講就是安裝 netatalk 這個套件,設定一下就一切搞定。

問題在於,在 debian 內附的 netatalk 不支援認證時加密,因為 OpenSSL 的授權跟 GPL 有所衝突的關係。這實在是很無聊的理由... 不過總之就是這樣。

因此,就得自己編譯 netatalk 套件。方法跟這篇講的一樣,基本上就是安裝額外的相依套件,然後照著一般的建置程序做就可以了。

cd /usr/src
apt-get install openssl libssl-dev cracklib2 libpam-cracklib cracklib2-dev
apt-get source netatalk
apt-get build-dep netatalk

然後編輯建置規則檔

cd netatalk-2.0.3
vi debian/rules

在大概第 18 行附近找到 ##FIXME: Other changes are needed, like enabling DHX plugin 的字樣,把 DEB_BUILD_OPTIONS=ssl debuild 加進去。

最後執行 dpkg-buildpackage 就會開始製作套件檔,做完用 dpkg -i 安裝就完成了。

接著再修改 /etc/default/netatalk 設定檔,我改了 UAMLIST 並且關掉 AFPD 跟儲存 meta data 用的 CNID 之外的服務。主要是把 ATALKD 跟 PAPD 關掉,其他沒動應該也是無所謂。

AFPD_UAMLIST="-U uams_dhx.so,uams_randnum.so"

ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

再來就是參考這邊,修改 /etc/netatalk/afpd.conf 設定,主要是把 AppleTalk 關掉,走 TCP 就好了。

- -noddp -uamlist uams_randnum.so,uams_dhx.so

然後新增 Avahi 的服務描述檔,這樣就可以直接用 Bonjor 找到機器。


<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>

  <name replace-wildcards="yes">AFP on %h</name>

  <service>
    <type>_afpovertcp._tcp</type>
    <port>548</port>
  </service>

</service-group>

該重啟動的重啟動之後,應該就可以用了。

另外還可以在 /etc/netatalk/AppleVolumes.default 加上 option:usedots,noadouble 讓一些 netatalk 用來儲存 Mac 特殊檔案狀態用的檔案名稱不會被編碼,而可以藏起來。

2 comments:

HAT said...

See
http://www003.upp.so-net.ne.jp/hat/netatalk/debian40.html

Yinyin said...

Thank you for your sharing.

For my environment, all mac box I have is 10.4, so UTF-8 is sufficient for me :)