[Linux]CentOSにyumでgitを導入

Posted under Linux by uechoco on 金曜日 27 11月 2009 at 23 : 34 : 11

CentOSのyumでgitを入れようとしても、標準のレポジトリにはありません。

私の場合はrpmforgeからとってきます。rpmforgeの設定はすぐですので、CentOS/rpmforgeリポジトリ - ひつじ帳などを参考に入れておくと便利です。もちろん、通常時はこのレポジトリを使用ないように(自分で)設定するので、勝手に予期せぬバージョンアップとかはしません。rpmforgeはyumの--enablerepoオプションで指定して使います。

あとは、gitをinstallするだけですね。ログはこんな感じです。

TEXT:
  1. [uechoco@localhost src]$ sudo yum install git --enablerepo=rpmforge
  2. Loaded plugins: fastestmirror
  3. Determining fastest mirrors
  4.  * rpmforge: apt.sw.be
  5.  * updates: www.ftp.ne.jp
  6. rpmforge                                                 | 1.1 kB     00:00    
  7. primary.xml.gz                                           | 3.5 MB     02:06    
  8. rpmforge                                                       9732/9732
  9. base                                                     | 2.1 kB     00:00    
  10. primary.sqlite.bz2                                       | 1.6 MB     00:02    
  11. updates                                                  | 1.9 kB     00:00    
  12. primary.sqlite.bz2                                       | 235 kB     00:00    
  13. addons                                                   |  951 B     00:00    
  14. primary.xml.gz                                           |  201 B     00:00    
  15. extras                                                   | 1.1 kB     00:00    
  16. primary.xml.gz                                           | 107 kB     00:00    
  17. extras                                                         325/325
  18. Setting up Install Process
  19. Parsing package install arguments
  20. Resolving Dependencies
  21. --> Running transaction check
  22. ---> Package git.i386 0:1.5.2.1-1.el5.rf set to be updated
  23. --> Processing Dependency: rcs for package: git
  24. --> Processing Dependency: perl(SVN::Core) for package: git
  25. --> Processing Dependency: perl(Git) for package: git
  26. --> Processing Dependency: perl(SVN::Delta) for package: git
  27. --> Processing Dependency: perl(LWP::UserAgent) for package: git
  28. --> Processing Dependency: perl(SVN::Ra) for package: git
  29. --> Running transaction check
  30. ---> Package rcs.i386 0:5.7-30.1 set to be updated
  31. ---> Package subversion-perl.i386 0:1.6.6-0.1.el5.rf set to be updated
  32. --> Processing Dependency: subversion = 1.6.6-0.1.el5.rf for package: subversion-perl
  33. ---> Package perl-libwww-perl.noarch 0:5.805-1.1.1 set to be updated
  34. --> Processing Dependency: perl-HTML-Parser>= 3.33 for package: perl-libwww-perl
  35. --> Processing Dependency: perl(HTML::Entities) for package: perl-libwww-perl
  36. --> Processing Dependency: perl(Compress::Zlib) for package: perl-libwww-perl
  37. ---> Package perl-Git.i386 0:1.5.2.1-1.el5.rf set to be updated
  38. --> Processing Dependency: perl(Error) for package: perl-Git
  39. --> Running transaction check
  40. ---> Package perl-Error.noarch 0:0.17015-1.el5.rf set to be updated
  41. ---> Package perl-HTML-Parser.i386 0:3.62-1.el5.rf set to be updated
  42. --> Processing Dependency: perl(HTML::Tagset) for package: perl-HTML-Parser
  43. ---> Package subversion.i386 0:1.6.6-0.1.el5.rf set to be updated
  44. ---> Package perl-IO-Compress.noarch 0:2.021-1.el5.rf set to be updated
  45. --> Processing Dependency: perl(Compress::Raw::Bzip2)>= 2.021 for package: perl-IO-Compress
  46. --> Processing Dependency: perl(Compress::Raw::Zlib)>= 2.021 for package: perl-IO-Compress
  47. --> Running transaction check
  48. ---> Package perl-Compress-Raw-Zlib.i386 0:2.021-1.el5.rf set to be updated
  49. ---> Package perl-Compress-Raw-Bzip2.i386 0:2.021-1.el5.rf set to be updated
  50. ---> Package perl-HTML-Tagset.noarch 0:3.20-1.el5.rf set to be updated
  51. --> Finished Dependency Resolution
  52.  
  53. Dependencies Resolved
  54.  
  55. ================================================================================
  56.  Package                     Arch       Version              Repository    Size
  57. ================================================================================
  58. Installing:
  59.  git                         i386       1.5.2.1-1.el5.rf     rpmforge      27 M
  60. Updating:
  61.  subversion                  i386       1.6.6-0.1.el5.rf     rpmforge     6.5 M
  62. Installing for dependencies:
  63.  perl-Compress-Raw-Bzip2     i386       2.021-1.el5.rf       rpmforge     108 k
  64.  perl-Compress-Raw-Zlib      i386       2.021-1.el5.rf       rpmforge     169 k
  65.  perl-Error                  noarch     0.17015-1.el5.rf     rpmforge      27 k
  66.  perl-Git                    i386       1.5.2.1-1.el5.rf     rpmforge      18 k
  67.  perl-HTML-Parser            i386       3.62-1.el5.rf        rpmforge     148 k
  68.  perl-HTML-Tagset            noarch     3.20-1.el5.rf        rpmforge      14 k
  69.  perl-IO-Compress            noarch     2.021-1.el5.rf       rpmforge     238 k
  70.  perl-libwww-perl            noarch     5.805-1.1.1          base         376 k
  71.  rcs                         i386       5.7-30.1             base         332 k
  72.  subversion-perl             i386       1.6.6-0.1.el5.rf     rpmforge     2.3 M
  73.  
  74. Transaction Summary
  75. ================================================================================
  76. Install     11 Package(s)        
  77. Update       1 Package(s)        
  78. Remove       0 Package(s)        
  79.  
  80. Total download size: 37 M
  81. Is this ok [y/N]: y
  82. Downloading Packages:
  83. (1/12): perl-HTML-Tagset-3.20-1.el5.rf.noarch.rpm        |  14 kB     00:00    
  84. (2/12): perl-Git-1.5.2.1-1.el5.rf.i386.rpm               |  18 kB     00:00    
  85. (3/12): perl-Error-0.17015-1.el5.rf.noarch.rpm           |  27 kB     00:00    
  86. (4/12): perl-Compress-Raw-Bzip2-2.021-1.el5.rf.i386.rpm  | 108 kB     00:01    
  87. (5/12): perl-HTML-Parser-3.62-1.el5.rf.i386.rpm          | 148 kB     00:02    
  88. (6/12): perl-Compress-Raw-Zlib-2.021-1.el5.rf.i386.rpm   | 169 kB     00:06    
  89. (7/12): perl-IO-Compress-2.021-1.el5.rf.noarch.rpm       | 238 kB     00:06    
  90. (8/12): rcs-5.7-30.1.i386.rpm                            | 332 kB     00:01    
  91. (9/12): perl-libwww-perl-5.805-1.1.1.noarch.rpm          | 376 kB     00:00    
  92. (10/12): subversion-perl-1.6.6-0.1.el5.rf.i386.rpm       | 2.3 MB     01:34    
  93. (11/12): subversion-1.6.6-0.1.el5.rf.i386.rpm            | 6.5 MB     03:26    
  94. (12/12): git-1.5.2.1-1.el5.rf.i386.rpm                   |  27 MB     16:09    
  95. --------------------------------------------------------------------------------
  96. Total                                            29 kB/s |  37 MB     21:36    
  97. Running rpm_check_debug
  98. Running Transaction Test
  99. Finished Transaction Test
  100. Transaction Test Succeeded
  101. Running Transaction
  102.   Updating       : subversion                                      [ 1/13]
  103.   Installing     : subversion-perl                                 [ 2/13]
  104.   Installing     : perl-Compress-Raw-Bzip2                         [ 3/13]
  105.   Installing     : rcs                                             [ 4/13]
  106.   Installing     : perl-Compress-Raw-Zlib                          [ 5/13]
  107.   Installing     : perl-IO-Compress                                [ 6/13]
  108.   Installing     : perl-HTML-Tagset                                [ 7/13]
  109.   Installing     : perl-Error                                      [ 8/13]
  110.   Installing     : perl-HTML-Parser                                [ 9/13]
  111.   Installing     : perl-libwww-perl                                [10/13]
  112.   Installing     : git                                             [11/13]
  113.   Installing     : perl-Git                                        [12/13]
  114.   Cleanup        : subversion                                      [13/13]
  115.  
  116. Installed: git.i386 0:1.5.2.1-1.el5.rf
  117. Dependency Installed: perl-Compress-Raw-Bzip2.i386 0:2.021-1.el5.rf perl-Compress-Raw-Zlib.i386 0:2.021-1.el5.rf perl-Error.noarch 0:0.17015-1.el5.rf perl-Git.i386 0:1.5.2.1-1.el5.rf perl-HTML-Parser.i386 0:3.62-1.el5.rf perl-HTML-Tagset.noarch 0:3.20-1.el5.rf perl-IO-Compress.noarch 0:2.021-1.el5.rf perl-libwww-perl.noarch 0:5.805-1.1.1 rcs.i386 0:5.7-30.1 subversion-perl.i386 0:1.6.6-0.1.el5.rf
  118. Updated: subversion.i386 0:1.6.6-0.1.el5.rf
  119. Complete!

