LD_LIBRARY_PATHを全ユーザに反映させるには(linux)   

2006年 07月 06日

ある製品をインストール中。RedHatのES4上で動く、apache1.3と連動して動くもの、とだけ言っておきましょう。

環境変数LD_LIBRARY_PATHを.bashrcに記述すれば、そのユーザの環境変数に反映さえることができる。今回、JAVAのパスを全ての(というか、とりあえずapache)ユーザに反映させる必要があったので、ld.so.confを使用した設定を行った。

/etc/ld.so.confを開いてみると、以下の1行だけが書かれている。

include ld.so.conf.d/*.conf

ld.so.conf.dディレクトリ内にある、拡張子confのファイルを全て取り込むようだ。/etc/ld.so.conf.d/を覗いてみると、いくつかのconfファイルがある。mysql-i386.confの中身は以下の1行。

/usr/lib/mysql

なるほど。通したいパスを書けばよさそう。java用に新しいconfファイルを作って保存。で、apacheをconfigtestしてみると・・・変化なし。設定を変更させるのに何か必要なんだろうな。

調べてみると、ldconfigコマンドを実行するようだ。引数もなし。

/sbin/ldconfig

再度apacheのconfigtestを実行。

「libjvm.soが見つからない」だったエラーが「そのモジュールはDSOモジュールじゃない」に変わった。パスは通ったようだ。けど動いてないよ。

これってEAPI絡みじゃないのかな?前にapache1.3で色々やった時にこんなメッセージ見たぞ。インストール中の製品のマニュアルには、そんなこと書いてなかったけど。

と思ってたら、開発元からのメールでapacheでEAPIが有効かどうか確認するよう言われた。やっぱり。確認方法を残しておきます。

$ nm httpd | grep ap_ctx_get 1>/dev/null && echo "yes-eapi" || echo "no-eapi"

configureの時に--enable-EAPIとかするんじゃなかったっけ?例によってマニュアルには書いてなかったけどさ。

【追記】
やっぱりEAPIだった。ただ、apacheのconfigureの時に有効にするんじゃなかった。過去の資料を探ってみたら、mod_sslの中にEAPIパッチが含まれてるようだ。
[PR]

by keta_m | 2006-07-06 12:31 | コンピュータ

<< 朝生、観戦中 SONYタイマー発動? >>