Look at this @INC path: /extra/coderyte/nlp-builds/icd/icd-current/tools/perl_lib /extra/coderyte/www/iatqa/cgi-bin /extra/coderyte/www/iatqa/bin/engine/icd /extra/coderyte/www/iatqa/etc /extra/coderyte/www/iatqa/bin/engine/icd/engine /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl Now look at the one @INC you sent me with the program error:
/usr/coderyte/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/coderyte/lib/perl5/site_perl/5.8.8 /usr/coderyte/lib/perl5/5.8.8/x86_64-linux-thread-multi /usr/coderyte/lib/perl5/5.8.8 You see a difference? In fact, I believe you're looking at two different Perl libraries being executed. Note the "perl5" portions of the paths! In the second one, they're all /usr/coderyte/lib. In the one you just sent me, they're "/usr/lib/perl5". The "site_perl" paths are for CPAN modules you install. They're usually in the @INC first, so you can override the versions of the same modules that came wiith the installation. So, your problem is that you are executing two different Perl programs. One you are using when you use Jenkins which is the Perl version that probably came with the system. The other is what you execute when you use the SSH user. Log in as your SSH user, the one which allows the program to work. Then, type in "which perl" at the command line. This is the Perl you must execute as the Jenkins user. Either fix the first line (the shebang (#!)) to point to the SSH user's Perl, or prepend your Perl script with that Perl program (include the full path). On Nov 1, 2012, at 8:31 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: > David, > > Unfortunately i would have to stick to Perl 5.8.8 > Here is more of the error: > > 15:06:11 > > + sh run_prove.sh > > 15:06:18 > ./DBI_CrossFeed_Crosswalk_custom.................................Can't > locate Log/Log4perl.pm in @INC (@INC contains: > /extra/coderyte/nlp-builds/icd/icd-current/tools/perl_lib > /extra/coderyte/www/iatqa/cgi-bin /extra/coderyte/www/iatqa/bin/engine/icd > /extra/coderyte/www/iatqa/etc /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl .) at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx.pm line 28. > > 15:06:18 > BEGIN failed--compilation aborted at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx.pm line 28. > > 15:06:18 > Compilation failed in require at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Lynx_Utilities.pm line 8. > > 15:06:18 > BEGIN failed--compilation aborted at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Lynx_Utilities.pm line 8. > > 15:06:18 > Compilation failed in require at ./DBI_CrossFeed_Crosswalk_custom.t line 10. > > 15:06:18 > BEGIN failed--compilation aborted at ./DBI_CrossFeed_Crosswalk_custom.t line > 10. > > 15:06:18 > # Looks like your test died before it could output anything. > > 15:06:18 > dubious > > 15:06:18 > Test returned status 2 (wstat 512, 0x200) > > 15:06:19 > ./DBI_Services_NoteProfile.......................................Can't > locate Date/Calc.pm in @INC (@INC contains: /extra/coderyte/www/iatqa/cgi-bin > /extra/coderyte/www/iatqa/bin/engine/icd /extra/coderyte/www/iatqa/etc > /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.5 > /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl . > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl .) at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/StagingDB.pm line 3. > > > and so on... > > > 15:06:24 > # Error: Can't locate Text/Unidecode.pm in @INC (@INC contains: > /extra/coderyte/www/iatqa/cgi-bin /extra/coderyte/www/iatqa/bin/engine/icd > /extra/coderyte/www/iatqa/etc /extra/coderyte/www/iatqa/bin/engine/icd/engine > /extra/coderyte/www/iatqa/bin/engine/icd/engine/perl_lib > /extra/coderyte/www/iatqa/bin/engine/icd/engine/preproc > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.5 > /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl . > /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/5.8.5 > /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl > /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl/5.8.5 > /usr/lib64/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi > /usr/lib/perl5/vendor_perl .) at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Feed.pm line 5. > > 15:06:24 > # BEGIN failed--compilation aborted at > /extra/coderyte/www/iatqa/cgi-bin/CodeRyte/Lynx/Feed.pm line 5. > > 15:06:24 > # Compilation failed in require at (eval 1) line 2. > > 15:06:24 > Can't locate object method "new" via package "CodeRyte::Lynx::Feed" at > ./Feed-Binary_Conversion.t line 13. > > 15:06:24 > 1..1 > > 15:06:24 > # Looks like you failed 1 tests of 1. > > 15:06:24 > # Looks like your test died just after 1. > > 15:06:24 > dubious > > 15:06:24 > Test returned status 255 (wstat 65280, 0xff00) > > 15:06:24 > DIED. FAILED test 1 > > 15:06:24 > Failed 1/1 tests, 0.00% okay > > 15:06:24 > ./DBI_Assembler_Primary_Defined_Counts...........................Can't locate > Log/Log4perl.pm in @INC (@INC contains: > > > Strange thing is when @ work, i am connected to this remote slave , and when > i come home and connect via VPN, i am still connected even though the IP > changed, and the connection was severed for the time i was driving. > > > From: David Weintraub <qazw...@gmail.com> > To: jenkinsci-users@googlegroups.com > Sent: Thursday, November 1, 2012 1:09 PM > Subject: Re: /usr/bin/prove: Cannot find blib > > I see you're on Perl 5.8.8 -- a release of Perl that's over six years old. > The "use feature" pragma didn't come in until Perl 5.10 (current version is > 5.16). All that "use feature" does is give you access to the "say" command. > Say is like "print" except that it automatically includes a "\n". > > Use this program. I removed "say" and used "print" instead: > > #!/usr/bin/env perl > use strict; > use warnings; > > use Log::Log4Perl > > print "Perl \@INC: " . join ("\n", @INC) . "\n"; > for my $module (sort keys %INC) { > print qq(\$INC{$module} = "$INC{$module}"\n); > } > > By the way, note the @INC array which printed out as part of the error > message: > > * /usr/coderyte/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi > * /usr/coderyte/lib/perl5/site_perl/5.8.8 > * /usr/coderyte/lib/perl5/5.8.8/x86_64-linux-thread-multi > * /usr/coderyte/lib/perl5/5.8.8 > > Compare that with the one you got as the Jenkins user. (You didn't include > that in your original email!). I can see that Perl 5.8.8 isn't installed as a > standard Perl program because it's under /usr/coderyte and not a standard > directory. On most Unix type systems it's under /usr/share/perl or > /usr/local/perl, or /var/perl or /opt/perl. I suspect that your Jenkins user > is looking in different directories and maybe even using a completely > different version of Perl. > > What's the full error message you're getting with Jenkins. You only gave: > >> 11:41:35 Can't locate Log/Log4perl.pm in @INC (@INC contains: > > You left off the interesting part. > > On Nov 1, 2012, at 12:56 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: > >> Hi David, >> Now i am getting error: >> >> ./test_log4p.pl >> Can't locate feature.pm in @INC (@INC contains: >> /usr/coderyte/lib/perl5/site_perl/5.8.8/x86_64-linux-thread-multi >> /usr/coderyte/lib/perl5/site_perl/5.8.8 >> /usr/coderyte/lib/perl5/5.8.8/x86_64-linux-thread-multi >> /usr/coderyte/lib/perl5/5.8.8 .) at ./test_log4p.pl line 4. >> BEGIN failed--compilation aborted at ./test_log4p.pl line 4. >> >> >> more test_log4p.pl >> >> #!/usr/bin/env perl >> use strict; >> use warnings; >> use feature qw(say); >> >> use Log::Log4Perl >> >> say "Perl \@INC: " . join "\n", @INC; >> for my $module (sort keys %INC) { >> say qq(\$INC{$module} = "$INC{$module}"); >> } >> >> From: David Weintraub <qazw...@gmail.com> >> To: jenkinsci-users@googlegroups.com >> Sent: Thursday, November 1, 2012 12:27 PM >> Subject: Re: /usr/bin/prove: Cannot find blib >> >> Perl CPAN modules can be installed via user or via machine. Normally, if you >> can't get root access on the machine, you install it for that user. Maybe >> the Log::Log4perl module is installed as a user module. Thus, if you're >> running it as another user, you simply can't find the module. >> >> Another possibility is that the module wasn't installed, and is located in a >> different directory than expected. The Perl @INC shows you the directories >> where modules are searched. The %INC hash shows the module loaded and the >> directory where found. >> >> Try a simple program: >> >> use strict; >> use warnings; >> use feature qw(say); >> >> use Log::Log4Perl >> >> say "Perl \@INC: " . join "\n", @INC; >> for my $module (sort keys %INC) { >> say qq(\$INC{$module} = "$INC{$module}"); >> } >> >> Do this via SSH where you can execute run_prove.sh and it works. This will >> show you where this program is searching for the module and where it finds >> it. That will give you an idea why Jenkins can't find it. >> >> If you do find that Log::Log4Perl is not where you expect it, use the "use >> lib" pragma to add that directory to your @INC search array. >> >> On Nov 1, 2012, at 12:15 PM, Kamal Ahmed <kamal2222ah...@yahoo.com> wrote: >> >>> Hi, >>> When i run run_prove.sh after doing an ssh to host , the perl unit tests >>> run fine >>> but when i do it via "Execute shell script on remote host using ssh" i get >>> error: >>> >>> 11:41:35 >>> + prove -b -v -r . >>> >>> 11:41:35 >>> /usr/bin/prove: Cannot find blib >>> >>> 11:41:35 >>> No blib directories found. >>> >>> 11:41:35 Can't locate Log/Log4perl.pm in @INC (@INC contains: >>> >>> I have tried with just execute shell script option as well, same result >>> >>> Would appreciate any help / Hint/Resolution >>> >>> Thanks, >>> -Kamal. >>> >>> >> >> >> > > >