Can't locate XXX

When the apache error_log shows an error stating it can’t locate a given .pm
file in @INC what are my steps to resolve this?

Specifically, when I insert the line

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

into my site config, apache won’t start up and complains it cannot find the
ExtractCustomFieldValues.pm

I searched the lists, and some have said the path to the pm is not in the
@INC environment variable and to move the .pm to a place that is. In the
error it lists the @INC variable, and /opt/rt3/local/lib or /opt/rt3/lib
exist in it, so I attempted to move the .pm in question to one of those
areas with no luck…
Strikes me as odd that I’d have to move this considering I’ve installed 2
other extensions prior to this one that fired up with out any issues…

Anyone give me a few steps to troubleshoot or try out?

Thanks!
Mike.

Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: mike.johnson@nosm.ca

When the apache error_log shows an error stating it can’t locate a given .pm
file in @INC what are my steps to resolve this?

Specifically, when I insert the line

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

into my site config, apache won’t start up and complains it cannot find the
ExtractCustomFieldValues.pm

I searched the lists, and some have said the path to the pm is not in the
@INC environment variable and to move the .pm to a place that is. In the
error it lists the @INC variable, and /opt/rt3/local/lib or /opt/rt3/lib
exist in it

In 3.8 @INC should be

rt3/local/lib
rt3/local/plugins/X/lib
rt3/local/plugins/Y/lib
rt3/local/plugins/Z/lib
rt3/lib

If you have set @Plugins to (X Y Z) in the config, but …

  • …, but only some plugins’ paths are in the @INC - check config for
    double Set(@Plugins, …)
  • …, but only some plugins’ paths are in the @INC - check above and
    check permissions on dirs
  • …, but none of rt3/local/plugins/…/lib is in the @INC - check
    above, may be you have earlier 3.8.x release with a bug, upgrade to
    the latest

, so I attempted to move the .pm in question to one of those
areas with no luck…
Strikes me as odd that I’d have to move this considering I’ve installed 2
other extensions prior to this one that fired up with out any issues…

100% there is no need in moving files around. Pretty good chances to
break things further or complicate future upgrades.

Anyone give me a few steps to troubleshoot or try out?

Thanks!
Mike.

Best regards, Ruslan.

