Search code examples
perlperl-modulecpanopensuse

Unable to install perl modules opensuse 12.2


I have been trying to install several perl modules on my brand new Opensuse installation, but to no avail. I have tried to install them both via CPAN, PPM and manually but keep incurring in the same error:

 Unparsable version '' for prerequisite Test at Makefile.PL line 4.

nevertheless, Makefile.PL seems to be able to execute without problems, but the subsequent make execution incurrs into problems. This is the message causing the problem i think:

 make: *** [LevenshteinXS.o] Error 127
 JGOLDBERG/Text-LevenshteinXS-0.03.tar.gz
 /usr/bin/make -- NOT OK

i tried to do a whereis make and the result seems ok:

 make: /usr/bin/make /usr/bin/X11/make /usr/share/man/man1/make.1.gz /usr/share/man/man1p/make.1p.gz

here's the complete recount of the actions that cpan carries on before telling me that the installation failed:

 CPAN: Storable loaded ok (v2.34)
 Reading '/home/tito/.cpan/Metadata'
 Database was generated on Wed, 24 Oct 2012 19:07:03 GMT
 Running install for module 'Text::LevenshteinXS'
 Running make for J/JG/JGOLDBERG/Text-LevenshteinXS-0.03.tar.gz
 CPAN: Digest::SHA loaded ok (v5.71)
 CPAN: Compress::Zlib loaded ok (v2.048)
 Checksum for /home/tito/.cpan/sources/authors/id/J/JG/JGOLDBERG/Text-LevenshteinXS-0.03.tar.gz ok
 CPAN: File::Temp loaded ok (v0.22)
 CPAN: Parse::CPAN::Meta loaded ok (v1.4404)
 CPAN: CPAN::Meta loaded ok (v2.120630)

 CPAN.pm: Building J/JG/JGOLDBERG/Text-LevenshteinXS-0.03.tar.gz

 Unparsable version '' for prerequisite Test at Makefile.PL line 4.
 Checking if your kit is complete...
 Looks good
 Writing Makefile for Text::LevenshteinXS
 Writing MYMETA.yml and MYMETA.json
 CPAN: Module::CoreList loaded ok (v2.66)
 cp LevenshteinXS.pm blib/lib/Text/LevenshteinXS.pm
 AutoSplitting blib/lib/Text/LevenshteinXS.pm (blib/lib/auto/Text/LevenshteinXS)
 /usr/bin/perl /usr/lib/perl5/5.16.0/ExtUtils/xsubpp  -typemap /usr/lib/perl5/5.16.0/ExtUtils/typemap  LevenshteinXS.xs > LevenshteinXS.xsc && mv LevenshteinXS.xsc LevenshteinXS.c
 Please specify prototyping behavior for LevenshteinXS.xs (see perlxs manual)
 cc -c   -D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe   -DVERSION=\"0.03\" -DXS_VERSION=\"0.03\" -fPIC "-I/usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/CORE"   LevenshteinXS.c
 /bin/sh: cc: command not found
 make: *** [LevenshteinXS.o] Error 127
 JGOLDBERG/Text-LevenshteinXS-0.03.tar.gz
 /usr/bin/make -- NOT OK
 CPAN: YAML loaded ok (v0.84)
 Running make test
  Can't test without successful make
 Running make install
  Make had returned bad status, install seems impossible

Solution

  • The warning about the version is just that, a warning. The real problem is this:

    /bin/sh: cc: command not found
    

    In other words: this module needs a C compiler and you don't have one. Not one Perl can find anyway. Installing the gcc package from OpenSuSE should solve that.

    The "unparsable version" is from this line in the Makefile.PL.

    'PREREQ_PM'         => { Test },
    

    PREREQ_PM indicates prerequisite modules and their minimum version. The author forgot the minimum version. No biggie, Test has come with Perl forever.