どぅーちゅいむーにー

これ、Twitterでよくね?という日々の記録かも

CentOS 5.4 + swftools で挫折

SlideShareみたいな環境をクローズドな環境に構築したい!
ということで、OpenSlideという Web アプリケーション環境を構築してみることにしました(注意:現時点ではうまくいっていません)。


インストール環境として、ちょうど2011/1/31をもってサービスが終了してしまった某サービス用の開発環境であったサーバを使うことにしたのが失敗だという話はありますが、せっかくやったのでメモエントリしておきたいと思います。


OpenSlideを使用するためには、以下のものが必要になるそうです。

OpenSlide のサイトをみると、インストール手順がありますが、開発環境が Ubuntu ということで、apt-get なインストール方法が紹介されています。
が、まぁあまり変わらないだろう(そもそもこの考え方がダメ?)、ということで1つ1つインストールしてみることにしたのですが。


Cent OS 4.5 では、unoconv(needs Python 4.3 or later)でバージョン合わず(4.2.x だった)。
Python のバージョン上げるとかよりも、やっぱり OS を新しくしたほうが良いか、と思ったら、某サービス用開発環境の Cent OS の一報が 5.4 ということがわかり、そっちに鞍替えしてみる。ただ、今回メインの swftools の make は成功してたんですよね(この環境はつぶしちゃった)。


Cent OS 5.4 では、swftools の make が通らずにっちもさっちもいかず(後述)。


現在、さて、どうしようか、という感じ。
Ubuntu をインストールするか、CentOS 5.5 を再度インストールしなおしてチャレンジするか・・・
別に環境にこだわるわけじゃないので、まずは Ubuntu にすると思いますが。


ここから本題。

swftoolsのインストールは、一般的な configure/make/make install となっています。
ですので、まずは ./configure を実行したわけですが、構築しようとした環境では以下のエラーがでましたとさ。


% pwd
/path/to/swftools-0.9.1
% ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
・・・・
checking for missing libraries... jpeglib ungif jpeglib.h freetype gif_lib.h
***************************************************
* The following headers/libraries are missing: jpeglib ungif jpeglib.h freetype gif_lib.h
* Disabling pdf2swf tool...
* Disabling jpeg2swf tool...
* Disabling gif2swf tool...
***************************************************
・・・・
config.status: creating lib/readers/Makefile
config.status: creating config.h
まぁ、足りてないっちゅーことですね。

    • jpeglib のインストール

jpeglib はhttp://www.ijg.org/よりダウンロードできます。
こちらも、configure/make/make install でインストールできます。
ちらっと探った結果では、configure の際、--enable-shared をつけるのは重要らしいです。


% tar xf jpegsrc.v8c.tar.gz
% cd jpeg-8c/
% ./configure --enable-shared
・・・
% make
・・・
% make test
・・・
% su -
Password
# cd /path/to/dir/jpeg-8c/
# make install
・・・
# ls -l /usr/local/bin
・・・
-rwxr-xr-x 1 root root 17403 2月 3 15:01 wrjpgcom
-rwxr-xr-x 1 root root 16147 2月 3 15:01 rdjpgcom
-rwxr-xr-x 1 root root 86816 2月 3 15:01 jpegtran
-rwxr-xr-x 1 root root 85161 2月 3 15:01 djpeg
-rwxr-xr-x 1 root root 88391 2月 3 15:01 cjpeg
という感じで、インストールされたみたい。

freetypeyum でインストールしました。


% su -
Password:
# yum install freetype
・・・
# yum install freetype-devel
・・・

    • giflib(gif_lib.h)

