Trouble/Error with Web deployment httpd/apache/mod_fcgid

I’ve installed RT/RT-IR and been using it to test by executing rt-server in
stand alone “mode”, however I need to get RT/RT-IR working with httpd/apache
and after looking through all the documentation and being overwhelmed by far
too many options it seems that the best fit for me is to use mod-fcgid. I’m
running CentOS on httpd/apache 2.4.6 and RT 4.2.12 currently…I’ve
followed the the documentation here:

https://www.bestpractical.com/docs/rt/4.2/web_deployment.html#mod_fcgid

I’ve added the FcgidMaxRequestLen & FcgidBusyTimeout settings see configs
below
…but when I start httpd and attempt to browse to RT in my web
browser I get Internal Server Error 500 and this in the apache/httpd
logs…I’m stuck at this point…I’m not an Apache/httpd configuration
expert especially when modules are involved so I would GREATLY appreciate
any and all help:

Can’t locate UNIVERSAL/require.pm in @INC (@INC contains:
/opt/rt4/sbin/…/local/lib /opt/rt4/sbin/…/lib /usr/local/lib64/perl5
/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/opt/rt4/sbin/…/lib/RT.pm line 60.
BEGIN failed–compilation aborted at /opt/rt4/sbin/…/lib/RT.pm line 60.
Compilation failed in require at /opt/rt4/sbin/rt-server.fcgi line 86.

Contents of: /etc/httpd/conf.d/rt.conf

### Optional apache logs for RT # Ensure that your log rotation scripts know about these files # ErrorLog /opt/rt4/var/log/apache_access # TransferLog /opt/rt4/var/log/apache_access # LogLevel info
    AddDefaultCharset UTF-8

    ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/

    DocumentRoot "/opt/rt4/share/html"
    <Location />

        Require all granted

        Options +ExecCGI
        AddHandler fcgid-script fcgi
    </Location>
# Contents of /etc/httpd/conf.d/fcgid.conf

This is the Apache server configuration file for providing FastCGI

support

through mod_fcgid

Documentation is available at

mod_fcgid - Apache HTTP Server Version 2.5

Use FastCGI to process .fcg .fcgi & .fpl scripts

AddHandler fcgid-script fcg fcgi fpl

Sane place to put sockets and shared memory file

FcgidIPCDir /run/mod_fcgid
FcgidProcessTableFile /run/mod_fcgid/fcgid_shm

Increase maximum request size per RT/RT-IR docs:

Web deployment - RT 4.2.17 Documentation - Best Practical

- added by me

FcgidMaxRequestLen 1073741824

Increase script execution timeout duration - added by me

FcgidBusyTimeout 600

Thank you!

-Drew

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-httpd-apache-mod-fcgid-tp60979.html

I have the exact same problem with centos 7On Mon, Nov 23, 2015 at 11:02 AM, dwdixon dwdixon@umich.edu wrote:

I’ve installed RT/RT-IR and been using it to test by executing rt-server in
stand alone “mode”, however I need to get RT/RT-IR working with
httpd/apache
and after looking through all the documentation and being overwhelmed by
far
too many options it seems that the best fit for me is to use mod-fcgid.
I’m
running CentOS on httpd/apache 2.4.6 and RT 4.2.12 currently…I’ve
followed the the documentation here:

Web deployment - RT 4.2.17 Documentation - Best Practical

I’ve added the FcgidMaxRequestLen & FcgidBusyTimeout settings see configs
below
…but when I start httpd and attempt to browse to RT in my web
browser I get Internal Server Error 500 and this in the apache/httpd
logs…I’m stuck at this point…I’m not an Apache/httpd configuration
expert especially when modules are involved so I would GREATLY appreciate
any and all help:


Can’t locate UNIVERSAL/require.pm in @INC (@INC contains:
/opt/rt4/sbin/…/local/lib /opt/rt4/sbin/…/lib /usr/local/lib64/perl5
/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/opt/rt4/sbin/…/lib/RT.pm line 60.
BEGIN failed–compilation aborted at /opt/rt4/sbin/…/lib/RT.pm line 60.
Compilation failed in require at /opt/rt4/sbin/rt-server.fcgi line 86.



Contents of: /etc/httpd/conf.d/rt.conf

### Optional apache logs for RT # Ensure that your log rotation scripts know about these files # ErrorLog /opt/rt4/var/log/apache_access # TransferLog /opt/rt4/var/log/apache_access # LogLevel info
    AddDefaultCharset UTF-8

    ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/

    DocumentRoot "/opt/rt4/share/html"
    <Location />

        Require all granted

        Options +ExecCGI
        AddHandler fcgid-script fcgi
    </Location>

Contents of /etc/httpd/conf.d/fcgid.conf

This is the Apache server configuration file for providing FastCGI

support

through mod_fcgid

Documentation is available at

mod_fcgid - Apache HTTP Server Version 2.5

Use FastCGI to process .fcg .fcgi & .fpl scripts

AddHandler fcgid-script fcg fcgi fpl

Sane place to put sockets and shared memory file

FcgidIPCDir /run/mod_fcgid
FcgidProcessTableFile /run/mod_fcgid/fcgid_shm

Increase maximum request size per RT/RT-IR docs:

Web deployment - RT 4.2.17 Documentation - Best Practical

- added by me

FcgidMaxRequestLen 1073741824

Increase script execution timeout duration - added by me

FcgidBusyTimeout 600


Thank you!

-Drew


View this message in context:
http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-httpd-apache-mod-fcgid-tp60979.html
Sent from the Request Tracker - User mailing list archive at Nabble.com.

Hi Gerald…I can confirm I am also running this on CentOS 7…maybe that
was a mistake or maybe someone can help us out with getting this
resolved…I certainly hope the latter is the case! Thanks in advance to
anyone who can help us out here…

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-httpd-apache-mod-fcgid-tp60979p60981.html

Hi,

maybe you will try to use a separate perl installation?

https://www.bestpractical.com/docs/rt/4.2.12/rt_perl.html

#  http://www.cpan.org/src/README.html
mkdir -p /opt/perl-5.18.4/src
cd /opt/perl-5.18.4/src
wget http://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2
tar -xjf perl-5.18.4.tar.bz2
cd perl-5.18.4
CFLAGS='-m64 -mtune=nocona' ./Configure -Dprefix=/opt/perl-5.18.4 -Dusethreads -des -Accflags=-fPIC

make -j8 install

ln -sf /opt/perl-5.18.4/ /opt/perl

emacs -nw /etc/profile
        # perl
        PATH=/opt/perl/bin:$PATH
        export PATH

# Vereinfachungen 
    # Installieren von perl modulen OHNE dauerndes "yes" ...
    # http://stackoverflow.com/questions/898782/how-do-i-tell-cpan-to-install-all-dependencies
    # z.B. durch PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install XML::LibXML'
    # oder cpanm:
    curl -L http://cpanmin.us | /opt/perl/bin/perl - --sudo App::cpanminus

export RT_FIX_DEPS_CMD=/opt/perl/bin/cpanm
… go on with the RT installation.

best regards
Danny

P.S.: mod_perl could be a problem - maybe you should use fastcgi instead.

smime.p7s (2.23 KB)

mkdir -p /opt/perl-5.18.4/src
cd /opt/perl-5.18.4/src
wget http://www.cpan.org/src/5.0/perl-5.18.4.tar.bz2
tar -xjf perl-5.18.4.tar.bz2
cd perl-5.18.4
CFLAGS='-m64 -mtune=nocona' ./Configure -Dprefix=/opt/perl-5.18.4 -Dusethreads -des -Accflags=-fPIC
...

Perl::Build might simplify some of these steps -

Perl::Build might simplify some of these steps -
Perl::Build - perl builder - metacpan.org

Cool! - didn’t know this way…

Thx
Danny

smime.p7s (2.23 KB)

I should also add I’m not a perl expert either, but from what I understand I
am using fastcgi am I not? This all seems a lot more complex than I was
hoping, I greatly appreciate the suggestions and help but I don’t know that
I want use a totally separate perl installation unless absolutely
necessary…

What made you suggest that mod_perl is the problem and how can I test that
out?

I’m currently running this version of perl:
Name : perl
Arch : x86_64
Epoch : 4
Version : 5.16.3
Release : 285.el7
Size : 22 M
Repo : installed

From repo : base
Summary : Practical Extraction and Report Language
URL : http://www.perl.org/

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p60985.html

I should also add I’m not a perl expert either, but from what I understand I
am using fastcgi am I not?

I don’t know how you connect your apache httpd to rt (-; If you use fastcgi, there’s no need for mod_perl.

This all seems a lot more complex than I was
hoping, I greatly appreciate the suggestions and help but I don’t know that
I want use a totally separate perl installation unless absolutely
necessary…

I think, a separate perl installation dedicated(!) for RT is the best way to install RT. Why? Because
the RT installer bypass the rpm package system installing some other perl modules. This could bother you later …

What made you suggest that mod_perl is the problem and how can I test that
out?

Did you execute
make testdeps
in your rt installation directory? Is it clean?

Danny

smime.p7s (2.23 KB)

According to the testdeps output it’s saying I only need Perl >= 5.10.1, but
I also wanted to add that all the dependencies are report as found:

perl:
>=5.10.1(5.16.3) …found

…SNIP…

*UNIVERSAL::require ...found*

…SNIP…

…SNIP…

FASTCGI dependencies:
FCGI::ProcManager …found
FCGI >= 0.74 …found

…SNIP…

All dependencies have been found.

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p60987.html

According to the testdeps output it’s saying I only need Perl >= 5.10.1, but
I also wanted to add that all the dependencies are report as found:


perl:
>=5.10.1(5.16.3) …found

…SNIP…

UNIVERSAL::require …found

All dependencies have been found.


OK - could you check (find) where the “UNIVERSAL/require.pm” is inside your perl tree?
E.g. (from my system - seprate perl installation)
./lib/perl5/site_perl/5.20.3/UNIVERSAL
./lib/perl5/site_perl/5.20.3/UNIVERSAL/require.pm

Should be (or not :wink: somewhere in the pathes below:

Can’t locate UNIVERSAL/require.pm in @INC (@INC contains:
/opt/rt4/sbin/…/local/lib /opt/rt4/sbin/…/lib /usr/local/lib64/perl5
/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/opt/rt4/sbin/…/lib/RT.pm line 60.
BEGIN failed–compilation aborted at /opt/rt4/sbin/…/lib/RT.pm line 60.
Compilation failed in require at /opt/rt4/sbin/rt-server.fcgi line 86.

regards
Danny

smime.p7s (2.23 KB)

Thanks much for your continued help with this Danny! It appears mine is
located here:

/root/perl5/lib/perl5/UNIVERSAL
/root/perl5/lib/perl5/UNIVERSAL/require.pm

However, the output results of the find command gave me all these references
to “UNIVERSAL”:

/root/.cpan/build/UNIVERSAL-require-0.18-iwKUjp/lib/UNIVERSAL
/root/.cpan/build/UNIVERSAL-require-0.18-iwKUjp/blib/lib/UNIVERSAL
/root/.cpan/build/UNIVERSAL-require-0.18-iwKUjp/blib/lib/auto/UNIVERSAL
/root/.cpan/build/UNIVERSAL-require-0.18-iwKUjp/blib/arch/auto/UNIVERSAL
/root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/UNIVERSAL
/root/perl5/lib/perl5/UNIVERSAL

Thoughts, suggestions, recommendations ?

Thank you!

-Drew

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p60989.html

It appears mine is located here:


/root/perl5/lib/perl5/UNIVERSAL
/root/perl5/lib/perl5/UNIVERSAL/require.pm


Hmm - root’s home it’s not a common location for perl modules (-:

This is the problem - try to reinstall the UNIVERSAL

perl  -MCPAN   -e 'install "UNIVERSAL"'

regards
Danny

smime.p7s (2.23 KB)

Please check this Link:
Perl Modules installed in the wrong place
Perl Modules installed in the wrong place - CentOS

Maybe it’s your issue …

regards
Danny

smime.p7s (2.23 KB)

Yea, being that this is just a sandbox/dev system for RT/RT-IR it’s a bit
abnormal in comparison to a production class system…I can’t seem to catch
any luck here, getting quite the dismal response after executing the command
you suggested:

perl -MCPAN -e ‘install “UNIVERSAL”’

Reading ‘/root/.cpan/Metadata’
Database was generated on Mon, 23 Nov 2015 08:53:40 GMT
Running install for module ‘UNIVERSAL’
The most recent version “1.12” of the module “UNIVERSAL”
is part of the perl-5.22.0 distribution. To install that, you need to run
force install UNIVERSAL --or–
install R/RJ/RJBS/perl-5.22.0.tar.bz2
Running make test
Can’t test without successful make
Running make install
Make had returned bad status, install seems impossible #
lol…

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p60991.html

I’m not an Apache/httpd configuration
expert especially when modules are involved so I would GREATLY
appreciate
any and all help:


Can’t locate UNIVERSAL/require.pm in @INC (@INC contains:
/opt/rt4/sbin/…/local/lib /opt/rt4/sbin/…/lib /usr/local/lib64/perl5
/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/opt/rt4/sbin/…/lib/RT.pm line 60.
BEGIN failed–compilation aborted at /opt/rt4/sbin/…/lib/RT.pm line
60.
Compilation failed in require at /opt/rt4/sbin/rt-server.fcgi line 86.


As others have noted, using CPAN on CentOS 7 can be sketchy. It’s very
easy to be drawn into installing modules locally under /root/perl5/
where normal Perl programs won’t ever see them or clobbering files owned
by yum-installed packages. Care is needed…

For the immediate issue, you can resolve the problem by enabling the
EPEL repository for yum (see Extra Packages for Enterprise Linux (EPEL) :: Fedora Docs) and
installing the needed module:

yum install perl-UNIVERSAL-require

HOWEVER, since you have had stuff installed (presumably by CPAN and a
local::lib configuration) in a private place only for use by root with
suitable variables in the environment, you probably want to fix that[1]
and install everything possible for RT via yum, filling in whatever is
missing with CPAN NOT using a private module tree. I recently did this
for a RT4.4rc1 install on CentOS 7 by massaging the output of “make
testdeps” into a whopping huge yum command[2]:

make testdeps  |fgrep MISSING |egrep -v ' (owner|group) |>=5\.10\.'|awk 

‘{print $1}’|sort -u |sed ‘s/::/-/g’|sed ‘s/^/perl-/’| xargs -rt yum
list|grep ‘^perl-’ |awk ‘{print $1}’ |xargs -rt yum install -y

Following that (go get a cup of coffee, it will be a while…) you MAY
still have unmet dependencies, since RT demands various modules and
versions of modules that the EPEL and “base” repos don’t have. Those can
be installed from CPAN (or ‘make fixdeps’) after “yum erase”-ing any
too-old versions that were installed with yum.

FOOTNOTES:

[1] Wipe the private tree for root:

	rm -rf /root/perl5/

 Remove any lines from /root/.bashrc or /root/.bash_profile like 

these
which set up the relevant environment variables for local::lib :

	export PERL_LOCAL_LIB_ROOT="$PERL_LOCAL_LIB_ROOT:/root/perl5";
	export PERL_MB_OPT="--install_base /root/perl5";
	export PERL_MM_OPT="INSTALL_BASE=/root/perl5";
	export PERL5LIB="/root/perl5/lib/perl5:$PERL5LIB";
	export PATH="/root/perl5/bin:$PATH";

[2] ARE YOU CRAZY? Don’t just run that because I said so! Be sure you
understand what it DOES! Test it by breaking the pipeline before that
last xargs and see if what it’s going to install seems sane FOR YOUR
SYSTEM.

This was sort of the problem…basically I installed many Perl modules via
cpanm and apparently that’s a problem in certain circumstances which I’m not
totally sure about at this time. To fix this error I installed the CentOS
@epel repo version of a few packages:

perl-UNIVERSAL-require.noarch…0.13-12.el7…@epel
perl-Log-Dispatch.noarch… 2.41-1.el7.1…@epel

These are from @epel (as shown above) but now I’m stuck with an error based
on a perl module that does not have a package published in the epel repo:

Can’t locate /Symbol/Global/Name.pm/ in @INC (@INC contains:
/root/perl5/lib/perl5/ /opt/rt4/sbin/…/local/lib /opt/rt4/sbin/…/lib
/usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/opt/rt4/sbin/…/lib/RT/Config.pm line 57.
BEGIN failed–compilation aborted at /opt/rt4/sbin/…/lib/RT/Config.pm line
57.
Compilation failed in require at /opt/rt4/sbin/…/lib/RT.pm line 159.

After getting this I searched the repo’s for this package, I found and
installed this one:

perl-Symbol-Util.noarch 0.0203-4.el7 @epel

But this did nothing for me and doesn’t seem to be what RT/Perl/httpd
wants…So…It looks like I will have to build a package for the module
“Symbol::Global::Name” that I can install with yum…I tried the hacked
up solution suggested in the blog post you referenced, the OP said in the
quote below that this fixed it for him but I had no luck, it’s a hacked in
solution anyhow…

“I fixed the issue by adding the following line in ther perl script before
any ‘use’ command.”

use lib “/root/perl5/lib/perl5/” ;

Looks like your suggestion of installing a separate instance of perl that’s
dedicated to RT is making more and more sense the deep down the rabbit hole
that I travel…I’m afraid that if I install a new separate instance of
perl it will break even more things since I suppose I probably have to
recompile RT after doing so and I don’t want to lose the configuration state
of RT/RT-IR…

I just saw Bill Cole’s reply and it is EXCELLENT!!! I’m still re-reading to
comprehend but Bill if you get this reply I was drafting prior to seeing
your response so if you need to update your great info based on what I’ve
said here I’d be very grateful!!

-Drew

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p60997.html

Hi Bill/All,

I did as you suggested (wiping the private tree for root) then I tested out
your command by removing the last xargs statement and running it, the output
was null…got nothing back…this is what I ran:

make testdeps |fgrep MISSING |egrep -v ’ (owner|group) |>=5.10.'|awk
‘{print $1}’|sort -u |sed ‘s/::/-/g’|sed ‘s/^/perl-/’| xargs -rt yum
list|grep ‘^perl-’ |awk ‘{print $1}’

It spit out a sizable list of packages so I then completed the full command
by adding the last xargs statement back…it installed around 41 packages
but upon re-running make testdeps afterwards there are still a LOT of
missing dependencies…make fixdeps is doing its lame looping thing again
afterwards so I halted that…here is a list of everything I’m missing after
running your full command, looks like I’ll have to install all of these
manually with CPAN/cpanm then? Which is fine since I did it before but just
thought there may be less than this?.. Also I noticed the error at the
bottom…is that normal? “make: *** [testdeps] Error 1” ?

make testdeps |fgrep MISSING

Text::Password::Pronounceable ...MISSING
Tree::Simple >= 1.04 ...MISSING
HTML::Mason >= 1.43 ...MISSING
Symbol::Global::Name >= 0.04 ...MISSING
DateTime::Format::Natural >= 0.67 ...MISSING
Text::Wrapper ...MISSING
Regexp::Common::net::CIDR ...MISSING
HTML::Mason::PSGIHandler >= 0.52 ...MISSING
MIME::Entity >= 5.504 ...MISSING
Locale::Maketext::Lexicon >= 0.32 ...MISSING
Role::Basic >= 0.12 ...MISSING
HTML::RewriteAttributes >= 0.05 ...MISSING
Locale::Maketext::Fuzzy >= 0.11 ...MISSING
Email::Address::List >= 0.02 ...MISSING
Plack::Handler::Starlet ...MISSING
PerlIO::eol ...MISSING
GnuPG::Interface ...MISSING
Data::ICal ...MISSING
Crypt::X509 ...MISSING
Convert::Color ...MISSING

SOME DEPENDENCIES WERE MISSING.
Data::ICal …MISSING
Crypt::X509 …MISSING
Convert::Color …MISSING
PerlIO::eol …MISSING
GnuPG::Interface …MISSING
HTML::Mason >= 1.43 …MISSING
MIME::Entity >= 5.504 …MISSING
HTML::Mason::PSGIHandler >= 0.52 …MISSING
Symbol::Global::Name >= 0.04 …MISSING
DateTime::Format::Natural >= 0.67 …MISSING
Locale::Maketext::Lexicon >= 0.32 …MISSING
Role::Basic >= 0.12 …MISSING
Locale::Maketext::Fuzzy >= 0.11 …MISSING
Email::Address::List >= 0.02 …MISSING
Text::Password::Pronounceable …MISSING
Text::Wrapper …MISSING
Regexp::Common::net::CIDR …MISSING
HTML::RewriteAttributes >= 0.05 …MISSING
Tree::Simple >= 1.04 …MISSING
Plack::Handler::Starlet …MISSING
make: *** [testdeps] Error 1

Thank you!

-Drew

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p60999.html

Sorry correction to my last reply it came back null only before I wiped the
private tree for root…my mistake I meant to remove that part of my last
reply…the output shown in my last reply of make testdeps is the output
after I had wiped the private tree of root and ran your full command.
Apologies for any confusion.

View this message in context: http://requesttracker.8502.n7.nabble.com/Trouble-Error-with-Web-deployment-CentOS-httpd-mod-fcgid-tp60979p61000.html

Sorry correction to my last reply it came back null only before I
wiped the
private tree for root…my mistake I meant to remove that part of my
last
reply…the output shown in my last reply of make testdeps is the
output
after I had wiped the private tree of root and ran your full command.
Apologies for any confusion.

I’m guessing those environment variables are still set in your current
shell, which will mess up fixdeps/testdeps as well as CPAN. SO:

unset PERL_LOCAL_LIB_ROOT PERL_MB_OPT PERL_MM_OPT PERL5LIB

That should make anything you do stop looking in /root/perl5/

I’m unsure what the issue is with fixdeps…

This was sort of the problem…basically I installed many Perl
modules via
cpanm and apparently that’s a problem in certain circumstances which
I’m not
totally sure about at this time. To fix this error I installed the
CentOS
@epel repo version of a few packages:

perl-UNIVERSAL-require.noarch…0.13-12.el7…@epel
perl-Log-Dispatch.noarch… 2.41-1.el7.1…@epel

These are from @epel (as shown above) but now I’m stuck with an error
based
on a perl module that does not have a package published in the epel
repo:


Can’t locate /Symbol/Global/Name.pm/ in @INC (@INC contains:
/root/perl5/lib/perl5/ /opt/rt4/sbin/…/local/lib /opt/rt4/sbin/…/lib
/usr/local/lib64/perl5 /usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at
/opt/rt4/sbin/…/lib/RT/Config.pm line 57.
BEGIN failed–compilation aborted at /opt/rt4/sbin/…/lib/RT/Config.pm
line
57.
Compilation failed in require at /opt/rt4/sbin/…/lib/RT.pm line 159.


After getting this I searched the repo’s for this package, I found and
installed this one:

perl-Symbol-Util.noarch 0.0203-4.el7 @epel

But this did nothing for me and doesn’t seem to be what RT/Perl/httpd
wants…

Right. If there was a package for the EL7 distro family that gave you
just the Symbol::Global::Name module, its base name would be
perl-Symbol-Global-Name, and if that module were part of a larger
package it would probably be perl-Symbol-Global or perl-Symbol.

BUT: the way to find a specific-file dependency with yum is the
‘provides’ command:

[root@requesttracker ~]# yum provides */Symbol/Global/Name.pm
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.tripadvisor.com
 * epel: mirror.cogentco.com
 * extras: centos.firehosted.com
 * remi: remi.check-update.co.uk
 * remi-safe: remi.check-update.co.uk
 * updates: bay.uchicago.edu
No matches found

Oh well… that is why I used CPAN on that machine (via ‘make fixdeps’)
to install Symbol::Global::Name.

So…It looks like I will have to build a package for the module
“Symbol::Global::Name” that I can install with yum…I tried the
hacked
up solution suggested in the blog post you referenced, the OP said in
the
quote below that this fixed it for him but I had no luck, it’s a
hacked in
solution anyhow…

“I fixed the issue by adding the following line in ther perl script
before
any ‘use’ command.”

use lib “/root/perl5/lib/perl5/” ;

Smart choice. That’s not maintainable for RT. Also: won’t work unless
you disable or reconfigure SELinux and open up /root/perl5/ to the
apache user, which would be generally unwise things to do.

Looks like your suggestion of installing a separate instance of perl
that’s
dedicated to RT is making more and more sense the deep down the rabbit
hole
that I travel…I’m afraid that if I install a new separate instance
of
perl it will break even more things since I suppose I probably have to
recompile RT after doing so and I don’t want to lose the configuration
state
of RT/RT-IR…

I just saw Bill Cole’s reply and it is EXCELLENT!!! I’m still
re-reading to
comprehend but Bill if you get this reply I was drafting prior to
seeing
your response so if you need to update your great info based on what
I’ve
said here I’d be very grateful!!

Well, in looking at it again I think maybe I should have also noted that
those PERL* variables set in either .bashrc or .bash_profile will stay
with any shell launched with them set and its offspring, so you will
want to log out and back in after fixing the files or:

unset PERL_LOCAL_LIB_ROOT PERL_MB_OPT PERL_MM_OPT PERL5LIB

BEFORE trying to install anything with CPAN or RT’s make fixdeps.

And a bit of background: if you install a Perl module using yum from the
Base or EPEL repos, it may install pieces under any of the 6 roots shown
by ‘perl -V’ depending on the mood of some junior RedHat intern on a
random Tuesday in 1997. Mostly they SHOULD stay out of the /usr/local
ones and only get 64-bit-specific things in the lib64 ones. There’s also
supposedly “logic” determining what does and doesn’t go in vendor_perl
but it’s not obvious. If you install using CPAN in a pristine (no PERL*
variables) environment, you should get a bit better determinism, since
the vendor_perl roots should be avoided entirely and /usr/local/* should
be the only place anything lands. However, if you let CPAN upgrade
modules already installed as part of the canonical Perl base (i.e. not
“local” or “vendor_perl”) it might clobber files that the RPM/yum
subsystem believes belong to particular packages and expect have
particular checksums. Hilarity (or something akin to it…) shall ensue
when you try to upgrade those with yum. On the other hand, it SHOULD
just install under /usr/local and override the system version at
runtime. I don’t suggest relying on that.

SO: you don’t actually need to build a special Perl for RT. but the
alternative is to be careful about how you install Perl modules. Check
yum first for dependencies, and install from the Base or EPEL repos if
they have what you need in the correct version. If you need a module not
in those repos, use CPAN. If you need a different version that what yum
has already installed, remove it first before installing from CPAN. Note
that RT’s ‘make fixdeps’ always installs from CPAN. Note that you could
also ONLY use CPAN to maintain a unified Perl world, but that is a
hassle: worse than either a blended yum+CPAN world or 2 distinct worlds.