netatalk 3.1.3をdebian化してUbuntu 14.04にdpkgでインストール[追記あり]

2016年6月4日netatalk,パソコン・インターネット

一年前、netatalk 3.0のプライベートdebianパッケージを作ってインストールしています。

「debian化」と言っているのは、debianパッケージを作る事を指しています。私が勝手に呼んでいます。

今回、netatalk 3.1.3でdebian化をしようと思ったのは、前回作ったnetatalk 3.0用のパッケージでは、netatalk 3.1.3をインストールできないと言うコメントを貰ったためです。今回作ったパッケージは、上手く動いている様です。

最初に断っておきますが、私はdebianのメインテナーではあります。なので、やっつけ仕事的にdebパッケージを作っています。

debianパッケージの方は、2.2.x系から進展がありません。どうされてしまったのでしょうか? 3月頃から、3.1.x系に動きがあるらしいですが…。

本記事では、次のページのやり方を基本としています。ありがとうございます。

netatalk 3.1.3をdebian化して、Ubuntu 14.04にインストールする方法は次の通りです。

  1. debianパッケージを作るために必要なパッケージをインストール
  2. ビルドの準備
  3. netatalkのインストールに必要なパッケージをインストール
  4. debianパッケージの作成
  5. 出来上がったdebinaパッケージのインストール
  6. netatalk (afp.conf) の設定
  7. netatalkの起動
  8. netatalkの動作確認

何か質問があれば、コメントをお願いします。

1. debianパッケージを作るために必要なパッケージをインストール

まず、debianパッケージを作るために必要とされるパッケージをインストールします。

$ sudo apt-get install build-essential dpkg-dev fakeroot dh-make

2. ビルドの準備

次に、ダウンロードしておいたnetatalk 3.1.3とオリジナルのnetatalk 2.2.2用のパッケージを展開します。

$ tar xvjf netatalk-3.1.3.tar.bz2 
$ tar xvzf netatalk_2.2.2-1ubuntu2.debian.tar.gz 

netatalk 3.1.3とnetatalk 2.2.2 debianパッケージは、以下のウェブサイトからダウンロード出来ます。

(追記 2014-07-19 10:54 netalk 2.2.2のソースパッケージは、次の方法でも取得できます。

$ apt-get source netatalk
$ ls
netatalk-2.2.2  netatalk_2.2.2-1ubuntu2.debian.tar.gz  netatalk_2.2.2-1ubuntu2.dsc  netatalk_2.2.2.orig.tar.gz

“netatalk_2.2.2-1ubuntu2.debian.tar.gz"を使って下さい。

)

次に、dh_makeで、debianパッケージを作る環境を準備します。

$ ls
debian  netatalk-3.1.3  netatalk-3.1.3.tar.bz2  netatalk_2.2.2-1ubuntu2.debian.tar.gz
$ cd netatalk-3.1.3/
$ dh_make --createorig --single
Maintainer name  : oichi
Email-Address    : oichi@example.com 
Date             : Sun, 13 Jul 2014 11:10:16 +0900
Package Name     : netatalk
Version          : 3.1.3
License          : blank
Type of Package  : Single
Hit  to confirm: 
Done. Please edit the files in the debian/ subdirectory now. netatalk
uses a configure script, so you probably don't have to edit the Makefiles.

そして、オリジナルの"rules"と"control"を、2.2.2パッケージからコピーします。

$ cp -p ../debian/rules debian/rules 
$ cp -p ../debian/control debian/control 

まずは、debian/rulesを修正します。

 040|DEB_CONFIGURE_EXTRA_FLAGS := \
 041|        --with-init-style=debian \
 042|        --with-cracklib \
 043|        --enable-krbV-uam \
 044|        --with-pam-confdir=/etc/pam.d \
 045|        --with-dbus-sysconf-dir=/etc/dbus-1/system.d \
 046|        --with-tracker-pkgconfig-version=0.16 \
 047|        --enable-fhs \

