[mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(2/3)
前回はnetatalkをインストールすることになった経緯とnetatalkの概要を説明したので、今回は実際にnetatalkをCentOSにインストールしてみようかと思います。
と、その前に、前回のおさらい。
現在Windows XPのEclipseは、VMware Sever上のCentOS 5上にワークスペースを作ってそこで開発をしていて、WindowsとCentOS間のファイル共有にはsambaを用いていました。今度開発環境をMacに移すにあたり、Mac OS XのEclipseから、VMware Fusion上のCentOS上のワークスペースにアクセスする訳ですが、Mac OS XとCentOS間のファイル共有にはsambaではイマイチなので、netatalkを用いることにしました。イメージとしては下図のような感じです。
では、インストール開始です。
netatalkはFedora Core用のrpmパッケージは用意してありますが、CentOS用のはありません。CentOSではソースコードからインストールするのもいいのですが、FeforeCore用のSRPMから設定を変えてインストールする方法がよくあるそうです。まずはNetatalk RPM配布所にアクセスして、最新のSRPMをダウンロードしてきます。私の場合は2.1.0-0.1.44.dev.fc11というバージョンでした。
-
# 適当なディレクトリにnetatalkのSRPMをダウンロード
-
cd ~/src
-
wget http://ohkawa.biz/Linux/11/SRPMS/netatalk-2.1.0-0.1.41.dev.fc11.src.rpm
-
# root権限でRPMを展開
-
su
-
rpm -ivh netatalk-2.1.0-0.1.41.dev.fc11.src.rpm
するとエラーが発生しました。
-
エラー: %sourcedir を /usr/src/redhat/SOURCES に作成できません。
どうやら、rpmのビルドに必要なパッケージが不足しているらしいです。サーバ設定手順・パソコントラブル解決・エラー解決・コマンド集・プログラミング/「GOBU」(ゴブ)を参考に、足りないパッケージをインストールします。
-
# 足りないパッケージをインストール
-
rpm -qa | grep ^rpm
-
yum install rpm-build
-
# 再チャレンジ
-
rpm -ivh netatalk-2.1.0-0.1.41.dev.fc11.src.rpm
こんどはうまくいきました。
-
[root@localhost src]# rpm -ivh netatalk-2.1.0-0.1.41.dev.fc11.src.rpm
-
1:netatalk ########################################### [100%]
RPMを展開した状態で、設定を変更せずにいきなりビルドしてみるとこうなります。
-
# 試しにビルドしてみる
-
rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec
-
エラー: ビルド依存性の失敗:
-
libtool は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
-
automake は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
-
pam-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
-
cups-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
-
quota-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
-
cracklib-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
-
tcp_wrappers-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
わけもわからず、一通りの足りないパッケージをインストールしてみました。
-
yum install libtool automake pam-devel cups-devel quota-devel cracklib-devel tcp_wrappers-devel
-
Loaded plugins: fastestmirror
-
Loading mirror speeds from cached hostfile
-
* updates: ftp.iij.ad.jp
-
Setting up Install Process
-
Parsing package install arguments
-
No package quota-devel available.
-
No package cracklib-devel available.
-
No package tcp_wrappers-devel available.
-
Resolving Dependencies
-
--> Running transaction check
-
---> Package automake.noarch 0:1.9.6-2.1 set to be updated
-
---> Package cups-devel.i386 1:1.3.7-8.el5_3.6 set to be updated
-
--> Processing Dependency: gnutls-devel for package: cups-devel
-
---> Package libtool.i386 0:1.5.22-6.1 set to be updated
-
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
-
--> Running transaction check
-
---> Package gnutls-devel.i386 0:1.4.1-3.el5_2.1 set to be updated
-
--> Finished Dependency Resolution
-
-
Dependencies Resolved
-
-
================================================================================
-
Package Arch Version Repository Size
-
================================================================================
-
Installing:
-
automake noarch 1.9.6-2.1 base 484 k
-
cups-devel i386 1:1.3.7-8.el5_3.6 updates 72 k
-
libtool i386 1.5.22-6.1 base 680 k
-
pam-devel i386 0.99.6.2-4.el5 base 186 k
-
Installing for dependencies:
-
gnutls-devel i386 1.4.1-3.el5_2.1 base 919 k
-
-
Transaction Summary
-
================================================================================
-
Install 5 Package(s)
-
Update 0 Package(s)
-
Remove 0 Package(s)
-
-
Total download size: 2.3 M
-
Is this ok [y/N]: y
-
Downloading Packages:
-
(1/5): cups-devel-1.3.7-8.el5_3.6.i386.rpm | 72 kB 00:00
-
(2/5): pam-devel-0.99.6.2-4.el5.i386.rpm | 186 kB 00:00
-
(3/5): automake-1.9.6-2.1.noarch.rpm | 484 kB 00:00
-
(4/5): libtool-1.5.22-6.1.i386.rpm | 680 kB 00:00
-
(5/5): gnutls-devel-1.4.1-3.el5_2.1.i386.rpm | 919 kB 00:00
-
--------------------------------------------------------------------------------
-
Total 1.1 MB/s | 2.3 MB 00:02
-
Running rpm_check_debug
-
Running Transaction Test
-
Finished Transaction Test
-
Transaction Test Succeeded
-
Running Transaction
-
Installing : gnutls-devel [1/5]
-
Installing : automake [2/5]
-
Installing : libtool [3/5]
-
Installing : cups-devel [4/5]
-
Installing : pam-devel [5/5]
-
-
Installed: automake.noarch 0:1.9.6-2.1 cups-devel.i386 1:1.3.7-8.el5_3.6 libtool.i386 0:1.5.22-6.1 pam-devel.i386 0:0.99.6.2-4.el5
-
Dependency Installed: gnutls-devel.i386 0:1.4.1-3.el5_2.1
-
Complete!
どうやら、quota-devel、cracklib-devel、tcp_wrappers-develはパッケージとしてないようです。どうやらFedoreCore用のパッケージしか配布されていないようです。しかしながら、これらのパッケージはインストールする必要はなく、別のパッケージが必要なようです。どうしてそういえるのかというと、netatalk.specファイル内に、「CentOSだったら、このパッケージ名はこのパッケージに変更するように」といったコメントがいくつかあるからです。netatalk.specファイルの変更箇所は、まずは2カ所です。
-
vim /usr/src/redhat/SPECS/netatalk.spec
-
# If you use CentOS, remove tcp_wrappers-libs
-
Requires: pam cracklib openssl cups-libs krb5-libs db4 perl libgcrypt tcp_wrappers tcp_wrappers-libs
-
という文字列があるので、コメントの指示に従って、以下のように変更
-
Requires: pam cracklib openssl cups-libs krb5-libs db4 perl libgcrypt tcp_wrappers
-
# If you use Fedora 9 or earlier, replace
-
# quota-devel -> quota
-
-
# If you use CentOS, replace
-
# quota-devel -> quota
-
# cracklib-devel -> cracklib
-
# tcp_wrappers-devel -> tcp_wrappers
-
-
BuildRequires: pam libtool automake autoconf openssl-devel pam-devel cups-devel db4-devel krb5-devel libgcrypt-devel quota-devel cracklib-devel tcp_wrappers-devel
-
という文字列があるので、コメントの指示に従って、以下のように変更
-
BuildRequires: pam libtool automake autoconf openssl-devel pam-devel cups-devel db4-devel krb5-devel libgcrypt-devel quota cracklib tcp_wrappers
これで、必要なパッケージは全部そろったはずなので、ビルドに再チャレンジします。
-
rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec
すると、今度は、configureの途中で次のようなエラーをはいて止まってしまいました。
-
checking for Berkeley DB headers in /usr/local/include/... no
-
checking for Berkeley DB headers in /usr/local/include/db4.7... no
-
checking for Berkeley DB headers in /usr/local/include/db47... no
-
checking for Berkeley DB headers in /usr/local/include/db4.6... no
-
checking for Berkeley DB headers in /usr/local/include/db46... no
-
checking for Berkeley DB headers in /usr/local/include/db4.5... no
-
checking for Berkeley DB headers in /usr/local/include/db45... no
-
checking for Berkeley DB headers in /usr/local/include/db4.4... no
-
checking for Berkeley DB headers in /usr/local/include/db44... no
-
checking for Berkeley DB headers in /usr/local/include/db4... no
-
checking for Berkeley DB headers in /usr/include/... yes
-
checking /usr/include//db.h version>= 4.4.0... no
-
checking for Berkeley DB headers in /usr/include/db4.7... no
-
checking for Berkeley DB headers in /usr/include/db47... no
-
checking for Berkeley DB headers in /usr/include/db4.6... no
-
checking for Berkeley DB headers in /usr/include/db46... no
-
checking for Berkeley DB headers in /usr/include/db4.5... no
-
checking for Berkeley DB headers in /usr/include/db45... no
-
checking for Berkeley DB headers in /usr/include/db4.4... no
-
checking for Berkeley DB headers in /usr/include/db44... no
-
checking for Berkeley DB headers in /usr/include/db4... yes
-
checking /usr/include/db4/db.h version>= 4.4.0... no
-
-
Make sure you have the required Berkeley DB libraries AND headers installed.
-
You can download the latest version from http://www.sleepycat.com.
-
If you have installed BDB in a non standard location use the
-
--with-bdb=/path/to/bdb configure option and make sure
-
your linker is configured to check for libraries there.
-
configure: error: Berkeley DB library required but not found!
-
エラー: /var/tmp/rpm-tmp.30156 の不正な終了ステータス (%build)
-
-
-
RPM ビルドエラー:
-
/var/tmp/rpm-tmp.30156 の不正な終了ステータス (%build)
どうやら、Berkeley DBはインストールされている物の、バージョンが古いらしいです。
yum info db4で確認したところ、4.3.29がインストールされており、netatalkに必要な4.4以降という条件を満たしていないようです。ということで、OracleのWebサイトから、最新のBerkeley DB 4.7をダウンロードし、コンパイルします。
-
cd ~/src
-
wget http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
-
tar zxvf db-4.7.25.tar.gz
-
cd db-4.7.25/build_unix/
-
../dist/configure
-
make
-
sudo make install
ソースコードからインストールしたBerkeleyDBは通常とは違う場所にインストールされるため、specファイルにBerkeleyDBの場所を通知します。
-
vim /usr/src/redhat/SPECS/netatalk.spec
configureのオプションのところに、BerkeleyDBのパスを追記します。
-
%configure \
-
--with-pkgconfdir=%{_sysconfdir}/atalk \
-
--with-cracklib \
-
--with-pam \
-
--with-shadow \
-
--with-uams-path=%{_libdir}/atalk \
-
--enable-shared \
-
--enable-krbV-uam \
-
--enable-overwrite \
-
--with-gnu-ld \
-
--enable-redhat \
-
--disable-srvloc \
-
--enable-cups \
-
--libexec=%{_libexecdir}/atalk \ # 末尾追記
-
--with-bdb=/usr/local/BerkeleyDB.4.7 # 追記
再び、root権限に戻って、ビルドします。
-
su
-
rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec
何事もなく終了し、これでようやくrpmパッケージがビルドできそうです。
早速rpmをインストールしてみます。
-
su
-
rpm -Uvh /usr/src/redhat/RPMS/i686/netatalk-2.1.0-0.1.41.dev.i686.rpm
すると、またもやエラーでした。
-
エラー: 依存性の欠如:
-
libdb-4.7.so は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
どうやらインストールしたBerkeleyDBのライブラリファイルにパスが通ってないようです。適当に、コピーしておきます。
-
# BerkeleyDBのライブラリを/libにでもコピーしておく
-
cp /usr/local/BerkeleyDB.4.7/lib/libdb-4.7.so /lib
再度rpmのインストール
-
rpm -Uvh --nodeps /usr/src/redhat/RPMS/i686/netatalk-2.1.0-0.1.41.dev.i686.rpm
-
rpm -Uvh /usr/src/redhat/RPMS/i686/netatalk-devel-2.1.0-0.1.41.dev.i686.rpm
今度はうまく行きました。
とりあえず、何も設定を変えずに、デーモンが動くかどうかだけ確かめてみます。
-
# ためしに起動してみる
-
sudo /etc/init.d/atalk start
-
Starting AppleTalk services:
-
Starting cnid_metad: [ OK ]
-
Starting afpd: [ OK ]
どうやらインストールは無事に終わったようです。
この時点でMacからアクセスすることも可能かもしれませんが、まだ設定変更をしていないので、保証はできません。次回はnetatalkの設定変更とEclipseの設定変更をして、EclipseからCentOS上のワークスペースを読み込んでみたいと思います。
