2010/01/14

2010/01/14のダメ人間備忘録



「Toolkit for Oracle ビルド&インストール備忘録」

なんやかんやで昨年の晩秋から名古屋で仕事をしている。
その異常っぷりは想像を遥かに凌駕するもので、
到着初日からいきなりフルスロットルで働かされたかと思えば、
半月も経たぬ内にメンバーの一人が過労で倒れ救急車で運ばれた。
それが無ければあの状態が今まで続いていたのだろうか。

そんな悲惨な状況にある案件が長続きするはずもなく、
まもなく破綻という名の終焉を迎えつつある様だ。
意地でも破綻させまじと会社が粘ろうとするなら、
名古屋への転勤を視野に入れる必要が出て来るだろうか。
そしてもっと恐ろしい悲劇に身を投じる事になるだろう。

年明けから数ヵ月は開発行為をストップさせ、
ノー残業で再整理という名の残務処理を行っている。
その合間を縫うようにマシン環境の整備を行ってみた。

気になっていた Google Chrome for Linux を入れてみたり。
VMWare Player を 3 にアップグレードしてみたり。
そこで PentiumM が PAE をサポートしていない事実に驚愕したり。
それを知ったのが旧バージョンを削除された後だったり。
なかなかファンキーな体験をさせてもらった。
ファンキーついでに昨年インストールした Oracle XE を徹底活用すべく、
Toolkit for Oracle(通称TOra)の導入を試みる。

現行の安定版である Debian lenny には TOra の公式パッケージがあり、
簡単に導入は出来るのだがバージョンが最新ではない。
しかもコネクションダイアログに Oracle 接続用の設定が出て来ない。
いろいろ設定をいじってみたが、やはり接続できそうな状況にならない。
for Oracle なんだから Oracle に接続出来なければ無意味だ。

当初は ODBC 経由で接続するのかと思い unixodbc パッケージを導入してみたが、
どうもそんな姑息なやり方ではない気がする。っつか以下のエラーで接続が出来ない。
設定の段階で失敗しているのか。それとも unixodbc のバグなのか。

isql: symbol lookup error: libsqora.so.11.1: undefined symbol: SQLGetPrivateProfileStringW

何で出て来ないんだろうとググッてみたところ、珍しく日本語の情報がひっかかった。
なんと先輩でしたか。まともに動いている。刺激を受ける。

Debian の文法に従うならパッケージによる導入が正しいのだろうが、
Debian Expert の先輩すら文法を曲げてソースからビルドしているところを見ると、
Oracle ライブラリを include しなければ使えないというオチである事が予想された。
久しぶりのドはまりロードに突入してみるか。

ソースをダウンロードしてとりあえず configure スクリプトを投げてみたが、
何と C++ のコンパイラ g++ が入ってないと怒られてしまった。まさか。
調べてみたら確かに入っていない様なのでインストール。。。失敗。

g++ コンパイラがインストールされない。
build-essential もインストールされない。
パッケージファイルをダウンロードし手動でインストールするも失敗。
どうもシステムの以下の依存パッケージのバージョンが合わないらしい。

gcc-4.3-base(4.3.3-3)
gcc-4.3(4.3.3-3)

しかも以下のパッケージが入っていないのでダメらしい。

libstdc++6-4.3-dev

インストールする g++ パッケージファイルの依存バージョンは 4.3.2-1.1 だが、
システムのバージョン 4.3.3-3 と完全に一致しないとダメなようでコケる。
つまりインストールしようとしている g++ の依存バージョンが旧い。
メンテナ何やってんねんつー話だ。

どうも Debian lenny では g++ をすんなりインストールする事は出来なさそうなので、
テスト版である Debian squeeze へのアップグレードに踏み切った。
そこは強力なパッケージマネジメントシステムを持つ Debian である。
アップグレードは何の問題もなくコンプリートし、g++ の導入もすんなりと終った。

再度 configure スクリプトを投げる前に help 情報からオプションを調べてみる。
あ。。。なんかちゃんと Oracle 関連のオプションがあるでわないか。
しかも導入済の Oracle Instant Client 用のオプションが。良く見ろ<オレ

$ ./configure \
--prefix=/home/hoge/tool/tora \
--exec-prefix=/home/hoge/tool \
--with-instant-client=/oracle/instantclient \
--with-oci-version=11G \

そもそも Oracle とつなげる方法は unixcodbc 経由だと勘違いしていた事もあり、
configure スクリプトがなかなか正常終了せずにいた。
--with-instant-client オプションになかなか気がつかない自分もアホだ。
ようやくオプションの存在に気づいて Oracle 関連のエラーは回避できた。

それにしてもなかなか進まない。
QScintillaなるもののヘッダがねーとか、Qt4関連のヘッダがねーとか、うぜー。
aptitude で search してみるとライブラリ本体は入っているがヘッダだけ無さげ。
コンパイルするにはヘッダが必要なのは当然だ。そこらへんをまとめて突っ込む。

# aptitude install libqscintilla-dev libqscintilla2-dev libqt4-dev

ここでようやく configure スクリプトが正常に終了した。
出来たてホヤホヤの TOra をおそるおそる起動すると、
見事 Oracle 接続用の設定を呼び出せるようになっており、
導通、SQL クエリ実行の確認まで行う事が出来た。長かった。。。



ここいらの設定や squeeze へのアップデートをやってみて知ったのだが、
apt-get コマンドは最近の Debian では非推奨らしい。
以降は aptitude でやってねつー事の様だ。以後気をつける事にする。

「これで PL/SQL のデバッグも出来るぜ!」と心の中で奇声を上げたと同時に、
実は TOra の使い方が良く分かっていない自分にも気づいたのであった。

「手段のためなら目的を選ばない、どうしようも無い人間も世の中にはいるのだよ。」


追伸:
ここしばらくいろんな事が起こりすぎた。
いろんな事がありすぎて、もうおなか一杯って感じだ。

あまりにも理不尽な仕打ちをあまりにも突然喰らわせた全くの他人を呪った。
尊敬していた先輩との突然の別れを突き付けた全くの赤の他人を呪った。
くだらない押しつけを人目も憚らず平然と繰り出すくだらない人間共を呪った。
そして、そんな境遇を受け入れられない自分の弱さを呪った。

だが、以下の言葉がそんな自分の良い戒めとなった。

「人を呪わば穴二つ」

意味が無い。自分を犠牲にする必要なんて無かろう?
無駄なだけ。そんな事に時間を使うだけ無駄なだけだ。
勿体無いよ。もっと自分に時間を使ってやらなくちゃ。