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

2012年5月12日netatalk,パソコン・インターネット

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. ビルドを実行するためのパッケージをインストール

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

  • dpkg-dev
  • fakeroot

インストールします。

$ 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.

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

  • 文字コード設定
  • 平文パスワードの禁止
  • DDP (AppleTalk)関係を起動しない

基本的に、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)です。

  • Finderから、サーバが見えるか? … OK
  • フォルダを作れるか? … OK
  • ファイルをコピーできるか? (Mac→Ubuntu、Ubuntu→Mac) … OK
  • ファイルのパーミッションとタイムスタンプはどうか? … OK
  • 拡張属性はついているか? … OK
  • ファイル名の確認(日本語、禁止文字、長いファイル名) … OK
  • TimeMachineのディスクに表示されるか? … OK

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

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

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

【まとめ】

  • 一部手を加える事で、Ubuntu 11.10 Oneiric Ocelotのパッケージを、Ubuntu 10.04 Lucid Lynxで、ソースからビルドできました。
  • cdbsは、0.4.62でも大丈夫そう。
  • ビルドしたパッケージ(.deb)は、dpkgでインストールできました。
  • 設定が気に入らない所があるので修正し、動作確認しました。

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

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

【参考にしたページ】

【関連記事】

Posted by お市のかた