in reply to Re^3: Chart::Clicker Question
in thread Chart::Clicker Question

Thank you. I actually happened upon this list earlier and have been using it.

Initially, I installed all of these modules on our server (Red Hat). This weekend, I installed everything locally on my Mac. The installation on my Mac is better. I was able to run the program above and display the chart as expected.

However, this really isn't an area where I have tremendous expertise! When I use your list as a guide to verify that all modules are installed, I run into some problems. I'm using the following program to check my installed modules:

#!/usr/local/bin/perl use ExtUtils::Installed; my $instmod = ExtUtils::Installed -> new(); print "\n\nPerl Modules:\n\n"; foreach my $module ($instmod -> modules()) { my $version = $instmod -> version($module) || "???"; print "$module -- $version\n"; }; print "\n\nPerl Modules Are Stored Here:\n\n"; print map { $_ . "\n" } @INC;

Many of the modules show up. Many do not. I think all of the modules are loaded, but some are buried. For example, Module::Pluggable is installed here on my Mac:

/Library/Perl/Updates/5.8.9/darwin-thread-multi-2level/Module

Module::Pluggable is one of the modules that is NOT showing up via the above program.

It seems like the modules in the Updates directory aren't showing up when I run the small program above. However, @INC includes: /Library/Perl/Updates/5.8.9/darwin-thread-multi-2level

Maybe this isn't even a problem?

If is use the following in a test program:

use Module::Pluggable;

It doesn't throw any errors.

If this is acceptable, then I think I have a good local install on my Mac. I still have to check the external server.

Am I on the right track??? I feel like I'm in over my head with Chart::Clicker!

Thank you!!!

Replies are listed 'Best First'.
Re^5: Chart::Clicker Question
by Anonymous Monk on Oct 31, 2010 at 15:29 UTC
    ExtUtils::Installed relies on .packlist files being generated by MakeMaker et all being present -- broken distributions break this tradition

      Thanks for the help, but I don't understand. Could you explain this more?

      Are you saying that I can't rely upon ExtUtils::Installed because the .packlist files with the modules I download from CPAN might not be compliant, and therefore these modules won't show up when I look for them using my script?

      If this is the case, is there another way to verify that this LONG list of modules is in fact correctly installed on my server?

      For the halibut, I wrote:

      #!/usr/local/bin/perl use strict; use warnings; use Test::Tester; use Test::PDF; use ExtUtils::PkgConfig; use ExtUtils::Depends; use Cairo; use Test::LongString; use Text::Flow; use Graphics::Primitive::Driver::Cairo; use Math::Gradient; use Set::Infinite; use DateTime::Set; use Algorithm::Diff; use Text::Diff; use Test::Differences; use Color::Scheme; use Class::Data::Inheritable; use Class::Accessor::Fast; use Module::Pluggable; use Color::Library; use Test::Number::Delta; use MooseX::Aliases; use Graphics::Color; use Forest; use Graphics::Primitive; use MooseX::AttributeHelpers; use JSON::Any; use File::Path; use File::NFSLock; use IO::Dir; use Path::Class; use Carp::Clan; use MooseX::Types; use MooseX::Types::Path::Class; use Test::TempDir; use Test::NoWarnings; use Test::Tester; #use Test::Deep; use String::RewritePrefix; use MooseX::Storage; use Math::Complex; use Check::ISA; use Hash::Util::FieldHash::Compat; use Algorithm::C3; use Class::C3; use MRO::Compat; use Scope::Guard; use Devel::GlobalDestruction; use Class::MOP; use Try::Tiny; use Moose; use Task::Weaken; use XSLoader; use base; use Variable::Magic; use Data::OptList; use Sub::Install; use Params::Util; use Sub::Exporter; use B::Hooks::EndOfScope; use Sub::Identify; use Sub::Name; use Package::Stash; use namespace::clean; use Tie::RefHash; use Test::use::ok; use Tie::ToObject; use Data::Visitor; use MooseX::Clone; use Geometry::Primitive; use ExtUtils::MakeMaker; use Layout::Manager; use Time::Local; use List::MoreUtils; use DateTime::Locale; use File::Temp; use Exporter; use ExtUtils::ParseXS; use Module::Build; use Attribute::Handlers; use ExtUtils::CBuilder; use Params::Validate; use Class::Singleton; use DateTime::TimeZone; use Test; use Text::Wrap; use Pod::Escapes; use Pod::Simple; use File::Spec; use Pod::Man; use Sub::Uplevel; use Test::Exception; use Test::Harness; #use Test::More; use Scalar::Util; use DateTime; use Chart::Clicker; print "\nNo module import errors!\n\n"; exit;

      But surely there is a better way to do this sort of thing?

      Thanks!

        .packlist files with the modules I download from CPAN might not be compliant,

        ExtUtils::Installed

        ExtUtils::Installed provides a standard way to find out what core and module files have been installed. It uses the information stored in .packlist files created during installation to provide this information. In addition it provides facilities to classify the installed files and to extract directory information from the .packlist files.
        So, if you install with cpan/Makefile.PL... it will make .packlist when you install.

        If you install with apt-get and other OS specific tools, often times they will not make .packlist files , as such they're broken tools.

        If this is the case, is there another way to verify that this LONG list of modules is in fact correctly installed on my server?

        Does

        • useing the module successfully
        • checking that all the files listed in .packlist exist/compile
        verify that the module is correctly installed?

        I just let CPAN/CPANPLUS handle it