実は、ここだけではなく他にも直す所がたくさんあります。また、debian/controlも修正する必要があります。パッチを用意しましたので、右クリックでダウンロードしてから、お使い下さい。

パッチの当て方は、次の様にします。

$ patch -p0 < ~/Downloads/debian-netatalk-3.1.3.patch

3. netatalkのインストールに必要なパッケージをインストール

netatalkに必要なパッケージをインストールします。debianパッケージ用の物も含んでいます。

$ sudo apt-get install cdbs devscripts debhelper dh-buildinfo libltdl3-dev d-shlibs libssl-dev libgcrypt11-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libmysqlclient-dev libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev tracker libtracker-sparql-0.16-dev libtracker-miner-0.16-dev hardening-includes

4. debianパッケージの作成

パッケージをビルドします。

$ dpkg-buildpackage -us -uc -rfakeroot -d

ちょっと時間がかかります。

“-us -uc"は、サインしないオプションです。オプション無しのパッケージをアップロードされる事は禁止されています。また、"-d"オプションは、依存関係を無視するためです。

5. 出来上がったdebinaパッケージのインストール

一つ上のディレクトリに、debianパッケージができているはずです。dpkg -iコマンドでインストールします。

$ cd ..
$ ls
debian                  netatalk_2.2.2-1ubuntu2.debian.tar.gz  netatalk_3.1.3-1_amd64.changes
netatalk-3.1.3          netatalk_3.1.3-1.debian.tar.gz         netatalk_3.1.3-1_amd64.deb
netatalk-3.1.3.tar.bz2  netatalk_3.1.3-1.dsc                   netatalk_3.1.3.orig.tar.xz
$ sudo dpkg -i netatalk_3.1.3-1_amd64.deb 

インストールされたパッケージを確認します。

$ which afpd
/sbin/afpd
$ afpd -V
afpd 3.1.3 - 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:

          AFP versions:	2.2 3.0 3.1 3.2 3.3 3.4 
         CNID backends:	dbd last tdb mysql 
      Zeroconf support:	Avahi
  TCP wrappers support:	Yes
         Quota support:	Yes
   Admin group support:	Yes
    Valid shell checks:	Yes
      cracklib support:	Yes
            EA support:	ad | sys
           ACL support:	Yes
          LDAP support:	Yes
         D-Bus support:	Yes
     Spotlight support:	Yes
         DTrace probes:	Yes

              afp.conf:	/etc/afp.conf
           extmap.conf:	/etc/extmap.conf
       state directory:	/var/netatalk/
    afp_signature.conf:	/var/netatalk/afp_signature.conf
      afp_voluuid.conf:	/var/netatalk/afp_voluuid.conf
       UAM search path:	/lib/netatalk/
  Server messages path:	/var/netatalk/msg/

6. netatalk (afp.conf) の設定

afp.confを書き換える前に、netatalkサービスを止めます。afp.confは、/etcにあります。

$ sudo service netatalk stop
$ sudo vi /etc/afp.conf

上記のインストール例の通りに設定します。動作確認には十分です。

[Global]
    mac charset = MAC_JAPANESE

[Homes]
    basedir regex = /home

[Test Volume]
    path = /export/test1

[My Time Machine Volume]
    path = /export/timemachine
    time machine = yes

ディレクトリも準備しておきます。

$ sudo mkdir -p /export/test1
$ sudo chmod 777 /export/test1/
$ sudo mkdir /export/timemachine
$ sudo chmod 777 /export/timemachine/

ACLとEA(拡張属性)を使いますので、/etc/fstabで設定していない場合は、次の様に設定して下さい。

$ vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
# / was on /dev/sda1 during installation
UUID=oooooooo-oooo-oooo-oooo-oooooooooooo /               ext4    defaults,user_xattr,acl,errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=oooooooo-oooo-oooo-oooo-oooooooooooo none            swap    sw              0       0

修正が終わったら、"/"を再マウントします。

