私のサーバーには3つのバージョンのBerkeleyDBがインストールされています。
次の2つのバージョン
Package db4-4.3.29-10.el5_5.2.x86_64
Package db4-4.3.29-10.el5_5.2.i386
Centos 5 Distroに含まれる
ここにあるソースからインストールされた3番目のバージョン
/usr/local/BerkeleyDB.4.5
(そしてすべてのBerkeleyユーティリティは/usr/local/BerkeleyDB.4.5/binにインストールされています。)
Berkeleyを使用するプログラム(ASSP 2.4.4を使用しています)を実行すると、BerkeleyDB 4.3.29を表示して使用できます。 ASSPにはBerkeleyバージョン> = 4.5が必要なため、これは悪いことです。
4.3.29の代わりに/usr/local/BerkeleyDB.4.5にBerkeleyDB.4.5のデフォルトインストールを設定するには?
答え1
通常、パッケージ(プリコンパイル済みバイナリなど)で何かを実行したい場合、およびPATH
/またはを設定したり、バイナリ自体を調整したりするためにLD_LIBRARY_PATH
使用できます。chrpath
注意すれば、複数のバージョンのBerkeleyDBをインストールできない理由はありません。 (configure
スクリプトはこれを簡単に実行するように設定されており、--program-suffix
PATHでバージョン指定されたバイナリをより簡単に維持できるようにサポート(および変換)します。)
ただし、ASSPはPerlとして実装されているため、現在コンパイルされているPerlBerkeleyDB.so
ライブラリを使用して構築されたBerkeleyライブラリにリンクされています。 (使用される多くのパッケージとは異なり、DB::File
asspはBerkeleyDB
直接使用されます。)
あなたは見ることができますPerlはどのライブラリを使用しますか?次のようなもの:
perl -e 'print join "\n",@INC;' | xargs -i find {} -name BerkeleyDB.so
ldd
次に、見つかったモジュールを実行します。
通常、CentOSを使用する場合(望んでいない場合でも)CentOSパッケージを中心とした世界に入るため、「正しい」解決策はCentOSのバージョンと一致するASSPパッケージまたはPerlも含まれているBerkeley RPMを見つけることですBerkeleyDB.so
。またはCentOSをアップグレードしてください。
CentOSへのサービス展開を避けるなぜならパッケージの依存関係の問題。私はソースから構築しましたが、それは「古い」です。 (RPMを介してソフトウェアをインストールしない限り、有害な影響を受ける可能性がある軽い読者は上記の内容を読まないでください。)
この問題を手動で解決するには、ASSP専用のPerlのパラレルバージョンをインストールすることができます(潜在的なメンテナンスの問題、前回確認したときにCentOS 5.xにASSPを実行していないperl-5.8が含まれていたので、すでにインストールしていますかもしれません)。 )または以下の指示に従ってBerkeleyDBモジュールのみをアップグレードできます。閲覧ファイルconfig.in
、コンパイルする前に正しいパスを確認/設定してください。このモジュールは BerkeleyDB.4.5 ソースコードアーカイブに含まれており、デフォルトは次のとおりです。
INCLUDE=/usr/local/BerkeleyDB/include
LIB=/usr/local/BerkeleyDB/lib
したがって、シンボリックリンクを追加して/usr/local/BerkeleyDB
→/usr/local/BerkeleyDB.4.5
手動でビルドします(または最新の、ほぼすべてのデフォルトのbdbバージョンをサポートするCPANを使用してインストール/アップグレード)。
BerkeleyDBをアップグレードする場合、他のPerlスクリプトまたは特定のバージョンに依存している場合は、いくつかの問題が発生する可能性があります。私が知る限り、これは通常インストールされているモジュールではなく、通常のPerlまたはBerkeley db4 CentOSパッケージには含まれていません(perl-BerkelyDB
RHELにあり、CentOS 5.xでは見たことがありません)。
cd /usr/local/src/db-4.5.x # or where ever you build
cd perl/BerkeleyDB
vi config.in # check INCLUDE and LIB [optional]
perl Makefile.pl # select the correct perl
make
make test && make install
次に、上記の手順を繰り返して、すべてがfind
期待ldd
どおりであることを確認します。 (Perlが複数ある場合は、通常はPERL
始める前に環境変数をエクスポートするのが最善ですが、ここでは必要ではないと思います。)