Mon Jul 27 11:31:06 2009: Request 48240 was acted upon. Transaction: Correspondence added by wfelipe Queue: PAR Subject: MODULE object version 1.YYY does not match $MODULE::VERSION 1.XXX at /usr/lib/perl/5.10/DynaLoader.pm Broken in: 0.994 Severity: Important Owner: Nobody Requestors: wfel...@gmail.com Status: new Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=48240 >
On Mon Jul 27 10:33:43 2009, wfelipe wrote: > I'm using Catalyst Framework to generate the PAR package, and I tried to > find in other forums, but I couldn't find a final solution. > > I'm generating the package with the core modules and all additional > modules that I need, including DBI.pm (my first problem). Once the > package is generated, it's copied to another system (the same perl and > operating system version), which also has a DBI.pm, but an older version. > > When I run the par package, it stops ate the following error: > =============== > Couldn't instantiate component "MyApp::Model::MyApp", > "DBIx::Class::Schema::connection(): No arguments to load_classes and > couldn't load DBIx::Class::Storage::DBI (DBI object version 1.605 does > not match $DBI::VERSION 1.607 at /usr/lib/perl/5.10/DynaLoader.pm line 219. > BEGIN failed--compilation aborted at DBI.pm line 263. > Compilation failed in require at DBIx/Class/Storage/DBI.pm line 8. > BEGIN failed--compilation aborted at DBIx/Class/Storage/DBI.pm line 8. > ) at Catalyst/Model/DBIC/Schema.pm line 318" at > ./script/kickstart_server.pl line 58 > =============== > > My guess is that it loads the DBI.pm from the par package, but it > prioritize the DBI.so installed in the system, which is an older > version. In the par package there are some .so libraries, and one of > them was the DBI.so installed in the system which the package was generated. > > some useful information: > - Operating System: Debian Lenny 5.0.2 > - perl -v: This is perl, v5.10.0 built for x86_64-linux-gnu-thread-multi > > if you need any information, feel free to ask me another information which may be the behavior that I saw above: in the par package, the *.so files are at lib/auto/<PATH>/MODULE.so, but when I run the application, it's uncompressed at /tmp/par-USER/cache-hash/hash.so, and the DynaLoader loads based on the module name, which overload the original one.