sahel
sahel

Reputation: 23

Can't load '/Compress/Raw/Zlib/Zlib.so'

I am trying to run Variant effect predictor perl script (by ensembl) and I am getting this error:

Testing VEP script
ERROR: Testing VEP script failed with the following error
Can't load '/home/sahel/perl5/lib/perl5/x86_64-linux/auto/Compress/Raw/Zlib/Zlib.so' for module Compress::Raw::Zlib: /home/sahel/perl5/lib/perl5/x86_64-linux/auto/Compress/Raw/Zlib/Zlib.so: undefined symbol: PL_unitcheckav at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
 at /home/sahel/perl5/lib/perl5/Compress/Zlib.pm line 11
Compilation failed in require at /home/sahel/perl5/lib/perl5/Compress/Zlib.pm line 11.
BEGIN failed--compilation aborted at /home/sahel/perl5/lib/perl5/Compress/Zlib.pm line 11.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/ProteinFunctionPredictionMatrix.pm line 73.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/ProteinFunctionPredictionMatrix.pm line 73.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariationAllele.pm line 65.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariationAllele.pm line 65.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariation.pm line 57.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/TranscriptVariation.pm line 57.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/DBSQL/TranscriptVariationAdaptor.pm line 68.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/DBSQL/TranscriptVariationAdaptor.pm line 68.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/VariationFeature.pm line 105.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/VariationFeature.pm line 105.
Compilation failed in require at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/Utils/VEP.pm line 52.
BEGIN failed--compilation aborted at /projects/sahel_proj/localperl/Bio/EnsEMBL/Variation/Utils/VEP.pm line 52.
Compilation failed in require at variant_effect_predictor.pl line 57.
BEGIN failed--compilation aborted at variant_effect_predictor.pl line 57.

I have installed all required modules by cpan and set the path to the modules by:

echo 'eval `/projects/sahel_proj/localperl/bin/perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile

Compress::Raw::Zlib and Compress::Zlib seem to be successfully installed:

./bin/perl -e 'use Compress::Raw::Zlib;'
./bin/perl -e 'use Compress::Zlib;'

So I can not think of what could be wrong and could not find any thing online...

This my first experience working with perl ever :( , any help would be appreciated...

Thank you so much

Upvotes: 2

Views: 6240

Answers (1)

ikegami
ikegami

Reputation: 385897

There seems to be a Perl version mismatch. The signs point to: The .so you are loading was built using one version of Perl and it's being loaded by an incompatible version of Perl.

I suspect your testing is done with one perl (the one used to install the modules), while the actual program is being run with the another perl.

Now you know why I can't fathom why people think INSTALL_BASE aka --install_base is a good idea. Sure, the directory structure is prettier, but it causes these problems! You're using INSTALL_BASE aka --install_base (a way to tell Makefile.PL and Build.PL where to install modules) via local::lib.

Solution 1.

Run your script using the same perl that you used to install the modules.

Solution 2.

Get rid of the directory in which local::lib installed your modules and reinstall them without using local::lib:

perl Makefile.PL PREFIX=~ LIB=~/lib/perl5
make
make test
make install

or

perl Build.PL --prefix ~ --lib ~/lib/perl5
./Build
./Build test
./Build install

If you do the above using both perl, version-specific modules will be available to both perl. If you do the above using only one perl, version-specific modules will only be available to that perl. No conflicts.

(You can use cpan by configuring it to use the above commands.)

Don't forget to tell perl where to locate your modules. In your login script,

export PERL5LIB=~/lib/perl5

Upvotes: 2

Related Questions