The Set(@Plugins line was the problem… I had a spelling mistake.

Now I’m seeing a different error

[Wed Apr 20 08:20:25 2011] [error] Can’t call method “require” without a
package or object reference at /opt/rt3/bin/…/lib/RT.pm line
670.\nCompilation failed in require at (eval 2) line 1.\n
[Wed Apr 20 08:20:25 2011] [error] Can’t load Perl file: /opt/rt3/bin/
webmux.pl for server myserver.mydomain.com:0, exiting…
By looking at the code in RT.pm, and my very limited Perl knowledge… it
seems when it’s reading through trying to find all the Plugins defined in
the RT_SiteConfig.pm it hiccups on the newly corrected Set(@Plugins…);
line for ExtractCustomFieldValues.

My Set line is as follows:

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

As indicated on the wiki page for ExtractCustomFieldValues.

I’m trying to figure out exactly what the Set(@Plugins line means(till now,
I’ve simply used what was posted on the wiki, without understanding what
each piece of the config line actually means…) but I’m having a hard time
googling/searching wiki or rt-users for that information.

This page http://requesttracker.wikia.com/wiki/SiteConfig tells you a little
bit of the Plugins line, but doesn’t define what it means. I’m assuming I’d
inherently know this if I knew more about Perl itself…On Wed, Apr 20, 2011 at 1:17 AM, Ruslan Zakirov ruz@bestpractical.comwrote:

On Tue, Apr 19, 2011 at 9:29 PM, Mike Johnson mike.johnson@nosm.ca wrote:

When the apache error_log shows an error stating it can’t locate a given
.pm
file in @INC what are my steps to resolve this?

Specifically, when I insert the line

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

into my site config, apache won’t start up and complains it cannot find
the
ExtractCustomFieldValues.pm

I searched the lists, and some have said the path to the pm is not in the
@INC environment variable and to move the .pm to a place that is. In the
error it lists the @INC variable, and /opt/rt3/local/lib or /opt/rt3/lib
exist in it

In 3.8 @INC should be

rt3/local/lib
rt3/local/plugins/X/lib
rt3/local/plugins/Y/lib
rt3/local/plugins/Z/lib
rt3/lib

If you have set @Plugins to (X Y Z) in the config, but …

  • …, but only some plugins’ paths are in the @INC - check config for
    double Set(@Plugins, …)
  • …, but only some plugins’ paths are in the @INC - check above and
    check permissions on dirs
  • …, but none of rt3/local/plugins/…/lib is in the @INC - check
    above, may be you have earlier 3.8.x release with a bug, upgrade to
    the latest

, so I attempted to move the .pm in question to one of those
areas with no luck…
Strikes me as odd that I’d have to move this considering I’ve installed 2
other extensions prior to this one that fired up with out any issues…

100% there is no need in moving files around. Pretty good chances to
break things further or complicate future upgrades.

Anyone give me a few steps to troubleshoot or try out?

Thanks!
Mike.


Best regards, Ruslan.

Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: mike.johnson@nosm.ca

The Set(@Plugins line was the problem… I had a spelling mistake.

Now I’m seeing a different error

[Wed Apr 20 08:20:25 2011] [error] Can’t call method “require” without a
package or object reference at /opt/rt3/bin/…/lib/RT.pm line
670.\nCompilation failed in require at (eval 2) line 1.\n
[Wed Apr 20 08:20:25 2011] [error] Can’t load Perl file: /opt/rt3/bin/
webmux.pl for server myserver.mydomain.com:0, exiting…

This implies you have some junk in your @Plugins, what else are you
loading?

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

Do you have a literal … in there?

Also, normally I recommend the README in an extension over something
in the wiki which may be unfortunately out of date (since engineers
tend to update the closest docs)

When installing, did you run all the steps? Install and initdb (but
only once).

-kevin

Ok bare with the long email!

Yes, I have a literal … It’s quite amazing how far you can get with an RT
setup based on wiki pages and rt-users listserv history without actually
knowing ANY Perl what so ever :smiley: I have ExternalAuth and RT-FM setup as
other plugins… and all I did with those was follow step by step on the
wiki pages/READMEs. For both, I copied and pasted the “Set” line for the
RT_SiteConfig.pm directly from there. So being 100% honest, I never thought
of what it is or how it’s works, just that the README or wiki told me it was
required.

Once Ruslan pointed to that line being a potential problem, I realized
RTFM wasn’t ACTUALLY working… only the RTFM data was there, the
functionality wasn’t working. I attempted to search for more information on
what that line is actually doing, but all I found was the wiki page
mentioned in the previous email. Which on that page specifically states you
can’t have 2 @Plugin sets… that’s why RTFM wasn’t working…

Now with that knowledge, I understand my config line should read

Set(@Plugins,qw(
RT::Authen::ExternalAuth
RT:Extension::ExtractCustomFieldValues
));

The original information from Ruslan makes more sense now. I have corrected
that, and the new error is back to the Can’t locate the .pm in @INC.

So now, what I believe that error is telling me is

…RT:Extension::ExtractCustomFieldValues

is an abstractual definition of where the ExtractCustomFieldValues.pm is
located within one of the paths of the @INC variable.

Taking the working ExternalAuth plugin string, which is
‘RT::Authen::ExternalAuth’, I understand that RT::Authen equates to
RT/Authen and ExternalAuth is the .pm

That means, as long as @INC has the path before RT/Authen/ExternalAuth.pm
we’re good!

What I don’t understand now is how @INC gets
/opt/rt3/local/plugins/RT-Authen-ExternalAuth/lib

I could do a hack, and get it to work with the knowledge I have built now,
but I’m looking for the RIGHT way to do it.

How do I tell get /opt/rt3/local/plugins/ExtractCustomFieldValues in @INC?

And providing I can do the above, the way the tgz file untar’s, the .pm file
is in that directory, so my Set @Plugins line would look like

Set(@Plugins,qw(CustomFieldValues RT:Authen:ExternalAuth));

Sorry for the long email, but I wanted to ensure my assumptions are correct
all the way through the troubleshooting logic I’ve used.

Thanks!
Mike.On Wed, Apr 20, 2011 at 11:38 AM, Kevin Falcone falcone@bestpractical.comwrote:

On Wed, Apr 20, 2011 at 08:45:44AM -0400, Mike Johnson wrote:

The Set(@Plugins line was the problem… I had a spelling mistake.

Now I’m seeing a different error

[Wed Apr 20 08:20:25 2011] [error] Can’t call method “require” without a
package or object reference at /opt/rt3/bin/…/lib/RT.pm line
670.\nCompilation failed in require at (eval 2) line 1.\n
[Wed Apr 20 08:20:25 2011] [error] Can’t load Perl file: /opt/rt3/bin/
webmux.pl for server myserver.mydomain.com:0, exiting…

This implies you have some junk in your @Plugins, what else are you
loading?

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

Do you have a literal … in there?

Also, normally I recommend the README in an extension over something
in the wiki which may be unfortunately out of date (since engineers
tend to update the closest docs)

When installing, did you run all the steps? Install and initdb (but
only once).

-kevin

By looking at the code in RT.pm, and my very limited Perl knowledge… it
seems when it’s reading through trying to find all the Plugins defined in
the RT_SiteConfig.pm it hiccups on the newly corrected Set(@Plugins…);
line for ExtractCustomFieldValues.

My Set line is as follows:

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

As indicated on the wiki page for ExtractCustomFieldValues.

I’m trying to figure out exactly what the Set(@Plugins line means(till
now,
I’ve simply used what was posted on the wiki, without understanding what
each piece of the config line actually means…) but I’m having a hard
time
googling/searching wiki or rt-users for that information.

This page http://requesttracker.wikia.com/wiki/SiteConfig tells you a
little
bit of the Plugins line, but doesn’t define what it means. I’m assuming
I’d
inherently know this if I knew more about Perl itself…

On Wed, Apr 20, 2011 at 1:17 AM, Ruslan Zakirov <ruz@bestpractical.com wrote:

On Tue, Apr 19, 2011 at 9:29 PM, Mike Johnson mike.johnson@nosm.ca wrote:

When the apache error_log shows an error stating it can’t locate a
given
.pm
file in @INC what are my steps to resolve this?

Specifically, when I insert the line

Set(@Plugins,qw(… RT::Extension::ExtractCustomFieldValues));

into my site config, apache won’t start up and complains it cannot
find
the
ExtractCustomFieldValues.pm

I searched the lists, and some have said the path to the pm is not in
the
@INC environment variable and to move the .pm to a place that is. In
the
error it lists the @INC variable, and /opt/rt3/local/lib or
/opt/rt3/lib
exist in it

In 3.8 @INC should be

rt3/local/lib
rt3/local/plugins/X/lib
rt3/local/plugins/Y/lib
rt3/local/plugins/Z/lib
rt3/lib

If you have set @Plugins to (X Y Z) in the config, but …

  • …, but only some plugins’ paths are in the @INC - check config for
    double Set(@Plugins, …)
  • …, but only some plugins’ paths are in the @INC - check above and
    check permissions on dirs
  • …, but none of rt3/local/plugins/…/lib is in the @INC - check
    above, may be you have earlier 3.8.x release with a bug, upgrade to
    the latest

, so I attempted to move the .pm in question to one of those
areas with no luck…
Strikes me as odd that I’d have to move this considering I’ve
installed 2
other extensions prior to this one that fired up with out any
issues…

100% there is no need in moving files around. Pretty good chances to
break things further or complicate future upgrades.

Anyone give me a few steps to troubleshoot or try out?

Thanks!
Mike.


Best regards, Ruslan.


Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: mike.johnson@nosm.ca

Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: mike.johnson@nosm.ca

Now with that knowledge, I understand my config line should read

Set(@Plugins,qw(
RT::Authen::ExternalAuth
RT:Extension::ExtractCustomFieldValues
));

That looks correct

What I don’t understand now is how @INC gets
/opt/rt3/local/plugins/RT-Authen-ExternalAuth/lib

Because that is where RT expects plugins to live,
local/plugin/Plugin-Name/
which logically separates the code for each plugin

I could do a hack, and get it to work with the knowledge I have built now,
but I’m looking for the RIGHT way to do it.

How do I tell get /opt/rt3/local/plugins/ExtractCustomFieldValues in @INC?

how did it end up there, that isn’t the directory structure for RT
plugins.

And providing I can do the above, the way the tgz file untar’s, the .pm file
is in that directory, so my Set @Plugins line would look like

Set(@Plugins,qw(CustomFieldValues RT:Authen:ExternalAuth));

No, this is incorrect

How did you install RT-Extension-ExtractCustomFieldValues
I believe you missed a step from the README included with the
extension.

Please note, you do not ever just untar an extension into /opt/rt3
You untar it into your home or a source directory and follow the
directions in the README which will ensure that it is placed into the
proper location for RT.

-kevin

Ah… that opens my eyes a bit more…

How do I tell get /opt/rt3/local/plugins/ExtractCustomFieldValues in
@INC?

how did it end up there, that isn’t the directory structure for RT
plugins.

I put it there trying to mimic how ExternalAuth worked. I’ve backed it out
now and used the Makefile for it to place itself where it wants to.

It placed the ExtractCustomFieldValues.pm in

/opt/rt3/lib/RT/Action

So now my Plugin’s looks like this

Set(@Plugins,qw(
RT::Authen::ExternalAuth
RT::Action::ExtractCustomFieldValues
));

How did you install RT-Extension-ExtractCustomFieldValues
I believe you missed a step from the README included with the
extension.

Please note, you do not ever just untar an extension into /opt/rt3
You untar it into your home or a source directory and follow the
directions in the README which will ensure that it is placed into the
proper location for RT.

-kevin

Thank you Kevin, I did not know that!

I have backed out what I did, and followed the correct method and it seems
my setup is no longer throwing errors and RT can run :smiley:

I appreciate the responses and knowledge that I’ve gained from them.

Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: mike.johnson@nosm.ca

Ah… that opens my eyes a bit more…

 > How do I tell get /opt/rt3/local/plugins/ExtractCustomFieldValues in @INC?

 how did it end up there, that isn't the directory structure for RT
 plugins.

I put it there trying to mimic how ExternalAuth worked. I’ve backed it out now and used the

That isn’t how ExternalAuth works either, it works with a standard
make install
and would be in local/plugins/RT-Authen-ExternalAuth

Makefile for it to place itself where it wants to.
It placed the ExtractCustomFieldValues.pm in
/opt/rt3/lib/RT/Action

That’s wrong.

What version of RT and the module are you running.
3.06 (newest on CPAN) and 3.8.10 install into
local/plugins/RT-Extension-ExtractCustomFieldValues
as expected.

-kevin

We are running RT 3.8.10. ExternalAuth is installed as you mentioned below.

The version I got was from
http://requesttracker.wikia.com/wiki/ExtractCustomFieldValues

The link behind “newest version always here”

It extracted to version 1.06 :frowning: no wonder I’m having issues.

I have downloaded and installed based on all your previous statements…
everything worked smoothly.

I wish I knew what I know now…

I thank you very much!

Mike.On Wed, Apr 20, 2011 at 4:05 PM, Kevin Falcone falcone@bestpractical.comwrote:

On Wed, Apr 20, 2011 at 03:51:57PM -0400, Mike Johnson wrote:

Ah… that opens my eyes a bit more…

 > How do I tell get /opt/rt3/local/plugins/ExtractCustomFieldValues

in @INC?

 how did it end up there, that isn't the directory structure for RT
 plugins.

I put it there trying to mimic how ExternalAuth worked. I’ve backed it
out now and used the

That isn’t how ExternalAuth works either, it works with a standard
make install
and would be in local/plugins/RT-Authen-ExternalAuth

Makefile for it to place itself where it wants to.
It placed the ExtractCustomFieldValues.pm in
/opt/rt3/lib/RT/Action

That’s wrong.

What version of RT and the module are you running.
3.06 (newest on CPAN) and 3.8.10 install into
local/plugins/RT-Extension-ExtractCustomFieldValues
as expected.

-kevin

So now my Plugin’s looks like this
Set(@Plugins,qw(
RT::Authen::ExternalAuth
RT::Action::ExtractCustomFieldValues
));

 How did you install RT-Extension-ExtractCustomFieldValues
 I believe you missed a step from the README included with the
 extension.

 Please note, you do not ever just untar an extension into /opt/rt3
 You untar it into your home or a source directory and follow the
 directions in the README which will ensure that it is placed into

the

 proper location for RT.
 -kevin

Thank you Kevin, I did not know that!
I have backed out what I did, and followed the correct method and it
seems my setup is no
longer throwing errors and RT can run :smiley:
I appreciate the responses and knowledge that I’ve gained from them.

Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: [1]mike.johnson@nosm.ca

References

Visible links

  1. mailto:mike.johnson@nosm.ca

Mike Johnson
Datatel Programmer/Analyst
Northern Ontario School of Medicine
955 Oliver Road
Thunder Bay, ON P7B 5E1
Phone: (807) 766-7331
Email: mike.johnson@nosm.ca