[Mac][Eclipse]Pleiades入り本体のアップデートすると起動に失敗する時の対処法

Written by uechoco 11月 08

[mac]eclipseインストールとpleiadesで日本語化というMacのEclipseにPleiadesを導入する記事を書いてるくらいなので、現在使用中のEclipse 3.5にもPleiadesが適用されていますが、たまにトラブルが起きたりします。今回のトラブルは、何らかの、特にElipseコア系のソフトウェアアップデートをした後に、Eclipseが起動しなくなってしまうという現象です。案の定、Pleiadesがトラブルを起こしているのですが、私の場合の現象と解決策を残しておきます。

まず、Eclipseソフトウェアアップデートした後、再起動を促されますので再起動をします。そうすると、スプラッシュ画像の直後にダイアログが出て、「起動失敗したから、logファイルにエラー状況書き込んどいたよ」的な英語が書かれています。Pleiadesの説明書にも書いてありますが、Eclipseソフトウェアアップデートの直後は、必ず1回だけEclipseを-cleanオプションで起動させなければいけません。ターミナルなどで/Application/Eclipseに移動し、eclipse -cleanとコマンドを打つことでPleiadesがクリーン起動します。

通常なら、次回以降の起動はEclipse.appのダブルクリックで済むのですが、たまに前述の起動エラーが続くときがあります。その場合、クリーン起動なら正常起動できるのに、-cleanを付けない通常起動だとどうしても起動エラーになってしまいました。困っていたときに、Pleiadesのreadmeをくまなく読んでいると、強制終了が続く場合、-clean起動の後、configuration/jp.sourceforge.mergedoc.pleiades/ ディレクトリを削除すると直るかもしれないと書いてありました。試しにやってみたら、本当に直りました。

というわけで、Pleiadesでトラブルが起きたら、readmeをくまなく見て、解決策を探してみるのがいいでしょう。起動エラーが続く場合は今回の記事のような対応が書かれています。

