Bug #12253
closedMissing perl module XML/TreePP.pm
Description
With rudder-agent-4.3.0.rc1-1.SLES.12.x86_64
sles12sp2# rudder agent run -v > /dev/null Can't locate XML/TreePP.pm in @INC (you may need to install the XML::TreePP module) (@INC contains: /usr/lib/perl5/site_perl/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.18.2 /usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.18.2 /usr/lib/perl5/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/5.18.2 /usr/lib/perl5/site_perl .) at /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl line 5. BEGIN failed--compilation aborted at /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl line 5.
I presume it would help to build the agent with the dependency to the appropriate module (which yet I havent found you what it is)?
Updated by Nicolas CHARLES over 6 years ago
- Target version set to 4.3.0~rc2
- Severity changed from Minor - inconvenience | misleading | easy workaround to Major - prevents use of part of Rudder | no simple workaround
- Priority changed from 50 to 70
Thank Janos,
We are supposely requiering the correct dependency.
I got this exact same issue when, for some reason, the downloaded version was a i686 on a x86_64 (which doesn't seems to be the case), and Felix had it on a debian 9, but it fixed itself
Could you check if TreePP.PM is present anywhere on your system ? It may be that we are not looking at the right place
Updated by Janos Mattyasovszky over 6 years ago
yes very strange.
# rudder agent run > /dev/null # find / -name TreePP.pm /opt/rudder/lib/perl5/XML/TreePP.pm # rpm -qf /opt/rudder/lib/perl5/XML/TreePP.pm rudder-agent-4.3.0.rc1-1.SLES.12.x86_64
I was still an "ah crap" moment...
Updated by Nicolas CHARLES over 6 years ago
Very strange indeed ... do you know if something happened in-between ?
Could it be a delayed ldconfig ?
Updated by Janos Mattyasovszky over 6 years ago
I don't think it's an ldconfig thing since it's a XML::TreePP -- Pure Perl implementation for parsing/writing XML documents
, no .so files involved...
NEvertheless, it resolved itself, but it's still strange.
Updated by Janos Mattyasovszky over 6 years ago
Okay got it again.
R: ******************************************************************************** * WARNING Generated inventory is not valid, as it is missing mandatory fields. * * Not sending it to the Rudder Server * * You can get a full error message by running: /usr/bin/perl /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl /var/rudder/tmp/inventory/fqdn-04f7cc13-d1e8-4c6c-a985-a07898f7f5d4.ocs ********************************************************************************
The issue happens due the test-inventory.pl not being executed with the bundled perl but the OS-Perl.
/usr/bin/perl /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl /var/rudder/tmp/inventory/fqdn-04f7cc13-d1e8-4c6c-a985-a07898f7f5d4.ocs Can't locate XML/TreePP.pm in @INC (you may need to install the XML::TreePP module) (@INC contains: /usr/lib/perl5/site_perl/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.18.2 /usr/lib/perl5/vendor_perl/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.18.2 /usr/lib/perl5/5.18.2/x86_64-linux-thread-multi /usr/lib/perl5/5.18.2 /usr/lib/perl5/site_perl .) at /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl line 5. BEGIN failed--compilation aborted at /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl line 5.
It helps if I manually specify the perl5lib envvar:
fqdn# PERL5LIB=/opt/rudder/lib/perl5 /usr/bin/perl /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl /var/rudder/tmp/inventory/fqdn-04f7cc13-d1e8-4c6c-a985-a07898f7f5d4.ocs
Updated by Janos Mattyasovszky over 6 years ago
Apparently there is somekind of strangeness going on:
./inventory/1.0/fusionAgent.cf: "has_rudder_perl" expression => fileexists("/opt/rudder/bin/perl");
vs:
# ll /opt/rudder/bin/perl ls: cannot access '/opt/rudder/bin/perl': No such file or directory
So it does not use the build-in perl, which means it's not using the only rudder-provided perl module
Is it possible the perl is copied there if it's hanging on a root server and receiving policy?
Updated by Nicolas CHARLES over 6 years ago
- Related to Bug #12235: Inventory failed on debian 9 on relay only added
Updated by Nicolas CHARLES over 6 years ago
Hi Janos,
The following error message
You can get a full error message by running: /usr/bin/perl /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl /var/rudder/tmp/inventory/fqdn-04f7cc13-d1e8-4c6c-a985-a07898f7f5d4.ocs
is really surprising - it should contain a -I somewhere, code does include that
Is it a copy&paste issue, or are you really missing the -I part in the report ??
Updated by Nicolas CHARLES over 6 years ago
- Related to Bug #12042: Inventory validation broken on Centos 7 on Rudder 4.3 added
Updated by Alexis Mousset over 6 years ago
Looks a lot like #12042, which should have been fixed in 4.3beta1. rc1 package content looks correct. Did this happen with initial ppolicies? If not, what is the version of rudder-techniques on the server?
Updated by Vincent MEMBRÉ over 6 years ago
- Target version changed from 4.3.0~rc2 to 4.3.0~rc3
Updated by François ARMAND over 6 years ago
- Translation missing: en.field_tag_list set to Blocking 4.3
Updated by Vincent MEMBRÉ over 6 years ago
- Target version changed from 4.3.0~rc3 to 4.3.0
Updated by François ARMAND over 6 years ago
- Status changed from New to Rejected
We were not able to reproduce it recently. It could had been a variation of #12042, and we did a lot of iteration in the packaging of the agent on that release cycle.
I'm closing it for now.
If you happen to still encounter it in 4.3-rc3 or latter, please reoppen the tikcet with the conditions when it happens.
Updated by Nicolas CHARLES over 6 years ago
I just got the same when upgrading from 4.1 to 4.3 on debian9
root@server:/opt/rudder/sbin# /usr/bin/perl /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl /var/rudder/tmp/inventory/server-root.ocs Can't locate XML/TreePP.pm in @INC (you may need to install the XML::TreePP module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl line 5. BEGIN failed--compilation aborted at /var/rudder/cfengine-community/inputs/inventory/1.0/test-inventory.pl line 5.
root@server:/opt/rudder/sbin# locate TreePP /opt/rudder/lib/perl5/XML/TreePP.pm /opt/rudder/lib/perl5/x86_64-linux-gnu-thread-multi/.meta/XML-TreePP-0.43 /opt/rudder/lib/perl5/x86_64-linux-gnu-thread-multi/.meta/XML-TreePP-0.43/MYMETA.json /opt/rudder/lib/perl5/x86_64-linux-gnu-thread-multi/.meta/XML-TreePP-0.43/install.json /opt/rudder/lib/perl5/x86_64-linux-gnu-thread-multi/auto/XML/TreePP /opt/rudder/lib/perl5/x86_64-linux-gnu-thread-multi/auto/XML/TreePP/.packlist
since inventory was not updated, the command line used to cal perl is invalid