プラスα空間

ブログ in お市 のーと

Ubuntu 10.04にnetatalk 2.2beta4をdpkgでインストール

HATさんに、コメントで教えていただきました。

11.10 Oneiric用の2.2-beta4のdebパッケージが出てます。
https://launchpad.net/ubuntu/+source/netatalk
こういうパッケージって、10.04上でbuild出来るんですかね。

最初、何の事か、さっぱりわかりませんでした。その後のコメントのやりとりで、Ubuntu 11.10 Oneiric Ocelotのパッケージを、Ubuntu 10.04 Lucid Lynxで、ソースからbuildする事だとわかりました。

netatalkのソースをダウンロードしてきてインストールするのと、debパッケージでインストールするのの違いは何だろう? と悩みました。

これも、HATさんに教えていただきました。

1) パッケージで管理すれば、make uninstall忘れのような面倒がなくなる。
2) パッケージの作り方を公開すれば、他の10.04ユーザが幸せになる。
3) そのパッケージ自体を公開すれば、他の10.04ユーザが更に幸せになる。
4) 11.10で
buildできるのに10.04でbuildできないという事実が判明すれば、パッケージ自体か、あるいはnetatalk自体に問題があるという証拠で
ある。前者の場合はUbuntu本家に還元できる。後者の場合はnetatalk本家に還元できる。
5)
4)のような問題が発覚した場合、それは実はUbuntuだけでなく全く別の環境にも関連するかもしれない。だとすると、RedHatとかCentOSと
かSLとかFedoraとかGentooとかSUSEとかFreeBSDとかNetBSDとかOpenBSDとかSolarisとかのユーザも幸せになる
かもしれない。

なるほど。

このメリットのごく一部ですけれど、debパッケージを作ってから、それを使ってインストールするようにすれば、dpkgコマンドでパッケージの管理ができるようになるので、楽なのです。

色々調べた末に、たどり着いた方法です。間違えている所があるかもしれないので、コメントで教えていただけるとありがたいです。

  1. ビルドを実行するためのパッケージをインストール
  2. ソースパッケージのダウンロード
  3. ソースパッケージの展開
  4. 依存パッケージのインストール
  5. ソースパッケージの修正
  6. ビルド
  7. インストール
  8. 確認
  9. 設定変更
  10. 再起動と再確認

手順は書きませんが、今、netatalkを使われているなら、設定ファイルのバックアップを取っておく事をお忘れなく。

1. ビルドを実行するためのパッケージをインストール

ソースからビルドするためには、次のパッケージが必要です。

インストールします。

$ sudo apt-get install dpkg-dev fakeroot

もしかすると、build-essentialと言うパッケージも必要かも知れません。もし、エラーが出る様でしたら、インストールしてください。

$ sudo apt-get install build-essential

2. ソースパッケージのダウンロード

次の所から、ソースパッケージをダウンロードしてきます。

必要なのは、次の三つのファイルです。上記ページの「2.2~beta4-1」の左の三角をクリックすると、リンクが現れます。

3. ソースパッケージの展開

まず、作業ディレクトリを作ります。お好みに応じて、適宜変更してください。

$ cd
$ mkdir work
$ cd work
$ mkdir netatalk
$ cd netatalk
$ mkdir deb
$ cd deb

ダウンロードしたソースパッケージを持ってきます。

$ cd ~/work/netatak/deb/
$ mv ~/Downloads/netatalk_2.2~beta4* .

パッケージを展開します。

