Hi,
I am trying to deploy a free WxPerl app that should work under Linux but
with no success until now.
I first tried to package it with the entire CitrusPerl distribution
(citrusperl-standard-51603-linux-x86-018), but of course, it didn't work
because it should run in the same directory as on my computer.
So I tried a better alternative by creating a distribution using PAR.
I used the following command to create the binary executable:
/home/vinux/CitrusPerl/site/bin/pp -I ./lib -M MaestroDEX::App -M
MaestroDEX::GUI -M MaestroDEX::Search -M MaestroDEX::UpdateMySQLDB -M
MaestroDEX::UpdateSQLiteDB -M MaestroDEX::Roles::CreateMySQLDB -M
MaestroDEX::Roles::CreateSQLiteDB -M MaestroDEX::Roles::Search -M
MaestroDEX::Roles::Update -M DBI -M DBD::SQLite -M Moo -M Wx -M
Config::IniHash -M HTML::Entities -M LWP::UserAgent -M Compress::Zlib -M
Text::Unidecode -M XML::SAX::Expat -M XML::Simple -M Text::LevenshteinXS -M
File::Slurp -M Path::Class -M Wx::Help -M Wx::RichText MaestroDEX.pl
If I run the created program "a.out" right after I create it, it works fine,
but if I rename the directory where CitrusPerl is installed and I run the
program after that, it gives the following error:
Can't load
'/tmp/par-76696e7578/cache-eddde3e81461bf4670c3dd5dec1b01409a6b3d3a/a8ce211f.so'
for module Wx: libwx_gtk2u_adv-2.9.so.4: cannot open shared object file: No
such file or directory at /home/vinux/CitrusPerl/lib/DynaLoader.pm line 190.
at /home/vinux/CitrusPerl/site/lib/PAR/Heavy.pm line 120.
Compilation failed in require at MaestroDEX/App.pm line 4.
BEGIN failed--compilation aborted at MaestroDEX/App.pm line 4.
Compilation failed in require at script/MaestroDEX.pl line 6.
BEGIN failed--compilation aborted at script/MaestroDEX.pl line 6.
So I tried to add the file libwx_gtk2u_adv-2.9.so in the binary executable
using:
/home/vinux/CitrusPerl/site/bin/pp -I ./lib -I ./ -l
./libwx_gtk2u_adv-2.9.so -M MaestroDEX::App -M MaestroDEX::GUI -M
MaestroDEX::Search -M MaestroDEX::UpdateMySQLDB -M
MaestroDEX::UpdateSQLiteDB -M MaestroDEX::Roles::CreateMySQLDB -M
MaestroDEX::Roles::CreateSQLiteDB -M MaestroDEX::Roles::Search -M
MaestroDEX::Roles::Update -M DBI -M DBD::SQLite -M Moo -M Wx -M
Config::IniHash -M HTML::Entities -M LWP::UserAgent -M Compress::Zlib -M
Text::Unidecode -M XML::SAX::Expat -M XML::Simple -M Text::LevenshteinXS -M
File::Slurp -M Path::Class -M Wx::Help -M Wx::RichText MaestroDEX.pl
But no luck, because if I rename again the CitrusPerl directory and I run
the program, it gives the same error like that .so file wouldn't be
packaged.
I guess that many WxPerl apps are ment to be deployed on other computers
where Perl and especially some CPAN modules might not be installed, so
deploying WxPerl apps should be easy. So I am thinking that I am doing
something wrong for sure.
Do you have some tips or source of information about how I can deploy this
WxPerl app to work under Linux?
Thanks.
--Octavian