I’m attempting to install Webservice::InterMine on Ubuntu 22.04 and perl 5.38.0, but I get the following error:
Loading internal logger. Log::Log4perl recommended for better logging
Reading '/home/con/.cpan/Metadata'
Database was generated on Fri, 04 Aug 2023 17:29:02 GMT
Running install for module 'Webservice::InterMine'
CPAN: Digest::SHA loaded ok (v6.04)
CPAN: Compress::Zlib loaded ok (v2.204)
Checksum for /home/con/.cpan/sources/authors/id/I/IN/INTERMINE/Webservice-InterMine-1.0405.tar.gz ok
CPAN: YAML loaded ok (v1.30)
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
CPAN: Module::CoreList loaded ok (v5.20230520)
CPAN: Module::Build loaded ok (v0.4234)
Configuring I/IN/INTERMINE/Webservice-InterMine-1.0405.tar.gz with Build.PL
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'Webservice-InterMine' version '1.0405'
INTERMINE/Webservice-InterMine-1.0405.tar.gz
/home/con/perl5/perlbrew/perls/perl-5.38.0/bin/perl Build.PL -- OK
Running Build for I/IN/INTERMINE/Webservice-InterMine-1.0405.tar.gz
Building Webservice-InterMine
INTERMINE/Webservice-InterMine-1.0405.tar.gz
./Build -- OK
CPAN: CPAN::DistnameInfo loaded ok (v0.12)
Running Build test for INTERMINE/Webservice-InterMine-1.0405.tar.gz
t/00-load.t ................................ 1/1 # Testing Webservice::Webservice::InterMine 1.0405, Perl 5.038000, /home/con/perl5/perlbrew/perls/perl-5.38.0/bin/perl
t/00-load.t ................................ ok
t/01_path/01_validate.t .................... ok
t/02_pathfeature/01_pathfeature.t .......... ok
t/03_constraint/01_constraint.t ............ ok
t/03_constraint/02_constraint_factory.t .... ok
t/03_constraint/03_template_constraints.t .. ok
t/03_constraint/04_logic.t ................. ok
t/04_query/01_core.t ....................... ok
t/04_query/02_pathquery.t .................. ok
t/04_query/03_saved.t ...................... ok
t/04_query/03_scripted.t ................... ok
t/04_query/04_template.t ................... ok
t/04_query/05_good_and_bad_templates.t ..... ok
t/05_template/01_factory.t ................. ok
t/06_service/01_service.t .................. ok
t/06_service/02_result_iterator.t .......... ok
t/06_service/03_result_objects.t ........... ok
t/06_service/04_serviced_queries.t ......... ok
t/06_service/05_result_row.t ............... ok
t/06_service/06_test_export_exclusion.t .... ok
t/06_service/07_test_inclusion.t ........... ok
t/07_intermine/01_integration.t ............ 1/44
# Failed test 'use Webservice::InterMine;'
# at t/07_intermine/01_integration.t line 87.
# Tried to use 'Webservice::InterMine'.
# Error: Can't call method "host" on an undefined value at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine/Service.pm line 833.
# at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine/Service.pm line 833.
# Webservice::InterMine::Service::fetch(Webservice::InterMine::Service=HASH(0x564ecb9444a0), "http://fake.url/path/service/version") called at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine/Service.pm line 219
# Webservice::InterMine::Service::__ANON__(Webservice::InterMine::Service=HASH(0x564ecb9444a0)) called at constructor Webservice::InterMine::Service::new (defined at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine/Service.pm line 913) line 141
# Webservice::InterMine::Service::new("Webservice::InterMine::Service", "fake.url/path") called at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine.pm line 463
# Webservice::InterMine::get_service("Webservice::InterMine", "fake.url/path") called at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine.pm line 207
# Webservice::InterMine::import("Webservice::InterMine", "fake.url/path") called at t/07_intermine/01_integration.t line 87
# main::BEGIN() called at t/07_intermine/01_integration.t line 87
# eval {...} called at t/07_intermine/01_integration.t line 87
# eval 'package main;
# BEGIN { ${^WARNING_BITS} = $args[-1] if defined $args[-1] }
# #line 87 t/07_intermine/01_integration.t
# use Webservice::InterMine @{$args[0]};
# 1;
# ' called at /home/con/perl5/perlbrew/perls/perl-5.38.0/lib/5.38.0/Test/More.pm line 1056
# Test::More::_eval("package main;x{a}BEGIN { ${^WARNING_BITS} = $args[-1] if defined"..., ARRAY(0x564ec7c55fa0), "UUUUUUUUUUUUUUUUUUUU") called at /home/con/perl5/perlbrew/perls/perl-5.38.0/lib/5.38.0/Test/More.pm line 1031
# Test::More::use_ok("Webservice::InterMine", "fake.url/path") called at t/07_intermine/01_integration.t line 87
# BEGIN failed--compilation aborted at t/07_intermine/01_integration.t line 87.
# at t/07_intermine/01_integration.t line 87.
# eval 'package main;
# BEGIN { ${^WARNING_BITS} = $args[-1] if defined $args[-1] }
# #line 87 t/07_intermine/01_integration.t
# use Webservice::InterMine @{$args[0]};
# 1;
# ' called at /home/con/perl5/perlbrew/perls/perl-5.38.0/lib/5.38.0/Test/More.pm line 1056
# Test::More::_eval("package main;x{a}BEGIN { ${^WARNING_BITS} = $args[-1] if defined"..., ARRAY(0x564ec7c55fa0), "UUUUUUUUUUUUUUUUUUUU") called at /home/con/perl5/perlbrew/perls/perl-5.38.0/lib/5.38.0/Test/More.pm line 1031
# Test::More::use_ok("Webservice::InterMine", "fake.url/path") called at t/07_intermine/01_integration.t line 87
No url provided - either directly or on 'use' at t/07_intermine/01_integration.t line 89.
at /home/con/.cpan/build/Webservice-InterMine-1.0405-1/blib/lib/Webservice/InterMine.pm line 457.
Webservice::InterMine::get_service("Webservice::InterMine") called at t/07_intermine/01_integration.t line 89
# Looks like your test exited with 255 just after 1.
t/07_intermine/01_integration.t ............ Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 44/44 subtests
t/10_acceptance/01_live_test.t ............. skipped: Acceptance tests for release testing only
t/10_acceptance/02_lists.t ................. skipped: Acceptance tests for release testing only
t/10_acceptance/02_lists_with_tokens.t ..... skipped: Acceptance tests for release testing only
t/10_acceptance/04_paths.t ................. skipped: Acceptance tests for release testing only
t/10_acceptance/05_summaries.t ............. skipped: Acceptance tests for release testing only
t/10_acceptance/06_redirection.t ........... skipped: Acceptance tests for release testing only
t/10_acceptance/07_lazy_references.t ....... skipped: Acceptance tests for release testing only
t/10_acceptance/08_enrichment.t ............ skipped: Acceptance tests for release testing only
t/10_acceptance/09_widgets.t ............... skipped: Acceptance tests for release testing only
t/10_acceptance/10_id_resolution.t ......... skipped: Acceptance tests for release testing only
t/manifest.t ............................... skipped: Author tests not required for installation
t/moose-hygiene.t .......................... ok
t/pod-coverage.t ........................... skipped: Complete documentation coverage is coming shortly
t/pod.t .................................... ok
Test Summary Report
-------------------
t/07_intermine/01_integration.t (Wstat: 65280 (exited 255) Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 255
Parse errors: Bad plan. You planned 44 tests but ran 1.
Files=36, Tests=4540, 23 wallclock secs ( 0.26 usr 0.04 sys + 21.69 cusr 0.72 csys = 22.71 CPU)
Result: FAIL
Failed 1/36 test programs. 1/4540 subtests failed.
INTERMINE/Webservice-InterMine-1.0405.tar.gz
./Build test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports INTERMINE/Webservice-InterMine-1.0405.tar.gz
how can I install this package?
2
Answers
This bug has been previously reported.
Since the installation failure is in running tests, you should be able to install the module by doing:
The WebService::InterMine module was last released in 2013, and is suffering from drift in the HTTP::Response module (from the LWP distro) on which it depends. See Perl/perl5#20447 To use WebService::InterMine, you need to fix it for the latest HTTP::Response. It looks like the problem is that there is a missing header.
There is another way, that’s quite a bit of work and likely to cause problems in other areas. You can use LWP before the breaking change in 6.42. There are various ways to do that, but they tend to be book-length responses.