gif_lib.h のほう。よくわからないので gif_lib.h って何?という感じで Google 先生に聞いてみたら、どうもこちら(http://sourceforge.net/projects/giflib/)のことじゃないかなぁ、とおっしゃられたので、インストールしてみる(gz ばっかりつかっているので、tar.bz2 を一発で解凍できなかったのは内緒です)。


% bzip2 -d giflib-4.1.6.tar.bz2
% tar xf giflib-4.1.6.tar
% cd giflib-4.1.6/
% ./configure
・・・
% make
・・・
% make check
・・・ (大した内容は出力されない。エラーはないみたい)
% su -
Password:
# cd /path/to/dir/giflib-4.1.6/
# make install
・・・
# ls -ltr /usr/local/bin/
・・・
-rwxr-xr-x 1 root root 26439 2月 3 15:14 text2gif
-rwxr-xr-x 1 root root 27831 2月 3 15:14 rgb2gif
-rwxr-xr-x 1 root root 26466 2月 3 15:14 raw2gif
-rwxr-xr-x 1 root root 40008 2月 3 15:14 icon2gif
-rwxr-xr-x 1 root root 24695 2月 3 15:14 gifwedge
-rwxr-xr-x 1 root root 9658 2月 3 15:14 gifspnge
-rwxr-xr-x 1 root root 11630 2月 3 15:14 giffiltr
・・・
# exit
という感じ。/usr/local/bin にインストールされたようです。
上記 ls -l の結果は適当にピックアップしていますが、
けっこうたくさんのコマンドが増えました。


さて、やっと swftool のほうに戻り、./configure しなおしてみる。


% cd /path/to/swftools-0.9.1/
% ./configure
・・・
(今度はさっきのワーニングなし)
・・・
よし!ということでいざ make ・・・

% make
making all in m4...
cd m4;make all
make[1]: ディレクトリ `/path/to/swftools-0.9.1/m4' に入ります
make[1]: ディレクトリ `/path/to/swftools-0.9.1/m4' から出ます
making all in lib...
cd lib;make all
make[1]: ディレクトリ `/path/to/swftools-0.9.1/lib' に入ります
gcc -c -DHAVE_CONFIG_H -I/usr/include/freetype2 -fPIC -Wimplicit -Wreturn-type -Wno-write-strings -Wformat -O -fomit-frame-pointer modules/swfaction.c -o modules/swfaction.o
modules/.././bitio.h:23 から include されたファイル中,
modules/../rfxswf.h:37 から,
modules/swfaction.c:24 から:
modules/.././types.h:39:2: error: #error "no way to define 64 bit integer"
modules/.././types.h:42:2: error: #error "don't know how to define 32 bit integer"
modules/.././types.h:45:2: error: #error "don't know how to define 16 bit integer"
modules/.././types.h:48:2: error: #error "don't know how to define 8 bit integer"
make[1]: *** [modules/swfaction.o] エラー 1
make[1]: ディレクトリ `/path/to/swftools-0.9.1/lib' から出ます
make: *** [all] エラー 2
げっ・・・失敗?
実は、Cent OS 4.5 で swftools は普通に make & make install できました。
ただ、configure の際、libjpeg とか freetype の警告がでていたかどうか記憶にない・・・(でてなかったような気がするけど、定かではない)。


試しに freetypeyum remove して configure からやり直すと、freetype がないから pdf2swf は無効にするぜ警告がでるようになりました(戻った)。
そこで再度 make してみましたが結果は同じ。
環境的な話なんだろうけど、このあたりをさくっと解析できるスキルはおいらにはないのでちょいと厳しい感じ。
エラーの内容としては、type.h において、

#if SIZEOF_SIGNED_LONG_LONG != 8
#error "no way to define 64 bit integer"
#endif
#if SIZEOF_SIGNED != 4
#error "don't know how to define 32 bit integer"
#endif
#if SIZEOF_SIGNED_SHORT != 2
#error "don't know how to define 16 bit integer"
#endif
#if SIZEOF_SIGNED_CHAR != 1
#error "don't know how to define 8 bit integer"
#endif
の if がすべて NG になってる感じ。
ざっとソースとかヘッダファイルを grep しても、各変数を設定している箇所はなさそう。まぁ、調査方法が見当違いかもしれないので何とも言えませんが。


他に前提としているライブラリとかがあるんだろうなぁ、とは思いつつ。
Goolge 先生に聞いてみてもよくわからず。


さて、どうしようか、というところ。


一応、本題はOpenSlideのほうなので、まずは Ubuntu で環境構築してみて、余力があれば CentOS に戻る感じですかねぇ、という今日この頃。