[eclipse]YAML編集プラグインyedit(*.yml/*.yaml)

Written by uechoco 10月 25

symfony開発のために、EclipseにYAMLファイルの編集プラグインが入ってなかったので入れてみました。

候補としては、[eclipse]YAMLエディター – hello,worldに紹介されているyamleditoryeditです。

yamleditorは1年以上更新されていないのですが、yeditは現在進行形で開発されているようなので、yeditにしました。Eclipse 3.4と3.5に対応しているようです。インストール後に設定画面でエディターのファイルの関連付けを確認してみると、*.ymlと*.yamlの両方が関連づけられていました。YAMLハイライト見やすいな。

基本的に問題ないのですが、たまに変なところでSyntax Errorはいたりするのはなんでだろう。まーそのうち改善されるかな?

[Mac]netatalkの.AppleDoubleでsymfonyコマンドがつまずく時がある

Written by uechoco 9月 13

タイトルでもわかるとおり、非常に限定的な環境でsymfonyを使ったときにハマってしまったので、今後、私と同じようなマニアックな環境でハマってしまった人がググってくれることを期待して備忘録を残します。

さて、私はMac OS X上にVMware Fusion 2を導入していて、会社での開発をVM上のCentOS 5で行っています。開発ではMacのCocoaに対応したEclipse 3.5を主にしようしています。EclipseでVM上のファイルを直接読み書きするため、netatalkというMac版sambaとも言えるソフトウェアをCentOSに導入して、MacとLinux間の共有を行っています。ここら辺のお話は、以前3回に渡って書いたnetatalk導入のブログの記事を参照してもらえればと思います。

Mac OS Xでで外部ストレージ(NFS)などを用いるとき、ファイルのメタ情報を保存するために、netatalkでは.AppleDoubleというフォルダを各フォルダごとに生成し、そのフォルダの中に元ファイル名と同名のファイル名でメタ情報を格納します。※WikipediaのAppleSingleにAppleDoubleについて記載があります。netatalkではnoadoubleというオプションがあり、「必要なければ.AppleDoubleを作らない」という設定にすることができるのですが、必要ある場合は当然作成されてしまいます。例えば、Eclipseからアクセスして保存とかをすると、.AppleDoubleが作られてしまうような気がします。

CentOS上にsymfonyを展開してMacからターミナルで操ろうとしたとき、基本的にはsymfonyのあの深いフォルダ階層のすべてに.AppleDoubleが生成されてしまうということです。そこでこまったのがsymfonyコマンド。propel:build-xxxとかやろうとすると、どうも.AppleDoubleのせいでうまくいかないことがあります。

例えばpropel:build-model

Bash:
  1. [ueno@localhost project]$ ./symfony propel:build-model
  2.   Unable to parse file "/path/to/project/config/.AppleDouble/schema.yml": Unable to parse line 1 (

なぜか.AppleDoubleフォルダ内のshema.ymlがパースできないと言われてしまいます。前述の通り、.AppleDoubleフォルダの中に元ファイル名と同名のメタファイルを生成しますので、もしかしたらschema.ymlという名前に反応してしまったのかもしれません。一応propel:build-modelのヘルプを見てみましょう。

Bash:
  1. [ueno@localhost project]$ ./symfony help propel:build-model
  2. Usage:
  3.  symfony propel:build-model [--phing-arg="..."]
  4.  
  5. Aliases: propel-build-model
  6.  
  7. Options:
  8.  --phing-arg  Arbitrary phing argument (multiple values allowed)
  9.  
  10. Description:
  11.  The propel:build-model task creates model classes from the schema:
  12.  
  13.    ./symfony propel:build-model
  14.  
  15.  The task read the schema information in config/*schema.xml and/or
  16.  config/*schema.yml from the project and all installed plugins.
  17.  
  18.  You mix and match YML and XML schema files. The task will convert
  19.  YML ones to XML before calling the Propel task.
  20.  
  21.  The model classes files are created in lib/model.
  22.  
  23.  This task never overrides custom classes in lib/model.
  24.  It only replaces files in lib/model/om and lib/model/map.

検索条件はconfig/*schema.ymlと書いてありますので、フォルダも引っかかってしまうようです。

で解決策はどうするのか?propel:build-xxx系のコマンドなどでは、symfonyライブラリの中に含まれるsfFinder.class.phpというユーティリティを利用しています。この中に、指定されたルールに基づいて、ファイルやディレクトリを検索するというin()メソッドがあるのですが、この中で、バージョン管理ソフトのディレクトリを無視するようなプログラムの掛かれば部分があります。symfony 1.2.8のlib/symfony/util/sfFinder.class.phpの341行目付近です。

php:
  1. /**
  2.    * Searches files and directories which match defined rules.
  3.    *
  4.    * @return array list of files and directories
  5.    */
  6.   public function in()
  7.   {
  8.     $files    = array();
  9.     $here_dir = getcwd();
  10.  
  11.     $finder = clone $this;
  12.  
  13.     if ($this->ignore_version_control)
  14.     {
  15.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg');
  16.  
  17.       $finder->discard($ignores)->prune($ignores);
  18.     }

svnやらcvsやらgitやらのメタ情報を保存するフォルダの除外指定が列挙されています。ならばここにAppleDoubleをいれればいいんでないか?ということで、修正多野がこちら

php:
  1. if ($this->ignore_version_control)
  2.     {
  3.       $ignores = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.AppleDouble');
  4.  
  5.       $finder->discard($ignores)->prune($ignores);
  6.     }

symfonyのコアを書き換えるのはどうかと思ったのですが、この設定を付け加えるだけでnetatalk環境でのsymfonyコマンドが問題なく使えるようになったので開発が進みそうです。

まぁ、こんな環境でsymfony使う人はなかなか居ないと思いますが。。。

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

Written by uechoco 8月 17

前回はCentOSにnetatalkをインストールしたので、今回はnetatalkの設定と、Mac上のEclipseからCentOSにアクセスするときにハマったところを説明します。

と、その前に、netatalkをインストールすることになった経緯のおさらい。

現在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.confを編集します。

Bash:
  1. sudo vim /etc/atalk/netatalk.conf

TEXT:
  1. #ATALK_MAC_CHARSET='MAC_ROMAN'
  2. というMAC側キャラセットを以下に変更。
  3.     ATALK_MAC_CHARSET='MAC_JAPANESE'
  4. 同様に、
  5.     #ATALK_UNIX_CHARSET='LOCALE'
  6. というUNIX側キャラセットを以下に変更。
  7.     ATALK_UNIX_CHARSET='UTF8'

ゲストユーザの設定は必要かどうかはわかりませんが、適当なユーザ名に変えておきました。

TEXT:
  1. #AFPD_GUEST=nobody
  2.     AFPD_GUEST=hogeuser

ついでに自動起動も設定しておきます。

Bash:
  1. sudo /sbin/chkconfig atalk on

そして、これが結構ハマりどころだった設定を先に有効化しておきます。

Bash:
  1. sudo vim /etc/atalk/AppleVolimes.default

長いコメントの後、最終行に1文字だけ「~(チルダ)」があります。これはnetatalkで読み込むディレクトリを指しています。チルダはもちろんホームフォルダのことです。読み込むディレクトリを増やすには、チルダ以下に改行で列挙していきます。この設定ファイルはディレクトリの指定だけではなく、読み込み方法のオプションや先ほど設定したキャラセットなども設定できます。どういう設定があるかはManpage of AppleVolumes.defaultを参照してください。このなかで、一番大事な設定はoptions:usedotsです。これは、ドットファイル(先頭がドットから始まるファイルやディレクトリ)に対して、:hex変換を用いてファイル名を変えてしまうことを抑制するオプションです。デフォルトでは「.DS_Store」が「:2eDS_Store」として保存されてしまいます。Mac側から見ると、netatalkによって「.DS_Store」に見えるそうです。どうして厄介なのかは毎日モザイク » 2007 » 5月などをご覧ください。どちらかというと、Eclipseのときに厄介でした。ともかく、usedots設定をします。

TEXT:
  1. ~
  2. 上記、チルダの1行を
  3.     ~ options:usedots
  4. と変更する。他にもディレクトリの指定を追加した場合も同様にusedotsを指定する。

一応、usedotsを使わなかったときのCentOS上のディレクトリをお見せすると、こうなっています。(仕事上のディレクトリですので、モザイクばっかですいません。)
「.AppleDouble」はnetatalkが使っているメタ情報のフォルダです。Macのメタ情報フォルダ「.DS_Store」があるかと思いますが、同時に「:2eDS_Store」もあります。またEclipseのメタ情報フォルダ「.metadata」がありますが、同時に「:2emetadata」が作られています。Eclipseで既存ワークスペースを読み込もうとすると、「.metadata」は認識されず、新規に「:2emetadata」が作成されてしまうので、新規ワークスペース扱いされてしまいます。usedotsオプションを用いれば、「.DS_Store」や「.metadata」が認識されて、Eclipseでも既存のワークスペースが開けます。
netatalk6_not_usedots1

さて、いよいよnetatalk経由でCentOSにアクセスしてみます。netatalkのプロトコルはAFPですので、Finderの[移動]-[サーバへ接続...]で以下のように「afp://VMゲストのIP/」を指定します。
netatalk1
ユーザの認証が通れば、Finderに読み込まれます。
netatalk2_atalk
netatalk3_atalk
どうやら、うまく読み込めたようです。

いよいよEclipseを起動します。CentOS上の既存のワークスペースを指定して、読み込もうとしたら、「ワークスペースが使用中であるか作成できません。別のワークスペースを選択して下さい」といったロックファイル関連のエラーが発生しました。日記(仮) >> 2007/4/7を見るとネットワーク上のファイル共有ディレクトリにワークスペースを置くと、ロックファイルが正しく動かないようです。これを解決する方法はいくつかあるようですが、私の場合は、ワークスペースをロックしない設定にすること。MacのEclipseの設定ファイルは、Eclipseディレクトリのconfiguration/config.iniにありますので、以下のテキストを末尾に追加します。

TEXT:
  1. osgi.locking=none

これで無事にEclipseが起動し、既存のワークスペースがそのまま使えるようになりました。netatalkすげー。

netatalk7_netatalk_vs_samba

これでMacの開発環境も揃いそうです。長かった。
>> [mac]netatalkでmacのEclipseからVMware上のCentOSにアクセス(1/3)

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

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

Written by uechoco 8月 16

前回は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)