Installing Debianized Netatalk 3.0 beta2 on Ubuntu 10.04[EDITED]
Netatalk 3.0beta2 has just released.
I tried to install it by below steps.
- Debianize Netatalk 3.0 beta2 (to make .deb package)
- Build it
- Install it
I am not a Debian developer, so this Debinaizing process may not exact. But the .deb package works well. If you have any comments, please leave it.
I will start to describe these steps, I add a prompt where I am. If there is not any directory, it can take any where.
- [work dir]$ … working directory, such as “~/work/netatalk/netatalk_3.0beta2-dpkg
- [pkg dir]$ … source netatalk package directory. In this time, it is “~/work/netatalk/netatalk_3.0beta2-dpkg/netatalk-3.0beta2"
My test environment is below:
- Server
- PowerMac G4/MDD
- Ubuntu 10.04 (EA, ACL, LDAP are installed)
- Client A
- iMac (mid 2007)
- OS X 10.6.8 Snow Leopard (LDAP is setuped)
- Client B
- Macbook Pro (early 2011)
- OS X 10.7.4 Lion
0. Preparing
If you installed old netatalk, you should uninstall it. It may cause some troubles.
To uninstall netatalk, you have some way.
If you have installed netatalk by Synapic or apt-get install, you can choose below:
- Synaptic package manager
- apt-get remove / purge
If you have installed netatalk from original source package, you can uninstall below:
$ cd ~/src/netatalk-*/ $ sudo make uninstall
1. Debianize Netatalk 3.0 beta2 (to make .deb package)
- Install packages to build Debian package
- Download and extract Netatalk tar ball
- Download and extract debian package of netatalk 2.2.2
- Make a Debian package
- Edit files in the package
- Install related packages
1.1 Install packages to build Debian package
Install below packages to build and make a Debian package.
- dpkg-dev
- fakeroot
- dh-make
$ sudo apt-get install dpkg-dev fakeroot $ sudo apt-get install build-essential $ sudo apt-get install dh-make
1.2 Download and extract Netatalk tar ball
Download the original Netatalk source tar ball.
[work dir]$ wget http://sourceforge.net/projects/netatalk/files/netatalk/3.0/netatalk-3.0beta2.tar.bz2 [work dir]$ tar xvjf netatalk-3.0beta2.tar.bz2
1.3 Download and extract debian package of netatalk 2.2.2
Click a triangle sign at 2.2.2-1, then download netatalk_2.2.2-1.debian.tar.gz.
[work dir]$ wget https://launchpad.net/ubuntu/+archive/primary/+files/netatalk_2.2.2-1.debian.tar.gz [work dir]$ tar xvzf netatalk_2.2.2-1.debian.tar.gz
1.4 Make a Debian package
This step is main part of this article.
- Make “debian" directry by dh_make
- Overwrite files by 2.2.2-1 files
1.4.1 Make “debian" directry by dh_make
[work dir]$ ls
debian netatalk-3.0beta2 netatalk-3.0beta2.tar.bz2 netatalk_2.2.2-1.debian.tar.gz
[work dir]$ cd netatalk-3.0beta2
[pkg dir]$ dh_make --createorig --single
ldap_sasl_interactive_bind_s: Local error (-2)
additional info: SASL(0): successful result:
Maintainer name : Foo Bar
Email-Address : foo@unknown
Date : Sat, 26 May 2012 00:02:03 +0900
Package Name : netatalk
Version : 3.0beta2
License : blank
Using dpatch : no
Using quilt : no
Type of Package : Single
Hit <enter> 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.
1.4.2 Overwrite files by 2.2.2-1 files
[pkg dir]$ cp -p ../debian/rules debian/rules [pkg dir]$ cp -p ../debian/control debian/control
1.5 Edit the package
This is the most important step.
- Edit [pkg dir]/debian/rules (configure option)
- Edit [pkg dir]/debian/shlibs.local (library dependency)
- Edit [pkg dir]/debian/rules (cheats)
- Edit [pkg dir]/debian/rules (other changes)
1.5.1 Edit [pkg dir]/debian/rules (configure option)
configure option is changed on Netatalk 3.0, so you have to change rules file.
DEB_CONFIGURE_EXTRA_FLAGS := \
--with-shadow --enable-fhs \
--enable-overwrite \
--enable-krbV-uam \
--with-libgcrypt-dir \
--with-cracklib=/var/cache/cracklib/cracklib_dict \
--enable-zeroconf \
--with-init-style=debian
1.5.2 Edit [pkg dir]/debian/shlibs.local (library dependency)
This file is written about library dependencies. If there is not this file, you will occur below error.
dpkg-shlibdeps: error: no dependency information found for /usr/lib/libatalk.so.0 (used by debian/netatalk/usr/sbin/cnid_dbd).
To resolve this, I add a file “debian/shlibs.local".
libatalk 0 libdb-dev
This may not exact dependency, but it is enough to build this package.
1.5.3 Edit [pkg dir]/debian/rules (a cheat)
The standard Ubuntu 10.04 cannot satisfy a package “cdbs (>= 0.4.72~)" defined in debian/control.
You have two way to resolve this problem.
- To use unofficial Ubuntu PPA
- Ignoring requirement
If you choose “Ignoring requirement", you have to edit debian/rules. (not debian/control) Add “#" at the top of line.
#include /usr/share/cdbs/1/rules/upstream-tarball.mk
And add a build option when build.
This article this way.
1.5.4 Edit [pkg dir]/debian/rules (other changes)
#rm debian/netatalk/usr/lib/libatalk.*
It is need to invoke netatalk service.
You can download the patch files for debian/rules.
[pkg dir]$ gzip -dc debian-rules.patch_.gz | patch debian/rules
1.6 Install related packages
Install other packages described in debian/control.
$ 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
2. Build it
You can start to build by this command.
[pkg dir]$ dpkg-buildpackage -us -uc -rfakeroot -d
It takes time for a while.
“-us -uc" option is for no sign, so you are prohibited to upload this package.
“-d" option is for ignoring dependency.
Then you can find .deb packages in the [work dir].
[work dir]$ ls netatalk-3.0beta2 netatalk_3.0beta2-1.dsc netatalk-3.0beta2.tar.bz2 netatalk_3.0beta2-1_powerpc.changes netatalk_2.2.2-1.debian.tar.gz netatalk_3.0beta2-1_powerpc.deb netatalk_3.0beta2-1.diff.gz netatalk_3.0beta2.orig.tar.gz
3. Install it
If you have not run avahi-daemon yet, start it.
$ sudo service avahi-daemon start avahi-daemon start/running, process 17177
Finally you can install Netatalk 3.0 beta2. And check the configuration.
[work dir]$ sudo dpkg -i netatalk_3.0beta2-1_powerpc.deb $ sudo service netatalk stop $ /usr/sbin/afpd -V afpd 3.0beta2 - 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 CNID backends: dbd last tdb 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 afp.conf: /etc/netatalk/afp.conf state directory: /var/netatalk/ afp_signature.conf: /var/netatalk/afp_signature.conf afp_voluuid.conf: /var/netatalk/afp_voluuid.conf UAM search path: /usr/lib/netatalk/ Server messages path: /etc/netatalk/msg/
After that change the “/etc/netatalk/afp.conf". Below is an example.
;
; Netatalk 3.x configuration file
;
[Global]
vol preset = default_for_all_volumes
log level = default:note
log file = /var/log/netatalk.log
[default_for_all_volumes]
file perm = 0600
directory perm = 0700
[Homes]
basedir regex = /home
[MY_TIMEMACHINE]
path = /afp/time_capsule
time machine = yes
vol size limit = 1024
[Shared]
path = /afp/shared
file perm = 0666
directory perm = 0777
Finally you can start netatalk service.
$ sudo service netatalk start Starting Netatalk services: netatalk.
Then check behavior the netatalk.
To find the server from finder | Mac OS X 10.6.8 | OS X 10.7.4 |
---|---|---|
To find the server from finder | OK | OK |
To make a folder | OK | OK |
To copy a file from Mac to Ubuntu | OK | OK |
To copy a file from Ubuntu to Mac | OK | OK |
Permission of the copied file | OK | OK |
Time stamp of the copied file | OK | OK |
File extended attributes | OK | OK (*) |
Special characters such as “:" | OK | OK |
Long file name | OK | OK |
Backup by TimeMachine | OK | OK |
File extended attributes are different between Mac and Ubuntu.
Mac
$ xattr ScreenShot.png com.apple.FinderInfo com.apple.metadata:kMDItemIsScreenCapture com.apple.metadata:kMDItemScreenCaptureType
Ubuntu
$ getfattr ScreenShot.png # file: Screen Shot 2012-06-02 at 0.46.46.png user.com.apple.metadata:kMDItemIsScreenCapture user.com.apple.metadata:kMDItemScreenCaptureType user.org.netatalk.Metadata
Is it OK? I don’t know…
(EDITED 2012-06-03 03:36 It is OK. “com.apple.FinderInfo" is written in “user.org.netatalk.Metadata" by netatalk. See HAT’s comments.)
If you want to uninstall netatalk, you can use following way.
$ sudo dpkg --purge netatalk
Don’t forget to backup /etc/netatalk/afp.conf, if necessary.
(EDITED 2012-06-16 15:13)
The install path “/etc/netatalk" may be changed next version.
(EDITED 2012-07-08 23:25)
“–enable-fhs" may have bugs. It will be rewritten, then “/etc/netatalk/afp.conf" and “/etc/netatalk/msg" will be moved.
- /etc/netatalk/afp.conf –> /etc/afp.conf
- /etc/netatalk/msg –> /var/netatalk/msg
One more thing. It is about the file extended attributes.
The name of the file extended attributes are different between Mac and Ubuntu. But they are same.
HAT taught me its meaning by comments.
OS X | netatalk | |
---|---|---|
File Extended Attribute | com.apple.FinderInfo | user.org.netatalk.Metadata |
“user.org.netatalk.Metadata" is copy of “com.apple.FinderInfo". “user.org.netatalk.Metadata" contains “com.apple.FinderInfo" as an AppleDouble format. This is implemented from netatalk 3.0.
“com.apple.FinderInfo" was stored in the “.AppleDouble/FILE" until netatalk 2.x.
You can check the contents of “user.org.netatalk.Metadata" by “apple_dump" command on netatalk. It dumps AppleSingle/AppleDouble format file.
(EDITED 2012-07-11 00:10)
Revised the description of the file extended attribute.
[References]
- Netatalk 3.0 and Samba (In Japanese)
- Howto build a trivial Debian package with dh_make « I Might Be Wrong
- Chapter 4. Required files under the debian directory
- Debian Source Packaging Recipe
- ThinkPad X100e で動画再生支援 « chocokanpan BLOG (In Japanese)
- useful dh_shlibdeps arguments — matt vs world
ディスカッション
Finder Infoはuser.org.netatalk.Metadataの中にAppleDoubleフォーマットで入っています。
これはapple_dumpコマンドで確認できます。
HATさんへ、いつもコメントありがとうございます。
“com.apple.FinderInfo”と同等の内容が”user.org.netatalk.Metadata”に入っていると言う事ですね?
どーもです。今、寝る前にメールチェックしてapple_dumpのバグの件を読みました。
スペースの直前にバックスラッシュ入れろってことですね。明日なんとかします。
FILEのFinder Infoは、
Mac上では、拡張属性com.appleFinderInfoとして見える。
2.x迄は.AppleDouble/FILEという名称のAppleDoubleファイル内に保管していた。
3.0では、このAppleDoubleファイルをそっくりuser.org.netatalk.Metadataに移動した。
従って、urser.org.netatalk.Metadata内にFinder Infoが入っている。
HATさんへ、再びコメントありがとうございます。
はい、apple_dumpは、その通りです。間違って、2通メールを送っちゃいました…。
Finder Infoの件ありがとうございます。
しばらく前のメールで、「com.apple.FinderInfoに保存しないか?」と言う件が、これだったのですね?
Hey, thanks a lot for the article, it was very helpful in getting netatalk 3 compiled on my NAS. Would it be possible to provide a summarized translation of the comments above about the extended attributes support? Thanks again!
Hello Gray, thank you for your comments. I am delighted that my article helps you.
Yes, I can summarize and translate the comments about the extended attributes. Would you wait for a while? Thank you.
Yup, take your time. Thanks!
Hi Gray, I added a summary of comments. Would you check the end of the article? And take care the description of the installation paths. (EDITED 2012-07-08 23:25)
Thank you.
Thanks again! Also I’m guessing you are aware but they released the stable version of 3.0 just recently! No more beta.
Hi Gray, I have already written the article. Please see it.
Installing Debianized Netatalk 3.0 on Ubuntu 10.04 : プラスα空間