[mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(2/3)

カテゴリ: Apple,Linux,mac入門記 / author: uechoco / 2009年08月16日 22:20:17
この記事を読む時間:2718くらい

前回は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を用いることにしました。イメージとしては下図のような感じです。
netatalk7_netatalk_vs_samba

[mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(1/3)

では、インストール開始です。

netatalkはFedora Core用のrpmパッケージは用意してありますが、CentOS用のはありません。CentOSではソースコードからインストールするのもいいのですが、FeforeCore用のSRPMから設定を変えてインストールする方法がよくあるそうです。まずはNetatalk RPM配布所にアクセスして、最新のSRPMをダウンロードしてきます。私の場合は2.1.0-0.1.44.dev.fc11というバージョンでした。

Bash:
  1. # 適当なディレクトリにnetatalkのSRPMをダウンロード
  2. cd ~/src
  3. wget http://ohkawa.biz/Linux/11/SRPMS/netatalk-2.1.0-0.1.41.dev.fc11.src.rpm
  4. # root権限でRPMを展開
  5. su
  6. rpm -ivh netatalk-2.1.0-0.1.41.dev.fc11.src.rpm

するとエラーが発生しました。

TEXT:
  1. エラー: %sourcedir を /usr/src/redhat/SOURCES に作成できません。

どうやら、rpmのビルドに必要なパッケージが不足しているらしいです。サーバ設定手順・パソコントラブル解決・エラー解決・コマンド集・プログラミング/「GOBU」(ゴブ)を参考に、足りないパッケージをインストールします。

Bash:
  1. # 足りないパッケージをインストール
  2. rpm -qa | grep ^rpm
  3. yum install rpm-build
  4. # 再チャレンジ
  5. rpm -ivh netatalk-2.1.0-0.1.41.dev.fc11.src.rpm

こんどはうまくいきました。

TEXT:
  1. [root@localhost src]# rpm -ivh netatalk-2.1.0-0.1.41.dev.fc11.src.rpm
  2.        1:netatalk               ########################################### [100%]

RPMを展開した状態で、設定を変更せずにいきなりビルドしてみるとこうなります。

Bash:
  1. # 試しにビルドしてみる
  2. rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec

TEXT:
  1. エラー: ビルド依存性の失敗:
  2.             libtool は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
  3.             automake は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
  4.             pam-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
  5.             cups-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
  6.             quota-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
  7.             cracklib-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています
  8.             tcp_wrappers-devel は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています

わけもわからず、一通りの足りないパッケージをインストールしてみました。

Bash:
  1. yum install libtool automake pam-devel cups-devel quota-devel cracklib-devel tcp_wrappers-devel

TEXT:
  1. Loaded plugins: fastestmirror
  2.     Loading mirror speeds from cached hostfile
  3.      * updates: ftp.iij.ad.jp
  4.     Setting up Install Process
  5.     Parsing package install arguments
  6.     No package quota-devel available.
  7.     No package cracklib-devel available.
  8.     No package tcp_wrappers-devel available.
  9.     Resolving Dependencies
  10.     --> Running transaction check
  11.     ---> Package automake.noarch 0:1.9.6-2.1 set to be updated
  12.     ---> Package cups-devel.i386 1:1.3.7-8.el5_3.6 set to be updated
  13.     --> Processing Dependency: gnutls-devel for package: cups-devel
  14.     ---> Package libtool.i386 0:1.5.22-6.1 set to be updated
  15.     ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
  16.     --> Running transaction check
  17.     ---> Package gnutls-devel.i386 0:1.4.1-3.el5_2.1 set to be updated
  18.     --> Finished Dependency Resolution
  19.    
  20.     Dependencies Resolved
  21.    
  22.     ================================================================================
  23.      Package            Arch         Version                    Repository     Size
  24.     ================================================================================
  25.     Installing:
  26.      automake           noarch       1.9.6-2.1                  base          484 k
  27.      cups-devel         i386         1:1.3.7-8.el5_3.6          updates        72 k
  28.      libtool            i386         1.5.22-6.1                 base          680 k
  29.      pam-devel          i386         0.99.6.2-4.el5             base          186 k
  30.     Installing for dependencies:
  31.      gnutls-devel       i386         1.4.1-3.el5_2.1            base          919 k
  32.    
  33.     Transaction Summary
  34.     ================================================================================
  35.     Install      5 Package(s)        
  36.     Update       0 Package(s)        
  37.     Remove       0 Package(s)        
  38.    
  39.     Total download size: 2.3 M
  40.     Is this ok [y/N]: y
  41.     Downloading Packages:
  42.     (1/5): cups-devel-1.3.7-8.el5_3.6.i386.rpm               |  72 kB     00:00    
  43.     (2/5): pam-devel-0.99.6.2-4.el5.i386.rpm                 | 186 kB     00:00    
  44.     (3/5): automake-1.9.6-2.1.noarch.rpm                     | 484 kB     00:00    
  45.     (4/5): libtool-1.5.22-6.1.i386.rpm                       | 680 kB     00:00    
  46.     (5/5): gnutls-devel-1.4.1-3.el5_2.1.i386.rpm             | 919 kB     00:00    
  47.     --------------------------------------------------------------------------------
  48.     Total                                           1.1 MB/s | 2.3 MB     00:02    
  49.     Running rpm_check_debug
  50.     Running Transaction Test
  51.     Finished Transaction Test
  52.     Transaction Test Succeeded
  53.     Running Transaction
  54.       Installing     : gnutls-devel                                      [1/5]
  55.       Installing     : automake                                          [2/5]
  56.       Installing     : libtool                                           [3/5]
  57.       Installing     : cups-devel                                        [4/5]
  58.       Installing     : pam-devel                                         [5/5]
  59.    
  60.     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
  61.     Dependency Installed: gnutls-devel.i386 0:1.4.1-3.el5_2.1
  62.     Complete!

どうやら、quota-devel、cracklib-devel、tcp_wrappers-develはパッケージとしてないようです。どうやらFedoreCore用のパッケージしか配布されていないようです。しかしながら、これらのパッケージはインストールする必要はなく、別のパッケージが必要なようです。どうしてそういえるのかというと、netatalk.specファイル内に、「CentOSだったら、このパッケージ名はこのパッケージに変更するように」といったコメントがいくつかあるからです。netatalk.specファイルの変更箇所は、まずは2カ所です。

Bash:
  1. vim /usr/src/redhat/SPECS/netatalk.spec

TEXT:
  1. # If you use CentOS, remove tcp_wrappers-libs
  2.     Requires: pam cracklib openssl cups-libs krb5-libs db4 perl libgcrypt tcp_wrappers tcp_wrappers-libs
  3. という文字列があるので、コメントの指示に従って、以下のように変更
  4.     Requires: pam cracklib openssl cups-libs krb5-libs db4 perl libgcrypt tcp_wrappers

TEXT:
  1. # If you use Fedora 9 or earlier, replace
  2.     #   quota-devel -> quota
  3.    
  4.     # If you use CentOS, replace
  5.     #   quota-devel -> quota
  6.     #   cracklib-devel -> cracklib
  7.     #   tcp_wrappers-devel -> tcp_wrappers
  8.    
  9.     BuildRequires: pam libtool automake autoconf openssl-devel pam-devel cups-devel db4-devel krb5-devel libgcrypt-devel quota-devel cracklib-devel tcp_wrappers-devel
  10. という文字列があるので、コメントの指示に従って、以下のように変更
  11.     BuildRequires: pam libtool automake autoconf openssl-devel pam-devel cups-devel db4-devel krb5-devel libgcrypt-devel quota cracklib tcp_wrappers

これで、必要なパッケージは全部そろったはずなので、ビルドに再チャレンジします。

Bash:
  1. rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec

すると、今度は、configureの途中で次のようなエラーをはいて止まってしまいました。

TEXT:
  1. checking for Berkeley DB headers in /usr/local/include/... no
  2.     checking for Berkeley DB headers in /usr/local/include/db4.7... no
  3.     checking for Berkeley DB headers in /usr/local/include/db47... no
  4.     checking for Berkeley DB headers in /usr/local/include/db4.6... no
  5.     checking for Berkeley DB headers in /usr/local/include/db46... no
  6.     checking for Berkeley DB headers in /usr/local/include/db4.5... no
  7.     checking for Berkeley DB headers in /usr/local/include/db45... no
  8.     checking for Berkeley DB headers in /usr/local/include/db4.4... no
  9.     checking for Berkeley DB headers in /usr/local/include/db44... no
  10.     checking for Berkeley DB headers in /usr/local/include/db4... no
  11.     checking for Berkeley DB headers in /usr/include/... yes
  12.     checking /usr/include//db.h version>= 4.4.0... no
  13.     checking for Berkeley DB headers in /usr/include/db4.7... no
  14.     checking for Berkeley DB headers in /usr/include/db47... no
  15.     checking for Berkeley DB headers in /usr/include/db4.6... no
  16.     checking for Berkeley DB headers in /usr/include/db46... no
  17.     checking for Berkeley DB headers in /usr/include/db4.5... no
  18.     checking for Berkeley DB headers in /usr/include/db45... no
  19.     checking for Berkeley DB headers in /usr/include/db4.4... no
  20.     checking for Berkeley DB headers in /usr/include/db44... no
  21.     checking for Berkeley DB headers in /usr/include/db4... yes
  22.     checking /usr/include/db4/db.h version>= 4.4.0... no
  23.    
  24.     Make sure you have the required Berkeley DB libraries AND headers installed.
  25.     You can download the latest version from http://www.sleepycat.com.
  26.     If you have installed BDB in a non standard location use the
  27.     --with-bdb=/path/to/bdb configure option and make sure
  28.     your linker is configured to check for libraries there.
  29.     configure: error: Berkeley DB library required but not found!
  30.     エラー: /var/tmp/rpm-tmp.30156 の不正な終了ステータス (%build)
  31.    
  32.    
  33.     RPM ビルドエラー:
  34.         /var/tmp/rpm-tmp.30156 の不正な終了ステータス (%build)

どうやら、Berkeley DBはインストールされている物の、バージョンが古いらしいです。

yum info db4で確認したところ、4.3.29がインストールされており、netatalkに必要な4.4以降という条件を満たしていないようです。ということで、OracleのWebサイトから、最新のBerkeley DB 4.7をダウンロードし、コンパイルします。

Bash:
  1. cd ~/src
  2. wget http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
  3. tar zxvf db-4.7.25.tar.gz
  4. cd db-4.7.25/build_unix/
  5. ../dist/configure
  6. make
  7. sudo make install

ソースコードからインストールしたBerkeleyDBは通常とは違う場所にインストールされるため、specファイルにBerkeleyDBの場所を通知します。

Bash:
  1. vim /usr/src/redhat/SPECS/netatalk.spec

configureのオプションのところに、BerkeleyDBのパスを追記します。

TEXT:
  1. %configure \
  2.         --with-pkgconfdir=%{_sysconfdir}/atalk \
  3.         --with-cracklib \
  4.         --with-pam \
  5.         --with-shadow \
  6.         --with-uams-path=%{_libdir}/atalk \
  7.         --enable-shared \
  8.         --enable-krbV-uam \
  9.         --enable-overwrite \
  10.         --with-gnu-ld \
  11.         --enable-redhat \
  12.         --disable-srvloc \
  13.         --enable-cups \
  14.         --libexec=%{_libexecdir}/atalk \ # 末尾追記
  15.         --with-bdb=/usr/local/BerkeleyDB.4.7 # 追記

再び、root権限に戻って、ビルドします。

Bash:
  1. su
  2. rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec

何事もなく終了し、これでようやくrpmパッケージがビルドできそうです。

早速rpmをインストールしてみます。

Bash:
  1. su
  2. rpm -Uvh /usr/src/redhat/RPMS/i686/netatalk-2.1.0-0.1.41.dev.i686.rpm

すると、またもやエラーでした。

TEXT:
  1. エラー: 依存性の欠如:
  2.             libdb-4.7.so は netatalk-2.1.0-0.1.41.dev.i686 に必要とされています

どうやらインストールしたBerkeleyDBのライブラリファイルにパスが通ってないようです。適当に、コピーしておきます。

Bash:
  1. # BerkeleyDBのライブラリを/libにでもコピーしておく
  2. cp /usr/local/BerkeleyDB.4.7/lib/libdb-4.7.so /lib

再度rpmのインストール

Bash:
  1. rpm -Uvh --nodeps /usr/src/redhat/RPMS/i686/netatalk-2.1.0-0.1.41.dev.i686.rpm
  2. rpm -Uvh /usr/src/redhat/RPMS/i686/netatalk-devel-2.1.0-0.1.41.dev.i686.rpm

今度はうまく行きました。

とりあえず、何も設定を変えずに、デーモンが動くかどうかだけ確かめてみます。

Bash:
  1. # ためしに起動してみる
  2. sudo /etc/init.d/atalk start

TEXT:
  1. Starting AppleTalk services:
  2.       Starting cnid_metad:                                     [  OK  ]
  3.       Starting afpd:                                           [  OK  ]

どうやらインストールは無事に終わったようです。

この時点でMacからアクセスすることも可能かもしれませんが、まだ設定変更をしていないので、保証はできません。次回はnetatalkの設定変更とEclipseの設定変更をして、EclipseからCentOS上のワークスペースを読み込んでみたいと思います。

>> [mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(1/3)

>> [mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(3/3)


コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URI

コメントする

Copyright © 2012 うえちょこ@ぼろぐ. WP Theme created by Web Top.