$ cd ~/work/netatak/deb/
$ dpkg-source -x netatalk_2.2~beta4-1.dsc
gpgv: 2011年06月06日 04時16分23秒 JSTにRSA鍵ID C1A00121で施された署名
gpgv: 署名を検査できません: 公開鍵が見つかりません
dpkg-source: warning: failed to verify signature on ./netatalk_2.2~beta4-1.dsc
dpkg-source: info: extracting netatalk in netatalk-2.2~beta4
dpkg-source: info: unpacking netatalk_2.2~beta4.orig.tar.gz
dpkg-source: info: unpacking netatalk_2.2~beta4-1.debian.tar.gz
dpkg-source: info: applying 114_fix_macusers_ps_parsing.patch
dpkg-source: info: applying 115_default-dir.patch
dpkg-source: info: applying 201_etc2ps_paths.diff
dpkg-source: info: applying 202_psf_8_paths.diff
dpkg-source: info: applying 205_applevolumes_default_homedir.diff
dpkg-source: info: applying 213_CVE-2008-5718.patch
dpkg-source: info: applying 214_default-dir_autotools.patch

こうすることで、次のディレクトリ構造ができます。

./netatalk-2.2~beta4 -+- オリジナルのソース (netatalk_2.2~beta4.orig.tar.gzを展開した物)
                      +- debian (netatalk_2.2~beta4-1.debian.tar.gzを展開した物)

パッチも当たっているはずです。

署名を検査出来ないと言うエラーが出ていますが、無視する事にします。

4. 依存パッケージのインストール

必要なパッケージは、debian/controlに書かれています。 抜粋すると、次の通りです。

Build-Depends: cdbs (>= 0.4.70~),
autotools-dev,
devscripts (>= 2.10.7~),
debhelper (>= 6),
dh-buildinfo,
libdb-dev,
libwrap0-dev,
libpam0g-dev,
libcups2-dev,
libkrb5-dev,
libltdl3-dev,
libgcrypt11-dev,
libcrack2-dev,
libavahi-client-dev,
d-shlibs,
hardening-includes

もしかしたら、自動でインストールする方法があるのかも知れませんが、よくわからなかったので手動でインストールしました。

$ sudo apt-get install\
cdbs\
autotools-dev\
devscripts\
debhelper\
dh-buildinfo\
libdb-dev\
libwrap0-dev\
libpam0g-dev\
libcups2-dev\
libkrb5-dev\
libltdl3-dev\
libgcrypt11-dev\
libcrack2-dev\
libavahi-client-dev\
d-shlibs\
hardening-includes

もちろん、Synapticパッケージ・マネージャを使ってインストールしても構いません。こちらを使った方が、インストール未・済がわかるので、気分的に安心かもしれません。私は、Synapticパッケージ・マネージャを使いました。

debian/controlでは、cdbsの必要要件が0.4.70以上に対し、Ubuntu 10.04 Lucid Lynxでインストールできるcdbsのバージョンは0.4.62です。

暫定的な回避方法がわかったので、このままにしておきます。

パッケージの依存関係を見ると、debian/controlにLDAP/ACL関係のパッケージが定義されていません。netatalk 2.2を最大限に生かすには、最低限次のパッケージをインストールしておく必要があります。

$ sudo apt-get install libldap2-dev (LDAPのために必要)
$ sudo apt-get install libacl1-dev (ACLのために必要)

詳しくは、次の記事をご覧下さい。

5. ソースパッケージの修正

「4. 依存パッケージのインストール」でズルをしてしまいましたので、その対応です。

$ cd ~/work/netatak/deb/
$ cd netatalk-2.2~beta4
$ vi debian/rules

debian/rulesには、ソースパッケージからバイナリパッケージをビルドするためのルールが記載されています。このファイルを修正します。

#include /usr/share/cdbs/1/rules/upstream-tarball.mk

upstream-tarball.mkの行を、コメントアウトします。

何のための設定かはよくわからないのですが、こうすることでうまく行きました。

これをコメントアウトしないと、dpkg-buildpackage (次の章で説明します)で、次のエラーが出ます。

