- 締切済み
GLIBC_2.4 以上がインストールされていない環境で
GLIBC_2.4 以上がインストールされていない環境で perlで開発中に、libcのバージョンが古いというエラーが出ております。 しかし、事情により、通常のインストールができません。 どうにかして、別サーバから取得したsoファイルなどを使って、GLIBC_2.4以上を読み込ませることはできないでしょうか。 いま、外部サーバから取得したlibc-2.5.soがあります。これをサーバ上にアップロードして、perlから使用できるようにする方法はありますか? あまり詳しくないのですが、Dynaloader などは用途が違うのでしょうか。 すみませんが、宜しくお願い致します。 エラーメッセージ(一部伏字): Can't load '~~~i386-linux-thread-multi/auto/Digest/SHA1/SHA1.so' for module Digest::SHA1: /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by ~~~~/i386-linux-thread-multi/auto/Digest/SHA1/SHA1.so) at /usr/lib/perl/5.8/DynaLoader.pm line 225. at ~~~~/Digest/HMAC_SHA1.pm line 5
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yuuki0229
- ベストアンサー率70% (33/47)
基本的に同等の代替品を用意することになります。 ・そのサーバ用でコンパイルする (No.2さんの方法) ・同等の古い環境を用意してそこでコンパイルして持って行く ・代わりにDigest::SHA::PurePerlを使う あたりです。
- YkazubonY
- ベストアンサー率30% (26/86)
Perl Moduleのインストールは、下記のコマンドで行うのが簡単です。 # perl -MCPAN -e shell cpan> install Digest::SHA1 この方法は、Cソースのコンパイルも実行されるので、libcのバージョンの不一致が解消されると思います。 インターネットにproxy経由でアクセスしている場合は、環境変数http_proxyの設定が必要です。
- Tacosan
- ベストアンサー率23% (3656/15482)
努力と根性でなんとかなるかもしれんけど, それは通常「勧められる方法」ではないと思う. その「サーバ」上で当該モジュールを作るのがベターだろう.
補足
ありがとうございます! それでは、サーバ上でモジュールを作る事ができたとして、古い環境は生かしつつ、特定のプログラムの実行時にだけ、新しいモジュールを動かすという事は可能なのでしょうか?