subversionもrpmforgeで入れてるけれど、subversionのアップデートはgitのインストールに関係あるのかな??関係ないよね?


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

Posted under Linux,mac入門記,php,symfony by uechoco on 日曜日 13 9月 2009 at 02 : 03 : 07

タイトルでもわかるとおり、非常に限定的な環境で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)

Posted under Apple,Linux,mac入門記 by uechoco on 月曜日 17 8月 2009 at 10 : 00 : 35

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

Posted under Apple,Linux,mac入門記 by uechoco on 日曜日 16 8月 2009 at 22 : 20 : 17

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


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

Posted under Linux,mac入門記 by uechoco on 土曜日 15 8月 2009 at 23 : 45 : 31

MacBookを買って、はや3ヶ月が過ぎたのですが、未だに仕事ではBootCamp上のWindows XPを使っていて、Macを使う機会は少ないというのが現状です。とはいえ、やっぱりMacBookなのだから、Mac OS Xをメインに使いたいという気持ちがあります。どうしてMac OS Xを使えないかというと、Windowsでの開発環境がちょっと込み入っているからです。

簡単にWindowsの開発環境を説明すると、Windows XPにVMware Serverをインストールし、仮想のCentOS 5を構築しています。このCentOS 5のとあるフォルダ(例:/var/develop)にSamba経由でアクセスします。このとき、ネットワークドライブとしてドライブレター(例:L:¥)を割当てています。/var/develop/hogeにアクセスする場合はWindowsのL:¥hogeとなっています。このsamba経由のフォルダをEclipseのワークスペースとして利用しています。つまり、L:¥.metadataフォルダがあり、fooプロジェクトのフォルダはL:¥fooとなっています。

