- blogs:
- cles::blog
« 葉山に来ています :: Excelでセルに一撃で日付を入力する »
2010/08/07

CentOS 5.5 (ruby 1.8.5) に hpricot 0.8.2 をインストールする



CentOS上にgemでhpricotの最新板をインストールしようとすると、変なエラーが出てインストールができないと相談されたので、コンソールを見てみると確かに見慣れないエラーが出ています。
# gem install hpricot
Building native extensions. This could take a while...
ERROR: Error installing hpricot:
ERROR: Failed to build gem native extension.
/usr/bin/ruby extconf.rb
checking for main() in -lc... yes
creating Makefile
make
gcc -I. -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -fno-strict-aliasing -fPIC -c hpricot_scan.c
hpricot_scan.rl: In function ‘our_rb_hash_lookup’:
hpricot_scan.rl:171: 警告: implicit declaration of function ‘st_lookup’
hpricot_scan.rl: In function ‘make_hpricot_struct’:
hpricot_scan.rl:695: 警告: implicit declaration of function ‘RARRAY_PTR’
hpricot_scan.rl:695: error: 添字をつけられた値が配列でもポインタでもありません
make: *** [hpricot_scan.o] エラー 1
Gem files will remain installed in /usr/lib64/ruby/gems/1.8/gems/hpricot-0.8.2 for inspection.
Results logged to /usr/lib64/ruby/gems/1.8/gems/hpricot-0.8.2/ext/hpricot_scan/gem_make.out
Googleで検索してみると、同じようなところではまっている人は意外と多いようで、「Hpricot 0.8.1 on ruby 1.8.5 | Penguin on Rails」なんかが同じ症状のようです。これらの解決方法としては Version 0.7 を使えばいいよみたいなことが多いので、なんとか最新板がインストールできないか試行錯誤してみました。
† 作業環境
今回の作業環境はこんな感じ。
# cat /etc/issue
CentOS release 5.5 (Final)
Kernel \r on an \m
# ruby -v
ruby 1.8.5 (2006-08-25) [x86_64-linux]
# gem -v
1.3.4
† RARRAY_PTRというマクロ関数がないのが問題らしい
エラーを見る限りは RARRAY_PTR が何らかのマクロ関数になっていて、それが定義されていないということが原因に見えたので、Ruby関連のヘッダが格納されている下記のディレクトリを検索してみましたが、 RARRAY_PTR が定義されているファイルは発見できませんでした。
/usr/lib/ruby/1.8/i386-linux/
/usr/lib64/ruby/1.8/x86_64-linux/
おそらく1.8.5以降のバージョンでRARRAY_PTRというマクロが追加されたのだろうと踏んで、かなり乱暴ですが前述のサイトに記載されていたマクロの内容を参考にruby.hに下記の定義を追加してしまいました。
/usr/lib/ruby/1.8/i386-linux/ruby.h
/usr/lib64/ruby/1.8/x86_64-linux/ruby.h
ruby_macroadd.patch
--- ruby.h.org 2006-08-07 12:43:42.000000000 +0900
+++ ruby.h 2010-08-07 20:22:14.000000000 +0900
@@ -731,4 +731,16 @@
} /* extern "C" { */
#endif
+#ifndef RARRAYPTR
+# define RARRAYPTR(v) RARRAY(v)->ptr
+#endif
+
+#ifndef RARRAY_PTR
+# define RARRAY_PTR(v) RARRAY(v)->ptr
+#endif
+
+#ifndef RSTRUCT_PTR
+# define RSTRUCT_PTR(v) RSTRUCT(v)->ptr
+#endif
+
#endif /* ifndef RUBY_H */
† この状態でコンパイルしてみる
この状態で、最新版が無事インストールできました。
# gem install hpricot
Building native extensions. This could take a while...
Successfully installed hpricot-0.8.2
1 gem installed
Installing ri documentation for hpricot-0.8.2...
Installing RDoc documentation for hpricot-0.8.2...
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3719
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
« 葉山に来ています :: Excelでセルに一撃で日付を入力する »
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112124)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110766)
3 . 年次の人間ドックへ(110366)
4 . 2023 年分の確定申告完了!(1つめ)(109913)
5 . 三菱鉛筆がラミーを買収(109813)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110766)
3 . 年次の人間ドックへ(110366)
4 . 2023 年分の確定申告完了!(1つめ)(109913)
5 . 三菱鉛筆がラミーを買収(109813)
cles::blogについて
Referrers