2 depend or not 2 depend
Paulo Edgar Castro
pauloedgarcastro at gmail.com
Thu Feb 4 17:46:46 GMT 2010
Dear mongers,
I come to you in the hope of enlightenment....
At the place were I work we a have a perl software suite that depends on
roughly 148 modules not counting of course on the dependencies that
these 148 modules have.
Ignoring the fact that we currently have a perl binary which has all the
modules necessary to run the application, let's supposed we're changing
processor architecture and we'd like the same version of perl to run and
we would require exactly the same module versions that we currently have
on the old system. Let's assume that there are not architectural
problems installing the modules in this new architecture.
Long story short as I think I'm making a bit of a mess with the question...
We want to install all the 148 modules with the exact version number of
what we currently have installed. Preferably we want to install
everything exactly as we have.
Our initial thought was to just run through the motions of the app
Makefile which has defined these 148 modules with perl Makefile.PL
--defaultdeps && make
and wait for the modules to install.
Then the penny droped and we realized that we were getting the latest
versions of each module which was not what we wanted.
Sure we could go the route of installing/updating all the modules and
QAing the app in order to prove that it still works.
But there are issues with some modules which don't play nicely nor pass
almost none of the tests and might break everything when different
versions of the modules they depend on are installed in the system.
We also though that we could force a specific version of a module
installation with for example "install
M/MS/MSCHWERN/Test-Simple-0.62.tar.gz"
But then CPAN would go on installing the latest Test-0.69 when
Test-Simple-0.62 explicitly depends on Test-0.66 and thus not ready yet
for 0.69.
The problem is, there doesn't seem to be a way of defining explicit
dependencies like I depend on module version 0.1 so go on and install me
that module version 0.1 not higher or lower in case you have problems
either die or get back to me with options.
Possible solutions:
a)
* Get a listing of all the modules installed in the system
* Try to mirror that list using our own bastard version of CPAN with
cpansite ?
b)
* Get a listing of all the modules installed in the system
* ..and installed them by hand
We currently use our own compiled version of perl 5.8.8
Below follows a snippet of our Makefile.
It's very likely that I might be missing some obvious knowledge/tricks here.
Would there be a cleverer way to accomplish this ?
Tkx/Regards,
PECastro
Makefile snippet....
requires(
'Cache::Memcached::Managed' => '0.20',
'Carp::Always' => '0.09',
'Carp::REPL' => '0.14',
'Catalyst::Action::RenderView' => '0.11',
'Catalyst::Authentication::Store::LDAP' => '0.1004',
'Catalyst::Component::InstancePerContext' => '0.001001',
'Catalyst::Component::InstancePerContext' => '0.001001',
'Catalyst::Engine::Stomp' => '0.06',
'Catalyst::Log::Log4perl' => '1.00',
'Catalyst::Model::DBIC::Schema' => '0.29',
'Catalyst::Model::File' => '0.08',
'Catalyst::Plugin::Authentication' => '0.10013',
'Catalyst::Plugin::Authorization::ACL' => '0.11',
'Catalyst::Plugin::Authorization::Roles' => '0.07',
....
....
....
...
)
More information about the london.pm
mailing list