この環境をMacに移行したいと思っています。Windowsで使っていたCentOSのイメージをMac側に持っていき、VMware Fusionで読み込ませるまでは基本的な作業ですので、説明は省略します。さっそくMacのVMware FusionでCentOSを起動し、インストール済みのSamba経由でアクセスしようとしたら、困ったことが起きました。CentOSで作成していたシンボリックリンクが、CentOS上の場所ではなく、Mac上の場所を指しているのです。例えば/etc/tempに向けたシンボリックリンクは、CentOSの/etc/tempではなく、Mac上の/etc/tempを指しているのです。シンボリックリンクは当然Linux上の特定の場所へのリンクですので、Mac側のファイルを指してしまうと困ってしまいます。

※Finderの[移動]-[サーバへ接続...]で「smb://VMゲストのIPアドレス/」を開いたところ、シンボリックリンクはMac上のリンクとして再現されている。

netatalk4_samba

netatalk5_samba

解決策を模索しているうちに、見つけたのがnetatalkです。netatalkはUNIX系OS上でAppleTalkやAFP(Apple Filing Protocol)を実装するオープンソースのサーバソフトウェアです(参考:Netatalk - Wikipedia)。netatalkでCentOS上にAFPデーモン(AFP over TCP)を立ち上げれば、Macとファイル共有ができるということです。いわばsambaのMac版。Mac版というからには当然Macとの親和性は高い訳です。

さてさて次回に向けてのおさらいです。現在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

次回はCentOSにnetatalkを入れてみようと思います。

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


« 前ページへ次ページへ »

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