$ sudo mount -o remount /

これで、ACLとEAが使える様になったはずです。

7. netatalkの起動

netatalkを起動します。また、Finderで見つけられる様に、avahi-daemonも動かします。.

$ sudo service avahi-daemon start
$ sudo service netatalk start

これで、FinderからUbuntuのnetatalkを見つけられるはずです。
Netatlk server on Ubuntu

8. netatalkの動作確認

私は、netatalkをインストールした時は、いつも次の確認をしています。

OS X 10.9.4
サーバーを見つけられるか? OK
フォルダを作れるか? OK
MacからUbuntuにコピーできるか? OK
UbuntuからMacにコピーできるか? OK
コピーされたファイルのパーミッションはどうか? OK
コピーされたファイルのタイムスタンプはどうか? OK
ファイルの拡張属性はどうか? OK
“:”の様な特殊文字はどうか? OK
長いファイル名はどうか? OK
TimeMachineでバックアップできるか? OK

動いている様です。

付録: パッチ適用済み"rules"と"control"

パッチ適用済み"rules"(抜粋)。

 040|DEB_CONFIGURE_EXTRA_FLAGS := \
*041|        --with-init-style=debian \
*042|        --with-cracklib \
*043|        --enable-krbV-uam \
*044|        --with-pam-confdir=/etc/pam.d \
*045|        --with-dbus-sysconf-dir=/etc/dbus-1/system.d \
*046|        --with-tracker-pkgconfig-version=0.16 \
*047|        --enable-fhs \
 048|
*049|#DEB_INSTALL_EXAMPLES_netatalk = debian/examples/*
 077|# Rename files w/ manpage references to avoid namespace conflicts
 078|# * uniconv → netatalk-uniconv
 079|# * install netatalk-uniconv as system binary
 080|bindir=debian/netatalk/usr/bin
 081|man1dir=debian/netatalk/usr/share/man/man1
*082|binary-post-install/netatalk::
*083|#mv $(bindir)/uniconv $(bindir)/../sbin/netatalk-uniconv
*084|#perl -p -e 's/(?>!Title: )(uniconv)\\b/netatalk(?(1)\\-)$$2/g;s/(TH "UNICONV" )"1"/$$1"8"/' <$(man1dir)/uniconv.1 >$(man1dir)/../man8/netatalk-uniconv.8
 086|#rm $(man1dir)/uniconv.1
 092|# Remove unnecessary files
*093|binary-post-install/netatalk::
*094|#rm debian/netatalk/usr/bin/netatalk-config
 095|#rm debian/netatalk/usr/lib/libatalk.*
 096|rm debian/netatalk/usr/share/man/man1/afppasswd.1
 097|rm -r debian/netatalk/usr/include
*098|rm -r debian/netatalk/usr/share/aclocal
*099|#rm -r debian/netatalk/var
 100|#rm debian/netatalk/usr/lib/netatalk/*.la

パッチ適用済み"control"(抜粋)。

 006|Build-Depends: autotools-dev,
 007| cdbs (>= 0.4.72~),
 008| devscripts,
 009| debhelper,
 010| dh-buildinfo,
*011| libltdl3-dev,
*012| d-shlibs,
 013| libssl-dev,
*014| libgcrypt11-dev,
*015| libkrb5-dev,
*016| libpam0g-dev,
*017| libwrap0-dev,
*018| libdb-dev,
 019| libmysqlclient-dev,
 020| libavahi-client-dev,
*021| libacl1-dev,
*022| libldap2-dev,
*023| libcrack2-dev,
*024| systemtap-sdt-dev,
*025| libdbus-1-dev,
*026| libdbus-glib-1-dev,
*027| libglib2.0-dev,
*028| tracker,
*029| libtracker-sparql-0.16-dev,
 030| libtracker-miner-0.16-dev,
 031| hardening-includes
[amazonjs asin="4877833579" locale="JP"]

Posted by お市のかた