debian/rules:20: /usr/share/cdbs/1/rules/upstream-tarball.mk: No such file or directory
make: *** ターゲット `/usr/share/cdbs/1/rules/upstream-tarball.mk' を make するルールがありません.  中止.

6. ビルド

いよいよ、ビルドに移ります。

$ cd ~/work/netatak/deb/
$ cd netatalk-2.2~beta4
$ dpkg-buildpackage -us -uc -rfakeroot -d

これで、ビルドが始まります。時間がかかるので、しばらくお待ち下さい。

“-us -uc”オプションは、署名しないオプションです。そのため、出来上がったdebファイルは、Ubuntuパッケージとして、アップロードすることは禁止となります。

署名付きのパッケージにするには、”-us -uc”オプションの代わりに”-S”オプションを使います。

“-d”オプションは、依存関係を無視するオプションです。cdbsの必要要件を満たしていないので、これを付けないと、次のエラーになります。

dpkg-checkbuilddeps: Unmet build dependencies: cdbs (>= 0.4.70~)
dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: warning: (Use -d flag to override.)

7. インストール

ビルドしていた一つ上のディレクトリに、.debファイル(バイナリパッケージ)ができます。これを使って、インストールします。

$ cd ~/work/netatak/deb/
$ ls
netatalk-2.2~beta4                  netatalk_2.2~beta4-1_powerpc.changes
netatalk_2.2~beta4-1.debian.tar.gz  netatalk_2.2~beta4-1_powerpc.deb
netatalk_2.2~beta4-1.dsc            netatalk_2.2~beta4.orig.tar.gz
$ dpkg -i netatalk_2.2~beta4-1_powerpc.deb

8. 確認

インストールされた内容を確認します。

$ /usr/sbin/afpd -V
afpd 2.2-beta4 - 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:
        AFP3.x support:    Yes
        TCP/IP Support:    Yes
DDP(AppleTalk) Support:    Yes
         CNID backends:    dbd last tdb
           SLP support:    No
      Zeroconf support:    Yes
  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
           ACL support:    Yes
            EA support:    ad | sys
          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

私の環境では、ACL/LDAPが使用可能になっていますので、netatalkのconfigureが自動的にONにしたと思われます。

DDP (AppleTalk)をONにして古い環境をサポートするのだったら、SLPもONにした方が良い思うのですが、このパッケージではそうなっていません。困るのは、10.0.*の人だけなのかな?

設定ファイルを見てみます。

/etc/netatalk/AppleVolumes.default

# The line below sets some DEFAULT, starting with Netatalk 2.1.
:DEFAULT: options:upriv,usedots
# By default all users have access to their home directories.
~/                      "Home Directory"

ボリューム名の設定が追加されています。他はデフォルトのままでした。

他のファイル、”/etc/netatalk/afpd.conf”, “/etc/netatalk/AppleVolumes.system”は、デフォルトから変更ありません。

“/etc/default/netatalk”は、次の様になっています。

#AFPD_UAMLIST="-U uams_dhx2.so,uams_clrtxt.so"

コメントアウトされているので、実質的な影響は無いのですが、uamclrtxt.soを設定しようとした形跡があります。

その代わり、/etc/init.d/netatalkでuams_clrtxt.soの設定がありました。

AFPD_UAMLIST="-U uams_dhx2.so,uams_clrtxt.so"

平文パスワードを受け付ける設定になってしまうのですが、良いのでしょうか?

それと、日本語関係の設定はありませんでした。

一応、この状態で、Mac OS X 10.6.7 Snow Leopardから接続できました。

9. 設定変更

なんだか、中途半端な設定になっている様なので、設定を変更しました。

まず、サービスを止めます。

$ sudo service netatalk stop
Stopping Netatalk Daemons: afpd cnid_metad papd timelord atalkd.

次に、設定ファイルを変更します。

基本的に、Mac OS X 10.4 Tiger以降を意識した設定です。

以下に、必要部分だけ抜粋して記載します。

/etc/netatalk/AppleVolumes.default

# The line below sets some DEFAULT, starting with Netatalk 2.1.
:DEFAULT: options:upriv,usedots cnidscheme:dbd dperm:0700 fperm:0600 ea:sys
# By default all users have access to their home directories.
~/                      "Home Directory"
/home/u_capsule "Ubuntu Capsule" options:tm volsizelimit:5000

TimeCapsuleは、動作確認のためだけに設定しています。

/etc/init.d/netatalk

AFPD_UAMLIST="-U uams_dhx2.so"

/etc/default/netatalk

#### server (unix) and legacy client (<= Mac OS 9) charsets
ATALK_UNIX_CHARSET='UTF8'
ATALK_MAC_CHARSET='MAC_JAPANESE'
#### Set which legacy daemons to run.
#### If you need AppleTalk, run atalkd.
#### papd, timelord and a2boot are dependent upon atalkd.
ATALKD_RUN=no
PAPD_RUN=no
TIMELORD_RUN=no
A2BOOT_RUN=no

10. 再起動と再確認

サービスを起動します。

$ sudo service netatalk start
Starting Netatalk services (this will take a while):  cnid_metad afpd.

各種、確認をします。

Mac OS X側での動作確認です。Mac OS Xは、Snow Leopard(10.6.7)です。

全項目確認して、大丈夫でした。

なお、Ubuntu側で、拡張属性を有効にしておく必要があります。次の記事をご覧下さい。

ACLがONになっているのですが、今回は確認しない事にします。

【まとめ】

ちなみに、dpkg -r (及び–purge)で、アンインストールできる事も確認しています。

最後になりましたが、HATさん、ありがとうございます。

【参考にしたページ】

【関連記事】

Ubuntu 10.04にnetatalk 2.2beta4をdpkgでインストール”に“18”個のコメント
  • HAT より:

    これってつまり、libldap2-devとlibacl1-devをインストールしてない状態でdpkg-buildpackageを行なえば、LDAP/ACLに対応してないパッケージが出来上がるということでしょうか。
    だとすると、このソースパッケージはbuildする環境に依存して別のバイナリが出来上がるということになるので不完全です。
    もしLDAP/ACLに未対応にするポリシーであるとすれば、configureオプションにてこれを禁止すべきだし、対応にするポリシーなら、contorolファイルにてそれらを要求すべきです。どちらにしても不完全です。これは問題でしょう。
    AppleTalkとAvahiが有効になっていれば、SLP対応はあんまり重要じゃないです。
    http://www003.upp.so-net.ne.jp/hat/netatalk/img/appletalk.png
    をご覧ください。Mac OS X 10.0を除けば相当古いMacでも問題ありません。(あー、でも最近のLinux kernelにバグがあってAppleTalkは使えないかも)
    Debian/Ubuntuはライセンス関係にうるさくて、バイナリパッケージにOpenSSL(uams_dhx.so)を含むことが出来ません。この場合、古いクライアントから接続出来なくなるので、涙をのんでuams_clrtxt.soを有効にしているのでしょう。
    cdbsの件は全くわかりません。そもそもcdbsって何?

  • お市 より:

    HATさんへ、コメントお待ちしておりました。ありがとうございます。
    1. libldap2-devとlibacl1-devをインストールしてない状態でdpkg-buildpackageを行なえば、LDAP/ACLに対応してないパッケージが出来上がるということでしょうか。
    はい、その通りです。今試しに、libldap2-devとlibacl1-devを外してbuildしました。できたafpdを調べると、ACL/LDAP supportがNoになっています。
    確かに、おっしゃられる様に、パッケージとして不完全と思われます。
    2. AppleTalkとAvahiが有効になっていれば、SLP対応はあんまり重要じゃないです。
    はい、先日buildした後、リンクされている図を見て、10.0以外は大丈夫そうと言う事を確認しています。
    3. Debian/Ubuntuはライセンス関係にうるさくて、バイナリパッケージにOpenSSL(uams_dhx.so)を含むことが出来ません。
    なるほど、そういう事でしたか。
    http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html に書かれている、
    | DebianやUbuntuのnetatalkはライセンスの関係でuams_dhx.soが入っていません。Mac
    | OS X 10.2以前はuams_dhx2.soが使えないので注意が必要です。セキュリティ的に不安
    | なuams_cleartxt.soを使うか、自分でビルドしてuams_dhx.soを使えるようにするか、
    | どちらかです。
    ですね。
    4. cdbsの件は全くわかりません。そもそもcdbsって何?
    私も良くわかっていないのですが、buildパッケージを簡単に作るためのパッケージらしいです。
    http://sugi.nemui.org/doc/cdbs/cdbs-trans-1st.html
    https://wiki.ubuntulinux.jp/UbuntuPackagingGuideJa/basic-cdbs
    多分、debian/controlで指定されたバージョンのCDBSには、
    /usr/share/cdbs/1/rules/upstream-tarball.mk
    が入っている物と思われます。
    共通のrules用のMakefileの様です。
    ただ、これを指定しなくても、buildできてしまいました。

  • HAT より:

    バイナリ配布ではOpenSSLを含める事が出来ませんが、自前でbuildするぶんには全く問題ないので、方法が提供されています。buildする前に、
    export DEB_BUILD_OPTIONS=ssl
    とすると、OpenSSLが有効になります。
    検索エンジンで探してください。腐るほどヒットします。
    DEB_BUILD_OPTIONS="ssl debuild"
    になっているページもありますが、後者のdebuildの意味は知りません。

  • お市 より:

    HATさんへ、再びコメントありがとうございます。
    そういうオプションが用意されているのですね。
    調べた所、debian/rulesで使われる様です。
    オプションが変更になっていました。
    export DEB_BUILD_OPTIONS="openssl"
    とする必要があります。
    また、CDBSの新バージョンが必要とされる部分がわかりました。
    多分、sourceforgeにアップロードする時に必要となる様です。

  • HAT より:

    おひさしぶりです。HATです。お願いがあります。
    もうご存知だとは思いますが、次の安定版はしばらく出ないでしょう。永久に出ないかもしれません。だからといって、開発を止めるつもりはありません。
    Debian/Ubuntuに関しては、幸運なことに2.2beta4のパッケージが既にあり、現行Ubuntuにて使用可能なことはここのブログにおいて立証済みです。
    私に出来ることは、現行2.2beta4が十分に安定していることを確認することと、もしバグがあるならばそれを修正してgitに適用することです。
    Debian/Ubuntuの場合、過去の中途半端なbeta版に沢山パッチを当ててなんとかマシにしていた事実があります。
    私がバグをfixしてgitにあげておけば、Debian/Ubuntuのパッケージャがそれを適用していくでしょうから、結果的にdebパッケージの信頼性が上がっていく可能性があります。
    で、手始めとしては、libldap2-devとlibacl1-devが必要である件をパッケージャに連絡する必要があります。これをお願いできないでしょうか。
    これが完了すれば、私のページの方にて、ここのブログを宣伝します。場合によっては、私がこのページの英訳を書きます。すると自動的に2.2beta4のユーザが増えて、動作確認が促進されます。Unix系OSにおいてUbuntuユーザは非常に多いので、まずはUbuntuユーザに協力をお願いしたい。
    私の方ではFedora用のrpmを作るつもりですが、残念ながらFedoraユーザは少ない。
    CentOSユーザの協力が欲しいところですが、肝心のCentOS6がいつまで経ってもリリースされないので、どうにもこうにもなりません。

  • HAT より:

    なんでこんな話をするかというと、Lionではnetatalk 2.1.xが使えない可能性があるからです。
    早めに2.2系に移行する手段を提供する必要があります。

  • お市 より:

    HATさんへ、いつもコメントありがとうございます。
    Lionの事も含め、ご事情を理解しました。
    2.2の開発者の方は、netatalkの開発の対価が欲しくなったと言う事ですね。開発には相当な時間が取られるでしょうから、そういう気持ちは理解できます。でも、独り占めするのは良くないですよね。
    それはそれとして、2.2beta4やUbuntuの開発に私が協力できるなら、うれしい事です。
    libldap2-devとlibacl1-devの件は、気になっていました。最初にお話を伺ってから、実際に自分でbuildし、状況を理解できました。この件は、報告しなければならないんだろうな…と思いつつ、かなり面倒に思っていました。
    Bugを報告するには、IDを取って所定のページから報告するのだと思います。それは、多分、やってみればできると思います。
    ただ心配なのは、私がUbuntuの基本や、その開発体制についてほとんど知らない事です。そういう状況で、いきなりBug報告をして、受け入れられる物でしょうか?
    それと、このページの宣伝の件ですが、具体的にどこになるのでしょうか? 英訳と言う事ですから、海外の方も見る場所なのですよね? リンクを張って紹介していただくのは、全く問題ありません。
    このページは、手順と結果を書いてあるだけですから、英語で書くのはそれほど難しくないと思います。ちょっと時間はかかるかもしれませんが、自分で書けると思います。勉強のために、自分で書いてみたいです。
    私が今使っているNAS(IOデータのLANDISK Home)のnetatalkは、2.0.2です。古すぎます。Lionでは使えませんね…。こちらの状況も、何とかしたいと思っています。
    それでは又、コメントをお待ちしております。

  • HAT より:

    単にlibldap2-devとlibacl1-devをrequireしないとACLが使えないって書けば通じるでしょう。誰が見ても明らかなんだから。
    まず、
    http://www003.upp.so-net.ne.jp/hat/netatalk/
    の直下に「Netatalk 2.2git SRPM for Fedora」を作ります。
    同様に「Netatalk 2.2-beta4 package for Ubuntu 10.x」みたいな感じかと。

  • HAT より:

    Fedora15上でrpmパッケージ作成完了。
    次はCentOS6とSL6をインストールして動作確認予定。
    噂によれはLionは14日。
    間に合うのか???

  • お市 より:

    HATさんへ、再びコメントありがとうございます。
    お返事が遅くなって、申し訳ありません。
    先ほど、BUG登録しました。どうなるでしょうか…。

  • お市 より:

    HATさんへ、もう一件コメントをいただいていたのですね。
    私も、14日Lionリリースの噂を読みました。
    私も、Parallelsを購入したので、もう少しご協力できるかもしれません。

  • HAT より:

    netatalk 2.2git版SRPM、リリースしました。
    debパッケージの報告の件、ありがとうございました。
    実際に修正されるのを待ってる間にLionがリリースされそうなので、
    先に英語ページを公開して頂けると助かります。

  • お市 より:

    HATさんへ、再びコメントありがとうございます。
    netatalk 2.2git版SRPMのリリース、お疲れさまです。リリースページを見ました。英語版ですね…。
    私も、英語版記事に取りかかり始めました。明日までには公開したいと思います。
    Launchpadの方は、まだ反応がありませんね。

  • HAT より:

    さー、大騒ぎになってますよ。
    このページはアクセス数が増えてませんか?

  • お市 より:

    HATさんへ、コメントありがとうございます。
    はい、すごいアクセス数になっています。
    このページはそうでもないのですが、英語版の記事の方が、ものすごい事になっています。
    HATさんのページからの流入も多いです。
    それよりも、Rosettaが搭載されないと言う事の方が、影響が大きいです。

  • HAT より:

    Ubuntu 12.04 Precise用のnetatalk_2.2.1-1が出てますが、ACL/LDAPの件は直ってないですね。
    まだ作業途中なのかもしれませんが。

  • お市 より:

    HATさんへ、いつもコメントありがとうございます。
    緊急を要するバグじゃないってことで、後回しなのですかね?
    最近、私の方からのnetatalkに対するアクションが無くて、申し訳ありません。
    やりたい事はあるのですが、なかなか手を付けられません。

コメントを残す